“你确定要离开此页面吗?”在浏览器中是如何生成的?

5
我有一个页面,在该页面中我打开了一个"模态窗口"。实际上,它只是一个带有IFRAME的DIV,我在其中加载另一个页面。当我想要刷新页面时,浏览器弹出一个窗口,询问"您确定要离开此页吗?重新加载此页将导致模态窗口消失。按OK继续,或按Cancel留在当前页面。"
这个消息是如何生成的?浏览器如何知道我有一个模态窗口,因为我没有使用JavaScript中的任何window.open()调用?是否有任何方法可以禁用浏览器的此行为?

1
告诉我你正在开发哪个网站,这样我就可以避开它。 - finnw
3
嗯,stackoverflow会这样做!而且,这是一个避免在页面上丢失你已经写的更改的好方法。 - Peter
在浏览器设置中禁用JavaScript。 - Suncat2000
3个回答

3

在加载的IFRAME页面源代码中,可能是body.onunload

由于模态窗口本质上是一个IFRAME,因此当您关闭(或刷新)主窗口时,浏览器知道它正在终止该IFRAME,因此IFRAME中的任何body.onunload都会触发。


没错。实际上我正在使用Wicket框架,我在他们的源代码中搜索,看看我找到了什么:window.onbeforeunload = function() {
return "重新加载此页面会导致模态窗口消失。"; } 幸运的是,这可以很容易地禁用。谢谢!
- Gabriel

1
如果您有一个处理 onbeforeunload 的函数,Firefox 会自动生成消息。
您可以通过在处理程序末尾返回 null 来禁用它。

0

这可能是由于某些脚本修改了所有外部链接以显示此模态窗口,然后根据您与模态窗口的交互返回 truefalse

如果您想取消该行为,可以删除所有外部链接的点击事件。


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