我有一个HTML字符串
<html>
<body>Hello world</body>
</html>
我想用JavaScript把它设置成iframe。我试着把HTML设置成这样:
contentWindow.document.body.innerHTML
或
contentDocument.body.innerHTML
或
document.body.innerHTML
但IE给出“拒绝访问”、“对象不支持此属性或方法”或“操作的最后一个元素无效”错误。
下面是我的完整代码:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery_1.7.0.min.js"/>
<script type="text/javascript">
$(document).ready(function(){
var htmlString = "<html><body>Hello world</body></html>";
var myIFrame = document.getElementById('iframe1');
// open needed line commentary
//myIFrame.contentWindow.document.body.innerHTML = htmlString;
//myIFrame.contentDocument.body.innerHTML = htmlString;
//myIFrame.document.body.innerHTML = htmlString;
//myIFrame.contentWindow.document.documentElement.innerHTML = htmlString;
});
</script>
</head>
<body>
<p>This is iframe:
<br>
<iframe id="iframe1">
<p>Your browser does not support iframes.</p>
</iframe>
</body>
</html>
7条答案
按热度按时间mm5n2pyu1#
您可以使用:
这是一个jsFiddle,它可以在所有主流浏览器上运行。
请注意,您应该使用
contentWindow.document.write
而不是contentDocument.write
:这使得它在IE7中也能工作。oxf4rvwz2#
有了html5,你就可以使用srcdoc attribute了。
guykilcj3#
innerHTML
有点棘手,特别是在IE中,像thead
这样的元素是只读的,会引起很多麻烦。根据msdn上的文档,您可以尝试使用
documentMode
,它提供了一个innerHTML
属性。这可能只适用于IE。
bz4sfanl4#
document.documentElement.innerHTML
怎么样?但是要知道页面中的所有内容都会被替换,即使是这样做的脚本。对于iframe,它将类似于
myIFrame.contentWindow.document.documentElement.innerHTML
krcsximq5#
我对“起源”这个词的答案有疑问。这就是它对我的作用:
d4so4syb6#
在2023年,这个问题的正确答案是使用
<iframe>
元素的srcdoc
属性,我可以直接在HTML文件中完成,也可以使用javascript:ax6ht2ek7#
试试看:
更新: