簡體   English   中英

關閉選項卡之前的JavaScript警報

[英]JavaScript alert before closing the tab

這是我的JavaScript代碼:

window.onbeforeunload = function (e) {
        e = e || window.event;
        // For IE and Firefox prior to version 4
        if (e) {
            e.returnValue = 'Any unsaved work is going to loose!';
        }
        // For Safari
        return 'Any unsaved work is going to loose!';
    };  

當我嘗試關閉選項卡時,此代碼非常有效。 但問題是,即使我嘗試導航到我網站的另一個頁面,它也會提醒。

當且僅當用戶嘗試關閉選項卡時,可能只顯示警報的通用JS代碼是什么?

不幸的是,javascript中沒有純粹的“關閉”事件。 onunloadonbeforeunload是你能做的最好的事情。

副作用是在導航和后退瀏覽器按鈕上觸發這些事件。 您可以嘗試使用(e.clientY <0)條件來過濾頁面上的導航。

然后檢查window.location是否已更改。

window.onbeforeunload = function (e) {
   if (document.location.href.indexOf('?x=hostname') > -1) {
         e = e || window.event;
        // For IE and Firefox prior to version 4
        if (e) {
            e.returnValue = 'Any unsaved work is going to loose!';
        }
        // For Safari
        return 'Any unsaved work is going to loose!';
}
    };

如果您認為e.target很好,那就找出e.target

if (e.target != myATagsOrButtons){ ....插入你的代碼

另外一件事是你可以將if isWorking變量設置為true,如果他們已經在表單中輸入了東西,那么如果他們在表單中輸入了東西,那么無論如何導航都可能對他們不利。

<input type='text' onkeydown='isUpdating()'>然后檢查以確保更新。

為什么不嘗試添加一個條件來檢查用戶是否正在遠離域導航,如果是,則發出警報

window.onbeforeunload = function (e) {
    e = e || window.event;
    // For IE and Firefox prior to version 4
    if (e && window.location.indexOf("www.mysite.com") > -1) {

        e.returnValue = 'Any unsaved work is going to loose!';
    }
    // For Safari
    return 'Any unsaved work is going to loose!';
};  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM