TRR*_*TRR 1 javascript javascript-events
我想unload在父窗口打开的子窗口上执行javascript .我尝试了下面的代码,它没有调用该函数.
childWindow = window.open(url, 'MyWindow', GetWindowOptions(1020, 600), true);
childWindow.onunload = function () { test(); };
Run Code Online (Sandbox Code Playgroud)
我写的测试功能是:
function test() {
alert(1);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用IE8浏览器.
替换attachEvent而不是onunloadsetter来添加事件.我在IE6 - 8中测试过它,它运行正常.确保您还使用addEventListenerIE9 +和其他浏览器:
var unloadFunc = function () { test(); };
if (childWindow) { // null if a pop-up blocker does not create the window
if (childWindow.addEventListener) {
childWindow.addEventListener('unload', unloadFunc, false);
} else {
childWindow.attachEvent('onunload', unloadFunc);
}
}
Run Code Online (Sandbox Code Playgroud)
显然,如果URL来自不同的域,这将不起作用.
如果要在关闭来自其他原点的窗口时执行函数,请使用setInterval或setTimeout轮询boolean属性的值childWindow.closed.窗户关闭时确实如此.
例如:
if (childWindow) { // null if a pop-up blocker does not create the window
setTimeout(function checkState() {
if (childWindow.closed) {
// onunload Logic here.
} else {
setTimeout(checkState, 250);
}
}, 250);
}
Run Code Online (Sandbox Code Playgroud)
注意:建议使用该beforeunload事件的其他答案.请记住,在规范允许实现忽视confirm,alert,prompt和showModalDialog这个事件中调用.
| 归档时间: |
|
| 查看次数: |
4919 次 |
| 最近记录: |