关闭选项卡之前的JavaScript警报

时间:2016-05-04 12:23:53

标签: javascript

这是我的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代码?

5 个答案:

答案 0 :(得分:3)

不幸的是,javascript中没有纯粹的“关闭”事件。 onunload & onbeforeunload 是你能做的最好的事情。

副作用是在导航和后退浏览器按钮上触发这些事件。您可以尝试使用(e.clientY< 0)条件来过滤页面上的导航。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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!';
}
    };

答案 3 :(得分:0)

如果您认为e.target很好,那就找出e.target

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

另外一件事是你可以将if isWorking变量设置为true,如果他们已经在表单中输入了东西,那么如果他们在表单中输入了东西,那么无论如何导航都可能对他们不利。

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

答案 4 :(得分:0)

为什么不尝试添加条件来检查用户是否正在离开域名,如果是,则提出警报

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!';
};  
相关问题