窗口beforeunload显示两个对话框

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.";
}

它可以正常工作,但是我的消息上下还有其他文本;

"您确定要离开此页面吗?"

"您尚未保存您的博客文章。"

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


这是在IE8上发生的。还没有检查FF。 - griegs
你可以通过这样做来缩短代码:$(window).unbind("beforeunload").bind("beforeunload"),... 但这完全取决于你。 - Cᴏʀʏ
重新编辑2:正如Cory在下面提到的,无法更改或删除该额外文本 - 否则恶意网站可能会通过显示欺骗性消息来混淆人们。 - Saxon Druce
1个回答

5

只需使用:

return "Really?"; 

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


2
如果你不知道并且想知道... 没有可能覆盖内置的“你确定要...”和“按OK键...”消息。 - Cᴏʀʏ
确认未触发;$(function(){ $(window)。bind(“beforeunload”,function(){ 返回(“slappy?”); }); }); 有什么想法吗? - griegs
你是指从两个对话框变成一个对话框,还是没有对话框了? - Saxon Druce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接