用户退出浏览器时显示自定义对话框?

时间:2010-07-15 15:08:08

标签: javascript dialog onbeforeunload

是的,我意识到这是一个糟糕的用户界面和糟糕的可访问性明智,但由于合同工作(我最初没有达成一致意见并坚持使用),我不得不寻找选项。

我知道您可以将事件处理程序分配给onbeforeunload,例如:

window.onbeforeunload = function() {
    return 'You have unsaved changes!';
}

这会导致操作系统/浏览器生成的对话框无法自定义。它会要求您取消您的请求或继续。

到目前为止,似乎我可以显示任何自定义的唯一方法是在该事件处理程序中插入window.open

window.onbeforeunload = function() {
     var x = window.open('modal.html');
}

这很可能会被任何现代浏览器阻止为“弹出窗口”。我必须在对话框中显示一个全新的页面,但这似乎是满足需求的唯一方法。

这几乎是我唯一的选择吗?除了强行告诉客户之外,不建议这样做吗?

唯一的另一个选择是依靠用户点击“取消请求”,然后插入对话框。

我已经已经查看的问题:

3 个答案:

答案 0 :(得分:1)

根据您已经查看过的问题,除了传入浏览器显示的字符串消息之外,您无法自定义该对话框。

window.onbeforeunload - MDC

答案 1 :(得分:1)

我刚刚去了window.open路线onbeforeunload。

答案 2 :(得分:-1)

你可以使用你在onbeforeunload时间而不是window.open中显示的隐藏Flash .swf