先引述一段jQuery 官方对于onunload的评述:
The unload
event is sent to the window
element when the user navigates away from the page. This could mean one of many things. The user could have clicked on a link to leave the page, or typed in a new URL in the address bar. The forward and back buttons will trigger the event. Closing the browser window will cause the event to be triggered. Even a page reload will first create an unload
event.
The exact handling of the unload
event has varied from version to version of browsers. For example, some versions of Firefox trigger the event when a link is followed, but not when the window is closed. In practical usage, behavior should be tested on all supported browsers, and contrasted with the proprietary beforeunload
event.
Any unload
event handler should be bound to the window
object:
1 2 3 | $( window ).unload(function() { alert( "Handler for .unload() called." ); }); |
After this code executes, the alert will be displayed whenever the browser leaves the current page. It is not possible to cancel the unload
event with .preventDefault()
. This event is available so that scripts can perform cleanup when the user leaves the page.
解决兼容性:
1 var myEvent = window.attachEvent || window.addEventListener;2 var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable3 4 myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox5 var confirmationMessage = 'Are you sure to leave the page?'; // a space6 (e || window.event).returnValue = confirmationMessage;7 return confirmationMessage;8 });