我想得到身体元素'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'
之后的元素答案 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的内容,因为它们位于不同的安全沙箱中。