我有两个窗口:parent
和popup
。显然parent
引用了popup
。现在在popup
我有一个函数说
function test() { alert('test'); }
我希望在parent
中调用此函数,例如popup.test();
。有没有办法做到这一点?我确实知道如何做到这一点。只是声明
window.test = function() { alert('test'); }
并在弹出窗口中调用window.opener.test();
工作正常。但是这在我的情况下不起作用(我认为因为window.opener
对象是引用,但window.open
中的window
和popup
并不真正相关)。有什么想法吗?
答案 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/