This was an interesting question that came in from a reader:
I need to show a warning message on unload event of window. I'm using below code.The code he was using made use of the beforeunload window event. Now - let me state right away I'm hate sites that do something when I try to leave them. That being said - he was trying to prevent folks from losing work when closing a window or tab by mistake. At the same time though he didn't want his safety code to run on simple clicks (or form submits). Here's the method I came up with. It just supports ignoring links, not form submits, but I'll throw it out there for folks to tear apart.
Problem is its coming on all hyperlinks, submit buttons. and if i try to trap event object, its coming as NULL.
<html>
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(window).bind('click', function(event) {
if(event.target.href) $(window).unbind('beforeunload');
});
$(window).bind('beforeunload', function(event) {
return 'pls save ur work';
});
</script>
</head>
<body>
<a href="test2.cfm">reload</a>
</body>
</html>
Basically, I listen to both the click event and the beforeunload event. If a click happens (on a link), I unbind the beforeunload listener allowing the person to leave the page without getting the message. What do folks think? Ignoring the fact that it won't work on a form submit (but that's trivial enough to add), are there any other ways this can be improved?