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