如何使用jQuery公开IFrame的DOM?
我有一个代表IFrame的原型。该原型具有一个名为GoToUrl(…)的函数,可在IFrame中打开给定的url。
我的问题是:如何创建“
InternalDOM”属性并使该属性引用内部IFrame的“窗口”对象(根DOM对象)?通过以下方式:如果我的IFrame公开了一个在其“窗口”对象中包含对象X的页面,我可以这样做:
MyFrameObject.GoToUrl(pageXurl);MyFrameObject.InternalDOM.X
任何帮助,将不胜感激。
PS:我会接受不一定与jQuery相关的答案,但我更喜欢jQuery解决方案。
回答:
要获取window
框架的对象,可以使用window.frames
数组:
var iframewindow= frames['iframe_name'];
这就要求您赋予<iframe>
old-schoolname
属性而不是或id
。另外,如果您知道iframe在页面上的顺序,则可以对其进行数字索引:
var iframewindow= frames[0];
从DOM中的iframe元素获取iframe窗口通常更为灵活,但这需要一些兼容性代码来应对IE:
var iframe= document.getElementById('iframe_id');var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
jQuery定义了content()方法来获取document
节点,但是它没有给您跨浏览器的方法,从document
到window
,所以您仍然会遇到以下问题:
var iframe= $('#iframe_id')[0];var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
这并不是真正的大胜利。
(注意:使用jQuery进行跨框架脚本编写时要非常小心。每个框架都需要自己的jQuery副本,并且一帧副本中的方法不一定适用于另一框架中的节点。跨框架脚本编写是一个充满话题的话题陷阱。)
以上是 如何使用jQuery公开IFrame的DOM? 的全部内容, 来源链接: utcz.com/qa/399395.html