我正在创建一个弹出窗口。在完成子项(弹出)窗口的工作并单击关闭按钮后,我需要调用父窗口的javascript函数。我怎样才能做到这一点。 我不是自己创建子窗口,而是显示其他URL的内容。
答案 0 :(得分:9)
我认为你不能得到一个事件,因为当URL来自不同的域时,你不能弄乱文件本身。但是,您可以轮询并检查窗口对象的“已关闭”属性:
var w = window.open("http://what.ever.com", "OtherWindow");
setTimeout(function() {
if (w.closed) {
// code that you want to run when window closes
}
else
setTimeout(arguments.callee, 100);
}, 100);
如果您愿意,也可以启动间隔计时器:
var w = window.open("http://what.ever.com", "OtherWindow");
var interval = setInterval(function() {
if (w.closed) {
// do stuff
cancelInterval(interval);
}
}, 100);
答案 1 :(得分:0)
如果子窗口不是来自与父窗口相同的域名,则由于相同的源策略而被锁定。这是为了防止跨站点脚本攻击(XSS)而刻意完成的。
答案 2 :(得分:0)
不要为此投票。摆脱arguments.callee
只是对Pointy代码的改进。为Pointy投票。
var w = window.open("http://what.ever.com", "OtherWindow");
setTimeout(function timeout() {
if (w.closed) {
// code that you want to run when window closes
}
else
setTimeout(timeout, 100);
}, 100);