【问题标题】:Firefox not able to find iframeFirefox 找不到 iframe
【发布时间】:2009-04-06 10:03:50
【问题描述】:

这是我尝试访问的 iframe:

 <div class="mceBody" id="additionalTxt_b">
        <iframe frameborder="0" id="additionalTxt_f" src='javascript:""' class="punymce"/>
 </div>

使用这条线:

frames['additionalTxt_f'].document.getElementsByTagName("body")[0].innerHTML

由于某种原因,我从 firebug 收到“frames.additionalTxt_f is undefined”。 我在其他页面上有类似的 iframe(由 punyMCE 插件动态创建),它们工作得很好。而且 IE7/8 访问这个 iframe 也没有问题。

在这里完全不知所措。关于为什么 Firefox 找不到 iframe 的任何想法?

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    window.frames[] 数组由 [i] 帧的 name 属性(又名帧目标)索引。不能依赖id 也可以工作 — 尽管它可能在 IE

    如果您想通过 ID 访问框架的内容,请使用 DOM Level 2 HTML contentDocument 属性而不是老式(“DOM Level 0”)frames 数组:

    document.getElementById('additionalTxt_f').contentDocument.body.innerHTML
    

    ...但是,为了与 IE contentDocument:

    var f= document.getElementById('additionalTxt_f');
    var d= f.contentDocument? f.contentDocument : f.contentWindow.document;
    d.body.innerHTML
    

    因此,您认为哪种方法不那么难看取决于您:额外的脚本工作,还是仅使用 name 属性。

    【讨论】:

    • 谢谢。这完美地工作。有了这个,我发现了 pumyMCE 的另一个错误,因为它没有将 name 属性添加到 iframe。
    • 嗯...“错误”可能会过分推销,没有特别要求包含name 属性。有些人喜欢name,有些人喜欢id(可以想象你也可能不想要)。
    • 哦。只是有点抬头。在 if 语句中,它应该是 f.contentWindow,而不是 d.contentWindow……现在才找到类型-o,因为它在 IE6 中产生了错误。
    【解决方案2】:

    如果您只有 1 个 iframe,您也可以使用 window.frames[1] 或 document.getElementsByTagName('iframe')[0]

    (在第一个选项中,父窗口为#0)

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 2021-10-13
      • 2021-07-05
      • 2014-08-08
      • 2021-12-30
      • 2015-09-11
      • 2020-01-13
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多