Javascript 从父窗口中的子窗口运行函数
我有两个窗口:父窗口和弹出窗口。显然,Javascript 从父窗口中的子窗口运行函数,javascript,html,popup,window,Javascript,Html,Popup,Window,我有两个窗口:父窗口和弹出窗口。显然,parent引用了popup。现在在弹出窗口中我有一个函数 function test() { alert('test'); } 我想在parent中调用这个函数,类似于popup.test()。有办法吗?我知道怎么用另一种方法。只是宣布 window.test = function() { alert('test'); } 并调用window.opener.test()在弹出窗口中工作正常。但是,这在我的情况下不起作用(我认为是因为window.ope
parent
引用了popup
。现在在弹出窗口中
我有一个函数
function test() { alert('test'); }
我想在parent
中调用这个函数,类似于popup.test()代码>。有办法吗?我知道怎么用另一种方法。只是宣布
window.test = function() { alert('test'); }
并调用window.opener.test()代码>在弹出窗口中工作正常。但是,这在我的情况下不起作用(我认为是因为window.opener
对象是一个引用,但是window.open
和popup
中的window
实际上并不相关)。有什么想法吗?这取决于您为弹出窗口定义函数的上下文。假设将函数/数据附加到弹出窗口的窗口
对象,则可以从窗口返回的窗口句柄访问它。打开
(窗口句柄是弹出窗口的窗口
对象):
我假设您了解安全沙盒如何在弹出窗口中工作,如下所示:
window["test"] = function()
{
alert("It works!");
}
然后从主窗口打开弹出窗口:
var popup = window.open("popup.html", "The popup");
并调用您的函数:
popup.window.test();
jsiddle(由于跨域限制,没有/show
就无法工作!):实际上该函数是在弹出窗口中定义的。我需要访问popup的html。好吧,我想我可以重构我的代码,这样这个解决方案就足够好了。:)我会记下你的答案,谢谢!访问窗口句柄后,您可以在w.document
处访问窗口的文档,这将允许您调用w.document.getElementById
或您需要的任何其他函数。在窗口之间传递数据时一定要小心。一个窗口中的对象在另一个窗口中的行为可能会异常,具体取决于调用它的上下文。您的URL是否在同一个域上?是的,它们是。我用的是Chrome。实际上,弹出窗口
根本没有URL。它是空白的,内容通过弹出式.document.write插入。
popup.window.test();