这是我的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代码?
答案 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!';
};