我之前已经问过这个问题,问题已经解决了一半,我帮助发现Javascript有一些严格的安全性.
我学到了什么:父窗口打开一个子窗口.子窗口重定向到不同的域并重定向回.它会在关闭自身时尝试触发父窗口的功能.
window.opener.startLoad();
Run Code Online (Sandbox Code Playgroud)
这会导致权限(安全性)问题,并且无法正常工作.
(一半)新问题:如何获得打开子窗口的窗口以及何时关闭在父窗口中运行一个函数?
我需要一种非常有效的方法,因为这将会发生很多!
感谢您的任何帮助.
Sea*_*ean 21
试试这个:
var win = window.open(url, name);
win.onunload = afterChildClose; // afterChildClose() is the function.
win.close(); // afterChildClose() should fire now.
Run Code Online (Sandbox Code Playgroud)
所有这些代码都将在父窗口的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>
Run Code Online (Sandbox Code Playgroud)
子窗口("secondwindow.html"):
<html>
<body>
<script type="text/javascript">
setTimeout('window.close();', 5000);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我尝试在firefox中打开第一个文档时,它打开窗口,窗口等待5秒并退出,第一个文档显示alert(),因此即使子窗口自行关闭它也能正常工作.
小智 5
我来到这里寻找类似的功能,但永远无法让它与跨浏览器兼容。所以这是在子窗口关闭时执行代码的另一种方法:
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);
Run Code Online (Sandbox Code Playgroud)
它不使用来自子窗口的任何事件处理程序,也不需要修改子窗口的内容。
| 归档时间: |
|
| 查看次数: |
21230 次 |
| 最近记录: |