Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法更改Firefox 4/IE中的iFrame内容_Javascript_Iframe - Fatal编程技术网

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

Javascript 无法更改Firefox 4/IE中的iFrame内容,javascript,iframe,Javascript,Iframe,我有以下代码: <html> <head> </head> <body> <script type="text/javascript"> var frame = document.createElement('iframe'); frame.id = 'myFrame'; document.getElementsByTagName('body')[0].appendChild(fr

我有以下代码:

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

var frame=document.createElement('iframe');
frame.id='myFrame';
document.getElementsByTagName('body')[0].appendChild(frame);
var context=frame.contentWindow.document;
context.body.innerHTML='testing';
这将创建一个简单的iframe,其中包含我的文本:“testing”

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


知道我做错了什么吗?

一些浏览器明确禁止这样的事情,所以你不能,例如,在一个框架中加载某人的银行网站,并用Javascript与之交互。此链接:

表明空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的解释都不同,因此只需使用通用方法即可。这应该适用于所有浏览器


试试看。

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

var frame=document.createElement('iframe');
frame.id='myFrame';
document.getElementsByTagName('body')[0].appendChild(frame);
var context=frame.contentWindow.document;
context.write(“测试”);
JS fiddle在此确认它在IE、Chrome和Firefox中工作:


这与问题的本质还不太接近。我知道XSS的限制,但是iframe是在这个页面中创建的,我如何控制它的内容呢?它不应该受到限制,因为它是“同一来源”,对吗?一点也不,它是跨域引用,甚至不是特定于iframe的。您的问题源于使用了正确的javascript。第一个链接似乎讨论了Firefox中空
iframe
元素的问题,这听起来可能会影响您的示例。你检查过了吗?我在发帖前和阅读你的答案后都试过了(只是为了确定!)。这不是问题…TNC-新代码在不同浏览器中都能很好地工作。谢谢有没有机会介绍一下如何添加动态元素(比如创建脚本并将其放入脚本中)?我在这方面还有些麻烦…你能详细说明一下你想做什么吗?我不介意多给你点背景知识。