Firefox无法找到iframe

时间:2009-04-06 10:03:50

标签: javascript html

这是我试图访问的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未定义”。 我在其他页面上有类似的iframe(由punyMCE插件动态创建),它们工作得很好。 IE7 / 8也可以访问这个iframe。

这里完全失败了。关于Firefox无法找到iframe的任何想法?

2 个答案:

答案 0 :(得分:8)

window.frames[]数组由[i]帧的name属性(也称为帧目标)索引。不能依赖id也可以工作 - 虽然它可能在IE&lt; 8中,它通常认为名称和ID是相同的。

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

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

...但是,为了兼容IE&lt; 8,您还必须添加一些后备,因为它不支持contentDocument

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

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

答案 1 :(得分:1)

如果你只有1个iframe,你也可以用window.frames [1]或者找到它 document.getElementsByTagName( 'IFRAME')[0]

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