好吧,我正在一个显示第三方开发的类(class)的网站上工作,所以我根本无法更改实际弹出窗口中的任何内容,并且重定向调用必须来自父窗口。父级、子级和重定向位置都位于同一服务器上,因此这不应该是问题。这是我想要工作的代码。
var new_window = window.open('courseAddress.php')
new_window.onbeforeunload = function(){
popupClosing();
}
function popupClosing(){
window.location ="redirectLocation.php";
alert('The popup has closed!');
return false;
};
警报正在触发,但父窗口似乎没有刷新。如果我将 window.location ="redirectLocation.php";
放在 .onbeforeunload 之外,刷新效果就很好。
我确信我错过了一些简单的事情。先感谢您。我已经在这里阅读了类似的其他问题,但是他们能够从 child 那里使用 window.opener.loaction
,不幸的是我无法做到这一点。
我找到了一种有效的方法,但是它真的很糟糕。我只是让父窗口不断检查子窗口是否存在。这是它的 fiddle :http://jsfiddle.net/ex9e7uLq/
感谢 Eclecticist 在这一问题上与我的坚持!
最佳答案
我已经在 Chrome、Firefox 和 IE 上对此进行了测试,没有出现任何问题。这是一个example JSBin .
var win = window.open("http://www.google.com");
var winClosed = setInterval(function () {
if (win.closed) {
clearInterval(winClosed);
location.assign("http://www.bing.com/");
}
}, 250);
根据您的问题,我知道您想将事件处理程序附加到子窗口。然而,在测试不同的方法来做到这一点时,我遇到了很多问题。通常,Internet Explorer 无法从父窗口在子窗口中注册任何事件。 Firefox 和 Chrome 的行为就像子窗口启动后立即触发事件(无论类型如何)。
我读过其他SO问题,其答案显然可以通过做你想做的事情来实现,但我个人无法让它们发挥作用。祝你好运:)
关于javascript - 当子窗口关闭时重定向父窗口,而不向子窗口添加代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25391957/