是的,我意识到这是一个糟糕的用户界面和糟糕的可访问性明智,但由于合同工作(我最初没有达成一致意见并坚持使用),我不得不寻找选项。/强>
我知道您可以将事件处理程序分配给onbeforeunload
,例如:
window.onbeforeunload = function() {
return 'You have unsaved changes!';
}
这会导致操作系统/浏览器生成的对话框无法自定义。它会要求您取消您的请求或继续。
到目前为止,似乎我可以显示任何自定义的唯一方法是在该事件处理程序中插入window.open
:
window.onbeforeunload = function() {
var x = window.open('modal.html');
}
这很可能会被任何现代浏览器阻止为“弹出窗口”。我必须在对话框中显示一个全新的页面,但这似乎是满足需求的唯一方法。
这几乎是我唯一的选择吗?除了强行告诉客户之外,不建议这样做吗?
唯一的另一个选择是依靠用户点击“取消请求”,然后插入对话框。
我已经已经查看的问题:
答案 0 :(得分:1)
根据您已经查看过的问题,除了传入浏览器显示的字符串消息之外,您无法自定义该对话框。
答案 1 :(得分:1)
我刚刚去了window.open
路线onbeforeunload。
答案 2 :(得分:-1)
你可以使用你在onbeforeunload时间而不是window.open中显示的隐藏Flash .swf