如何使用jQuery访问父窗口对象?

47

如何使用jQuery访问父窗口对象?

这是我的父窗口变量,我想在关闭子窗口后设置其值。

$('#serverMsg').html('some text here');
4个回答

78
window.opener.$("#serverMsg")

1
只有在打开器中激活了JQuery才能正常工作,我想。 - Pekka

18

如果你在弹窗中想要访问打开的窗口,可以使用window.opener。最简单的方法是在父窗口中同样加载JQuery:

window.opener.$("#serverMsg").html // 这个使用了父窗口中的JQuery

或者你也可以使用普通的document.getElementById来获取元素,然后在你的子窗口中使用jquery进行扩展。下面的代码应该可以工作(尽管我没有测试过):

element = window.opener.document.getElementById("serverMsg");
element = $(element);
如果你在一个iframe或frameset中并且想要访问父窗口,请使用window.parent而不是window.opener
根据同源策略,仅当子窗口和父窗口在同一域中时,所有这些操作才可以轻松完成。

11

或者你可以采用另一种方法:

$( "#serverMsg", window.opener.document )

我更喜欢这种方法,因为它不依赖于打开的窗口具有jQuery - 尽管它可能仍然会有jQuery。 - Damian Powell

0

这里是一个更直接的答案(父窗口而不是opener)原问题,可以在iframe中使用,假设iframe中的域名与父窗口相匹配:

window.parent.$("#serverMsg")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接