好吧,我正在开发一个显示第三方开发课程的网站,所以我根本无法在实际的弹出窗口中更改任何内容,重定向调用必须来自父窗口。 parent,child和redirectLocation都在同一台服务器上,因此不应该是一个问题。这是我想要的代码。
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之外,那么刷新就可以了。
我确信我错过了一些简单的事情。先感谢您。我在这里已经阅读了这样的另一个问题,但他们能够使用孩子的window.opener.loaction
,遗憾的是我无法做到。
我找到了一种有效的方法,buuuuuuuut它真的很讨厌。我只是让父窗口继续检查子窗口是否在那里。这是它的小提琴:http://jsfiddle.net/ex9e7uLq/
感谢折衷主义者也坚持使用这个!
答案 0 :(得分:1)
我已经在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问题的答案显然可以通过做你想做的事情,但个人无法让他们工作。祝你好运:)
答案 1 :(得分:0)
试试这个:
var new_window = window.open('courseAddress.php');
var intr = setInterval(function(){
console.log(new_window.closed);
if(new_window.closed){
clearInterval(intr);
window.location='http://www.google.com';
}
}, 200);