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

Cannot change iFrame content in Firefox 4/IE

本文关键字:iFrame 内容 IE Firefox      更新时间:2023-09-26

我有以下代码:

<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>

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

这在Chrome中工作完美,但Firefox和IE呈现一个空的iframe。

知道我做错了什么吗?

你可以这样做:

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的解释都不一样,所以只需使用通用方法即可。这应该可以在所有浏览器中工作。

试试吧

一些浏览器明确阻止这样的事情,所以你不能,例如,加载某人的银行网站在一个框架,并在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

有一些关于如何处理它们的资源

重写了最后一行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 fiddle在这里确认它在IE, Chrome和Firefox中工作:

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