繁体   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