gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:31:42 25 4
gpt4 key购买 nike

我以前问过这个问题,从某种意义上说,这个问题已经解决了一半,我得到帮助发现 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>

子窗口(“secondwindow.html”):

<html>
<body>
<script type="text/javascript">
setTimeout('window.close();', 5000);
</script>
</body>
</html>

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

关于javascript - 子窗口关闭时如何运行父窗口的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1112340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com