javascript - 当子窗口关闭时重定向父窗口,而不向子窗口添加代码

标签 javascript

好吧,我正在一个显示第三方开发的类(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/

相关文章:

javascript - RxJs:http.get 正在获取一个数组,但我希望订阅者获取单个元素

javascript - 在每个第二个元素之后添加元素

php - 如何在服务器端(php)接收使用 XMLHttpRequest 从浏览器发送的数据?

javascript - 通过推荐人发送位置哈希

Javascript 解析器生成器

javascript - Gridster 添加自定义宽度、高度、左侧和顶部

javascript - DataTables 表不显示

javascript - 使用 rails 和 turbolinks 运行 facebook pixel

javascript - 如何在 node.js 中实现 readUInt16BE 函数

java - 如何在 HtmlUnit 中执行 JavaScript 而不运行页面脚本