2010-08-12 59 views
4

我有这个jQuery代码;窗口卸载前显示两个对话框

$(function() { 
    $(window).unbind("beforeunload"); 
    $(window).bind("beforeunload", function() { 
     return confirm("Really?"); 
    }); 
}); 

当我关闭窗口,我得到了确认请求,如果我打“取消”我获得第二次确认它说;

“您确定要从此页面导航吗?”

“假”

“按确定继续,或取消留在当前页面。”

为什么我会得到第二个对话框,并且有办法将其删除?

编辑

已经改变的代码是;

$(function() { 
    $(window).bind("beforeunload", function() { 
     return "slappy?"; 
    }); 
}); 

但是确认信息没有出现。事件正在发射,因为我可以在那里发出警报并看到警报。

编辑2

是否更改了代码,这一点;

window.onbeforeunload = function() { 
    var txtBlog = $('#tbxNote').val(); 
    if (txtBlog != "") 
     return "You have not saved your blog entry."; 
} 

它的工作原理,但我的消息上下有其他文字;

“您确定要从此页面导航吗?”

“您尚未保存您的博客条目。” “

”按OK继续,或取消保留在当前页面上。“

+0

这发生在IE8上。没有检查FF – griegs 2010-08-12 03:25:11

+0

您可以通过执行'$(window).unbind(“beforeunload”),bind(“beforeunload”),...'来缩短它,但这完全取决于您。 – 2010-08-12 03:30:41

+0

重新编辑2:正如下面提到的Cory,不可能更改或删除额外的文本 - 否则恶意网站可能会通过显示欺骗性消息来混淆人。 – 2010-08-12 04:49:41

回答

5

只需使用:

return "Really?"; 

的beforeunload事件需要你返回一个包含“你确定”对话框中要显示标准消息的字符串。

+2

而且如果您不知道并且想知道...则无法覆盖内置的“您确定...”和“按确定...”消息。 – 2010-08-12 03:28:53

+0

确认没有开火; (function)(){ });( });函数(){ });函数(){ });函数(){ }); 有什么想法? – griegs 2010-08-12 03:33:35

+0

你的意思是说你已经从两个对话框变成了一个对话框或零对话框? – 2010-08-12 03:38:24