将父窗口重定向为子窗口关闭,而不向子窗口添加代码

Redirect parent as child window closes, without adding code to child

本文关键字:窗口 添加 代码 重定向      更新时间:2023-09-26

好吧,我正在一个网站上工作,显示第三方开发的课程,所以我不能在实际弹出窗口中改变任何东西,重定向调用必须来自父窗口。父、子和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,不幸的是我无法做到。

我已经找到了一种有效的方法,但它真的很讨厌。我只是让父窗口不断检查子窗口是否在那里。下面是它的代码:http://jsfiddle.net/ex9e7uLq/

感谢折衷主义者在这个问题上也坚持支持我!

我已经在Chrome, Firefox和IE上测试过了,都没有问题。下面是一个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问题的答案,显然是通过做你想做的事情来工作的,但我个人无法让他们工作。祝你好运!

try this:

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);