Javascript 子窗口关闭时如何运行父窗口的功能?

Javascript 子窗口关闭时如何运行父窗口的功能?,javascript,Javascript,我以前问过这个问题,这个问题已经解决了一半,因为我发现Javascript有一些严格的安全性 我学到的内容:父窗口打开子窗口。子窗口重定向到另一个域并被重定向回。它试图在关闭自身时触发父窗口的功能 window.opener.startLoad(); 这会导致权限(安全)问题,无法正常工作 (一半)新问题:如何获取窗口以打开子窗口,以及在关闭时在父窗口中运行函数 我需要一个非常有效的方法来做到这一点,因为这将发生很多 谢谢您的帮助。试试这个: var win = window.open(url

我以前问过这个问题,这个问题已经解决了一半,因为我发现Javascript有一些严格的安全性

我学到的内容:父窗口打开子窗口。子窗口重定向到另一个域并被重定向回。它试图在关闭自身时触发父窗口的功能

window.opener.startLoad();
这会导致权限(安全)问题,无法正常工作

(一半)新问题:如何获取窗口以打开子窗口,以及在关闭时在父窗口中运行函数

我需要一个非常有效的方法来做到这一点,因为这将发生很多

谢谢您的帮助。

试试这个:

var win = window.open(url, name);
win.onunload = afterChildClose; // afterChildClose() is the function.
win.close(); // afterChildClose() should fire now.
所有这些代码都将在父窗口的javascript(包括afterChildClose())中找到并执行。您正在创建窗口并将函数分配给卸载事件

哦,我刚想到一件事。如果子窗口刷新或导航到另一个url,onunload事件也将触发。如果您只希望在窗口关闭时触发事件,则应在win.closed上包含一个签入afterChildClose()

编辑:下面是我将两个示例页面的代码放在一起进行尝试

父窗口:

<html>
<body>
<script type="text/javascript">
    var win = window.open("secondwindow.html", "woo");
    win.onunload =onun; 

    function onun() {
        if(win.location != "about:blank") // This is so that the function 
                                          // doesn't do anything when the 
                                          // window is first opened.
        {
            alert("closed");
        }
    }
</script>
</body>
</html>

var win=window.open(“secondwindow.html”、“woo”);
win.onunload=onun;
函数onun(){
if(win.location!=“about:blank”)//这样函数
//当
//第一个窗口是打开的。
{
警报(“关闭”);
}
}
子窗口(“secondwindow.html”):


setTimeout('window.close();',5000);

当我尝试在firefox中打开第一个文档时,它会打开窗口,窗口等待5秒后退出,第一个文档显示alert(),因此即使子窗口自行关闭,它也能工作。

我在这里登陆是为了寻找类似的功能,但始终无法使它与跨浏览器兼容。下面是另一种在子窗口关闭时执行代码的方法:

var win = window.open("http://www.google.com");

var winClosed = setInterval(function () {

    if (win.closed) {
        clearInterval(winClosed);
        location.assign("http://www.bing.com/");  //Execute your code here
    }

}, 250);

它不使用子窗口中的任何事件处理程序,也不需要修改子窗口的内容。

afterChildClose函数位于何处?那么您是否从父窗口关闭子窗口?是的,
win.close()
仅用于演示关闭子窗口时会发生什么。我的答案中的代码并不是您的完整解决方案,它只是显示了允许您执行所需操作的技术。这种技术是在打开子窗口对象后捕获它,然后将事件分配给该对象(例如onunload)。我在引用子窗口时遇到问题,因为它在onclick事件中打开,也许我可以按子窗口名称引用??我解决了前面的问题。我只是很难在函数中引用win,因为它说它未定义。函数在其自己的脚本中位于上述代码的下方,因此不确定其不工作的原因。您确定该函数是在子窗口关闭时运行的,而不是在打开时运行的,因为这是我测试它时的样子吗?对于您最近对我的答案的评论,我恐怕想不出它在窗口关闭时不调用该函数的原因。你能把你的代码贴在你打开窗口的地方吗,以及当窗口关闭时你试图调用的函数?那时我也许能帮你更多,但现在我没有主意了。
var win = window.open("http://www.google.com");

var winClosed = setInterval(function () {

    if (win.closed) {
        clearInterval(winClosed);
        location.assign("http://www.bing.com/");  //Execute your code here
    }

}, 250);