我正在编写一个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事件?
答案 0 :(得分:0)
我应该指定我要打开的窗口不是跨域的;它位于同一个域中(虽然不在上面的例子中)。
无论如何,我找到了答案。显然,Ext JS 5的Ext.get(me.chatPopOutWindow).on('beforeunload', function() {...
不可靠。相反,请使用me.chatPopOutWindow.onbeforeunload = function() {...
,这是用于侦听beforeunload事件的JavaScript语法..