在父窗口中从子窗口运行函数

时间:2011-11-16 13:59:13

标签: javascript html popup window

我有两个窗口:parentpopup。显然parent引用了popup。现在在popup我有一个函数说

function test() { alert('test'); }

我希望在parent中调用此函数,例如popup.test();。有没有办法做到这一点?我确实知道如何做到这一点。只是声明

window.test = function() { alert('test'); }

并在弹出窗口中调用window.opener.test();工作正常。但是这在我的情况下不起作用(我认为因为window.opener对象是引用,但window.open中的windowpopup并不真正相关)。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这实际上取决于您为弹出窗口定义函数的上下文。假设您将函数/数据附加到弹出窗口的window对象,您可以从window.open返回的窗口句柄访问它(窗口句柄 {{ 1}}弹出窗口的对象:

window

我将假设您了解安全沙箱如何为弹出窗口工作

答案 1 :(得分:0)

在弹出窗口中声明test(),如下所示:

window["test"] = function()
{
  alert("It works!");
}

然后从主窗口打开弹出窗口:

var popup = window.open("popup.html", "The popup");

并调用你的函数:

popup.window.test();

jsFiddle(由于跨域限制,在没有/show的情况下无效!):http://jsfiddle.net/szK3F/show/