如果用戶關閉瀏覽器選項卡,我將嘗試執行一些操作。下面是我的代碼。
function myfun(){
console.log('action performed')
}
window.onbeforeunload = function(e){
e.preventDefault()
myfun()
return 'Are you sure you want to leave?';
};
我的代碼有效,但我面臨的問題是,如果用戶單擊取消按鈕沒有關閉選項卡,我的功能仍然運行。有沒有辦法記錄用戶點擊了取消按鈕?
我試圖修改“myfun”功能如下,但沒有幫助。
function myfun(){
if(window.close()){
console.log('action perfomed')
}
}
uj5u.com熱心網友回復:
您可以使用卸載事件。由于大多數瀏覽器會在卸載頁面后洗掉頁面日志,因此我將其替換為 localStorage 示例。
function myfun(){
localStorage.setItem('myCat', 'Tom');
}
window.onbeforeunload = function(e){
e.preventDefault()
return 'Are you sure you want to leave?';
};
window.onunload = myfun;
if(localStorage.getItem("myCat")!=null)
alert("Last time this page was closed the unload event was called!");
localStorage.setItem('myCat', null);
Unload 事件不會總是被觸發,正如Mozilla 所說:
特別是在移動設備上, unload 事件不能可靠地觸發。例如,在以下場景中根本不會觸發卸載事件:
- 移動用戶訪問您的頁面。
- 然后用戶切換到不同的應用程式。
- 稍后,用戶從應用程式管理器關閉瀏覽器。
最好使用visibilitychange事件或pagehide事件,即使它們沒有完全替代unload 事件。
此外,卸載事件與后退/前進快取 (bfcache) 不兼容,因為許多使用此事件的頁面都假定該頁面在事件觸發后將不再存在。為了解決這個問題,一些瀏覽器(例如 Firefox)如果有卸載偵聽器,則不會將頁面放置在 bfcache 中,這對性能不利。其他的,比如 Chrome,在用戶離開時不會觸發卸載。
用于表示用戶會話結束的最佳事件是visibilitychange 事件。在不支持visibilitychange 的瀏覽器中,次佳選擇是pagehide 事件,它也不能可靠地觸發,但與bfcache 兼容。
如果您專門嘗試檢測頁面卸載事件,最好偵聽 pagehide 事件。
uj5u.com熱心網友回復:
我認為無法檢查用戶是否按下了取消按鈕。以其他方式,您可以按照以下代碼使用 onunload 事件。
window.onunload = function(e) {
console.log("unload event");
};
如果用戶點擊重新加載,那么這將被呼叫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392542.html
標籤:javascript dom 事件处理 卸载前
上一篇:谷歌地圖方向api:python與javascript
下一篇:js:如何簡化html字串
