无法在Firefox 4 / IE中更改iFrame内容

时间:2011-05-03 19:03:37

标签: javascript iframe

我有以下代码:

<html>
<head>
</head>
<body>
    <script type="text/javascript">
        var frame = document.createElement('iframe');
        frame.id = 'myFrame';
        document.getElementsByTagName('body')[0].appendChild(frame);
        var context = frame.contentWindow.document;
        context.body.innerHTML = 'testing';
    </script>
</body>
</html>

这会创建一个包含我的文本的简单iframe:'testing'。

这在Chrome中非常有效,但Firefox和IE正在呈现空的iframe。

知道我做错了吗?

3 个答案:

答案 0 :(得分:2)

您可以这样做:

var frame = document.createElement('iframe');
frame.id = 'myFrame';
document.getElementsByTagName('body')[0].appendChild(frame);

frame = (frame.contentWindow) ? frame.contentWindow : (frame.contentDocument.document) ? frame.contentDocument.document : frame.contentDocument;
frame.document.open();
frame.document.write('testing');
frame.document.close();

所有浏览器对Javascript的解释都不同,因此只需使用通用方法即可。这应适用于所有浏览器。

试一试。

答案 1 :(得分:1)

某些浏览器明确禁止此类内容,因此您无法例如在框架中加载某人的银行网站并在Javascript中与其进行交互。这个链接:

http://spyder.wordpress.com/2006/05/31/hacking-around-firefox-security-in-order-to-actually-accomplish-something/

建议如何初始化空iframe有一些错误,这个错误:

http://www.iframehtml.com/iframe-security.html

有一些资源可以解决这些问题。

答案 2 :(得分:0)

重写了最后一行innerHTML似乎只是一个chrome。

<script type="text/javascript">        
    var frame = document.createElement('iframe');        
    frame.id = 'myFrame';        
    document.getElementsByTagName('body')[0].appendChild(frame);        
    var context = frame.contentWindow.document;        
    context.write('testing');    
</script>
这里的JS小提琴确认它在IE,Chrome和Firefox中工作:

http://jsfiddle.net/thebeebs/mDMaj/