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

发布于 2024-11-05 04:43:52 字数 544 浏览 0 评论 0原文

我有以下代码:

<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:“测试”。

这在 Chrome 中完美运行,但 Firefox 和 IE 正在渲染一个空的 iframe。

知道我做错了什么吗?

I have the following code:

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

This creates a simple iframe containing my text: 'testing'.

This works perfectly in Chrome, but Firefox and IE are rendering an empty iframe.

Any idea what I'm doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜灵血窟げ 2024-11-12 04:43:52

你可以这样做:

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 的解释都不同,所以这只是使用通用方法的问题。这应该适用于所有浏览器。

尝试一下。

You can do something like this:

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 is interpreted differently by all browsers, so it's just a matter of using the common-approach. This should work across all browsers.

Give it a try.

流绪微梦 2024-11-12 04:43:52

某些浏览器明确阻止此类行为,因此您无法在框架中加载某人的银行网站并在 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

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

Some browsers explicitly prevent things like this so you can't, e.g., load somebody's bank website in a frame and interact with it in Javascript. This link:

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

suggests that there are some bugs with how an empty iframe is initialized, and this one:

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

has some resources for how to deal with them.

瞄了个咪的 2024-11-12 04:43:52

重写最后一行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/< /a>

Rewrote the last line innerHTML seems like a chrome only thing.

<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 here confirms it's working in IE, Chrome and Firefox:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文