丢失对子窗口的引用

时间:2015-06-03 19:20:59

标签: javascript window.open extjs5

我正在编写一个Ext JS 5应用程序,似乎正在丢失对我正在打开的子窗口的引用。

以下为w3schools打开一个新窗口,作为示例。之后,当我关闭窗口时,beforeunload事件不会触发。

 this.chatPopOutWindow = window
                .open(
                    'http://www.w3schools.com',
                    'chatPopOutWindow',
                    'width=380,height=400,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=no,resizable=no');
            Ext.get(me.chatPopOutWindow).on('beforeunload', function() {
              .....more code

在这个带有错误网址的代码示例中(新窗口打开到404错误),当我关闭窗口时,beforeunload事件会触发:

this.chatPopOutWindow = window
                .open(
                    '/someBadURL',
                    'chatPopOutWindow',
                    'width=380,height=400,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,copyhistory=no,resizable=no');
            Ext.get(me.chatPopOutWindow).on('beforeunload', function() {
              .....more code

为什么在第一个场景中没有触发beforeunload事件?

1 个答案:

答案 0 :(得分:0)

我应该指定我要打开的窗口不是跨域的;它位于同一个域中(虽然不在上面的例子中)。

无论如何,我找到了答案。显然,Ext JS 5的Ext.get(me.chatPopOutWindow).on('beforeunload', function() {...不可靠。相反,请使用me.chatPopOutWindow.onbeforeunload = function() {...,这是用于侦听beforeunload事件的JavaScript语法..