【问题标题】:get the element inside of iframe获取 iframe 中的元素
【发布时间】:2011-01-07 17:19:39
【问题描述】:

我想获得位于 iframe 内的 body 元素 'tinymce',如下所示的树..

html -> body -> div#wpwrap -> div#wpcontent -> div#wp-content -> div#wrap -> form#post -> div#editorcondainer -> div#poststuff -> div#post- body -> div#post-body-content -> div#postdivrich -> div#editorcontainer -> span#content_parent -> table#content_tbl.mceLayout -> tbody - > tr -> td.mceIframeContainer.mceFirst.mceLast -> iframe#content_ifr -> html -> body#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 为空 :(

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

如何获取 'span id :content_parent' 之后的元素

【问题讨论】:

    标签: javascript html events wordpress


    【解决方案1】:

    试试document.getElementById('content_ifr'); 上面的代码会寻找document.getElementById(undef);(因为你从来没有定义一个叫做content_ifr的变量)。

    【讨论】:

    • 我也尝试过这种方式。但仍然返回null。所以 iframeEl 为空 & 执行进一步的错误.... :(
    • 如果返回null,则当前文档中没有具有该ID的元素。还要检查 JavaScript 错误控制台;也许还有另一个错误。
    • 我正在尝试树中的其他 id,但它停止从“span id:content_parent”返回元素,最后一个 id 返回对象是“div id:editorcontainer”我怎样才能在“span”之后获取元素id :content_parent'
    • 就像在同一个文档中处理其他所有元素一样;错误必须在其他地方。
    【解决方案2】:

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

    【讨论】:

    • 这是否意味着我没有任何选项可以访问该元素'tinymce'
    • 仅当您尝试执行跨域访问时。想象一下,如果您可以在银行的登录页面中嵌入 iframe。您可以编写一些脚本来从碰巧使用该银行的任何用户那里获取自动填充数据。
    【解决方案3】:

    <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 来执行此操作。这应该总结了各种可能性。

    【讨论】:

    • 有没有办法将名称添加到 iframe,或者您能否解释一下使用其 id 使用上述语法的方法...
    • 使用<iframe name='xxx' ...。之后,iframe 应该可以通过window.xxx 访问。不过,我不确定浏览器是否兼容。 getElementById() 应该可以在任何浏览器中使用。
    • 我无法编辑 iframe 标签中的内容,因为我不是创建它的人。这就是为什么我试图通过它的 id 访问。有没有办法在它的 iframe 标签之外添加一个名字到那个 iframe 有没有办法通过它的 id 访问 iframe..
    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2016-08-03
    • 2022-11-25
    • 2017-06-14
    相关资源
    最近更新 更多