你的代碼問題:
的功能將在您撥打refresh
時調用,因爲on refresh the page is unloaded and then reloaded
。
在您的解決方案
,你也應該注意,你是不是分配function
到window.onbeforeunload
,但是當你寫
window.onbeforeunload = confirmWinClose();
這可能也執行該功能你分配return value of the function
(基於你在哪裏把它在JavaScript)每當分配完成。對於例如
function confirmWinClose() {
var confirmClose = confirm('Close?');
return confirmClose;
}
window.onbeforeunload = confirmWinClose();
上述代碼將執行confirmWinClose
功能每當這個js是加載。
(如您已定義調用後的功能,所以不會對負載運行,但是你應該記住這不是你的情況下)
SOLUTION:
以下解決方案正在爲close
也
,而不是你的解決方案,我想這
JS:
window.onbeforeunload = function() {
var confirmClose = confirm('Close?');
return confirmClose;
}
或
window.onbeforeunload = confirmWinClose; //note the absence of calling parantheses
function confirmWinClose() {
var confirmClose = confirm('Close?');
return confirmClose;
}
此按預期工作。
也請注意,您應該明確地從onbeforeunload
return
。
即使你調用一個函數,你應該做的
<script>
window.onbeforeunload = function(e) {
callSomeFunction();
return null;
};
</script>
只是擔心可能設置window.onbeforeunload = confirmWinClose();這造成的問題,而不是設置它window.onbeforeunload = confirmWinClose; – Neha
好的,這可以防止頁面刷新時執行代碼,但它仍然不會在頁面關閉時執行! –
你*不能*在'onbeforeunload'內使用'confirm'。這不是它的工作原理。你需要'onbeforeunload'返回一個字符串。該字符串將由瀏覽器在其自己的確認框中顯示。 'onbeforeunload'與「正常」事件不同。 –