Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1749
  • Last Modified:

send a request before close window

I need to send a string to the server for verify the user logout while the user close the "browser window" in NS4+ or IE4+ (when they click the cross, not the button in the webpage).

here is my code:

<html>
<head><title>
</title>


<script language=Javascript>
function logout() {

var temp = new String("/servlet/MServlet?FID=808&pageid=5&SID=");
temp = temp + "<%= sc.getSessionID() %>" + "&LANGID=" + "<%= sc.getLanguageID() %>" + "&SEQID=" + "<%= sc.getSequenceID() %>";

if (confirm("Are you sure to logout ?")) {
      document.location.href = temp;
}
}

</script>

</head>

<body onUnload="return logout(this)">

asdffsadf

</body>
</html>

It works in IE4+ but not NS4+, I know it's hard to do it in NS4+. is there any way I can send the request logout string to the server when the user click the NS browser while close the window?
Any solution or answer I would appreciate.

thanks! :)

rider
0
StoRmRiD3r
Asked:
StoRmRiD3r
  • 2
  • 2
  • 2
1 Solution
 
CJ_SCommented:
Well, the main problem here is that you can't prevent the user from logging out. At least not in the onunload event. The program will always be shut down no matter what...IE has an exception there.
The best thing you could possible do is to have a seperate button which will handle this close event.
I don't know for what kind of page it is, if it is for the intranet this'd be the best solution. For the internet you might want to wait for another answer from (probably mplungjan) another expert here.

0
 
CJ_SCommented:
Or when the user doesn't want to log out that you open a new window with the same URL???
0
 
Michel PlungjanIT ExpertCommented:
It is not possible to detect the click on the cross unless you have your session open in a new window without location bar.

If so and assuming there are no links leading away from the page, try this:

Write a cookie with the userid and stuff.
Then use

<body onUnload="window.open('http://www.yourserver.com/servlet/MServlet?FID=808&pageid=5&SID=<%= sc.getSessionID() %>&LANGID=<%= sc.getLanguageID() %>&SEQID=<%= sc.getSequenceID() %>','newwin')">

and return a script with a <body onLoad="self.close()">

It is a good idea to have the url fully qualified since older Netscape 4s forget where they came from...

If you have links on the page leading to other pages where you need to stay logged on, you need more tests

Michel
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
Michel PlungjanIT ExpertCommented:
Sorry, forget the cookie if you send the complete url only if you do not want to have a long url write a cookie and use
<body onUnload="window.open('http://www.yourserver.com/servlet/MServlet','newwin')">

and have the servlet read the cookie


Michel
0
 
StoRmRiD3rAuthor Commented:
really thank you for your advices, CJ_S & Michel.

Michel,
the body onUnload then window.open is working on NS4+ & IE4+. thanks for your help.

CJ_S, I would give 20 pts for your comment. i will add a new question, the title is : "PTS for CJ_S".

thanks again, Expert. :)
0
 
StoRmRiD3rAuthor Commented:
Excellent! Expert. :)
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now