在Chrome和Safari浏览器中,onunload事件无法正常工作。

12

我有一个父页面和一个子页面。在子页面的标签中,我有以下代码。

<body onunload="window.g_autoclosed=true;if(window.opener&&window.opener.NavModelessClose){window.opener.NavModelessClose(window,false);}"> 

当我在父页面上单击按钮时,子页面应该关闭并调用onunload事件。

在IE和FF中,unload事件被正确地触发,但在Chrome和Safari中未被触发。

请帮助我。


可能是重复的问题,与https://dev59.com/D0fRa4cB1Zd3GeqP8mWY相似。 - user753676
4个回答

12

现代的 WebKit 浏览器不一定会在页面隐藏的时候触发 unload 事件。这是为了允许改进缓存。

您可以考虑将 unload 的使用替换为 pagehide 事件。

详细讨论请参见此博客文章


7

虽然卸载功能在现代浏览器中可以使用,但是例如你不能弹出一个警告框。 详情请见: http://bugs.jquery.com/ticket/10509

此外,如果你想在卸载时使用$.get或$.post,最好使用带有async=false的$.ajax。

示例:

$(window).unload(function() {
            $.ajax({
              url: '/some_url.htm',
              async: false
            });
    });

5
也许可以尝试使用 onbeforeunload 事件?

1

是的,将 onbeforeunload 附加到 window(或子页面的内部窗口)即可实现此功能。


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