获取iframe中的元素

时间:2011-01-07 17:19:40

标签: javascript html events wordpress wordpress-plugin

我想得到身体元素'tinymce',它位于iframe中,如下图所示。

html - >身体 - > div#wpwrap - > div#wpcontent - > div#wp-content - > div#wrap - >表格#post - > div#editorcondainer - > div#poststuff - > div#post-body - > div#post-body-content - > div#postdivrich - > div#editiorcontainer - > span#content_parent - > table#content_tbl.mceLayout - > tbody - > tr - > td.mceIframeContainer.mceFirst.mceLast - > iframe#content_ifr - > html - >的体#tinymce.mceContentBody

为此,我使用代码:

 var iframeEl = document.getElementById('content_ifr');
 alert(iframeEl);

 if ( iframeEl.contentDocument ) { // DOM

  var bdy = iframeEl.contentDocument.getElementById('tinymce');

 } else if ( iframeEl.contentWindow ) { // IE win

  var bdy = iframeEl.contentWindow.document.getElementById('tinymce');

 }

但iframeE1为null :(

我在树中尝试其他ID但它停止从'span id:content_parent'返回元素,最后一个id返回对象是'div id:editorcontainer'

我怎样才能获得'span id:content_parent'

之后的元素

3 个答案:

答案 0 :(得分:2)

尝试document.getElementById('content_ifr');上面的代码会查找document.getElementById(undef);(因为您从未定义名为content_ifr的变量)。

答案 1 :(得分:0)

<iframe>使用新文档创建新的窗口上下文。因此,请为<iframe>提供一个名称属性,例如name="somename",以便您可以像这样访问它:

window.somename.document.getElementById('tinymce')

如果您无法访问HTML,可以先通过JS添加名称,如下所示:

document.getElementById('tinymce').setAttribute('name','somename');

对SO的一些挖掘提出了这个问题:accessing a form that is in an iframe解释了如何仅使用ID来完成此操作。这应该总结可能性。

答案 2 :(得分:0)

如果iframe的来源与包含的网页不在同一个域中,您就无法访问iframe的内容,因为它们位于不同的安全沙箱中。