今天在最新版本chrome瀏覽器中測試在什么情況下會觸發onpagehide、onunload事件(點擊一個鏈接,刷新頁面,提交表單,關閉瀏覽器等)。測試代碼粘貼如下:
<!DOCTYPE html>
<html lang='en'>
<head>
<title>測試</title>
<meta charset='utf-8'>
<script type="text/javascript">
function onpageshowfunc() {
alert("onpageshow()");
}
function onloadfunc() {
alert("onloadfunc()");
}
function onunloadfunc() {
console.log("2222222222");
alert("onunloadfunc()");
}
function onpagehidefunc() {
console.log("111111111");
alert("onpagehide()");
}
</script>
</head>
<body onunload="onunloadfunc()" onpagehide="onpagehidefunc()" onpageshow="onpageshowfunc()" onload="onloadfunc()" >
<a href="http://www.baidu.com">test link baidu</a>
</body>
</html>
結果意外發現:
1、onpagehide onunload事件是在銷毀頁面對象后觸發的,onbeforeunload是在銷毀頁面對象前觸發的 ,此時alert()方法已經被鎖定銷毀了,因而一直不能彈出提示框了,后來斷點提示一個錯誤輸出“Blocked alert('onpagehide()') during pagehide.”。“Blocked alert('onunloadfunc()') during unload.”
2、onpagehide比onunload先觸發。
3、onload比onpageshow先觸發。
以上僅自己結論,歡迎指正。