0

当用户离开我网站的一个页面时,应该有一条警告消息,让用户可以选择留在页面上:

“您确定要关闭此页面吗?”

下一页是内部页面还是外部页面都没有关系。

我认为这可以通过 onUnload 事件处理程序来完成,不是吗?

<body onunload="confirmClose()">

然后,confirmClose() 函数必须显示一个带有两个按钮的消息框,以便用户可以在“真正离开”或“留下”之间进行选择。

function confirmClose() {
    return confirm('Really leave this page?')
}

但是这个功能不能停止卸载,对吧?

你有解决我的问题的方法吗?提前致谢!

4

3 回答 3

5

您只能提供文本。浏览器处理对话框(出于安全原因)。这是您可以使用的一些代码:

window.onbeforeunload = function (e) {
    var e = e || window.event;
    var msg = 'Are you sure you want to leave?';

    // For IE and Firefox
    if (e) {
        e.returnValue = msg;
    }

    // For Safari / chrome
    return msg;
}

不过,在不同的浏览器上试试这个。您会注意到消息的构造应根据不同浏览器的对话框措辞而有所不同。

这是我使用的:

if (IsChrome) {
    return 'You were in the middle of editing. You will lose your changes if you leave this page';
} else {
    return 'You were in the middle of editing. Press OK to leave this page (you will lose your changes).';
}
于 2009-12-28T17:59:38.653 回答
4

您可以添加一个onbeforeunload事件。请注意,它只能返回一个文本字符串以包含在调用事件时浏览器将显示的对话框中。除此之外,您无法调整对话框,也无法confirm像您尝试那样触发自己的对话框。

我会注意到这是非常非常烦人的行为,除非在一些特定情况下。除非您通过此操作使我免于严重的数据丢失,否则请不要这样做。

于 2009-12-28T17:52:44.170 回答
1

浏览器负责显示确认窗口。您需要返回带有您要询问的消息的字符串。此外,您可能希望onbeforeunload用于跨浏览器兼容性。

于 2009-12-28T17:51:59.333 回答