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>
次を使用できます。
document.getElementById('iframe1').contentWindow.document.write("<html><body>Hello world</body></html>");
jsFiddle は、すべての主要なブラウザーで機能します。
contentDocument.write
の代わりにcontentWindow.document.write
を使用する必要があることに注意してください。これにより、IE7でも機能します。
var htmlString="<body>Hello world</body>";
var myIFrame = document.getElementById('iframe1');
myIFrame.src="javascript:'"+htmlString+"'";
Html5では、 srcdoc属性 を使用できます。
innerHTML
はIEでは特に注意が必要です。IEでは、thead
のような要素は読み取り専用であり、多くの問題を引き起こします。
Msdnのドキュメントに基づいて、documentMode
プロパティを提供するinnerHTML
を試すことができます。
myIFrame = myIFrame.contentWindow ||
myIFrame.contentDocument.document ||
myIFrame.contentDocument;
myIFrame.document.open();
myIFrame.document.write('Your HTML Code');
myIFrame.document.close();
これはIEでのみ機能する可能性があります。
document.documentElement.innerHTML
。ただし、ページ内のすべてが、それを行うスクリプトであっても置き換えられることを知っておいてください。
Iframeの場合、このようになりますmyIFrame.contentWindow.document.documentElement.innerHTML