45

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

6 に答える 6

65

あなたが使用することができます:

document.getElementById('iframe1').contentWindow.document.write("<html><body>Hello world</body></html>");

すべての主要なブラウザーで動作するjsFiddleを次に示します。

代わりに:contentDocument.writeを使用する必要があることに注意してくださいcontentWindow.document.write。これにより、IE7 でも機能します。

于 2013-05-15T05:51:08.347 に答える
27
var htmlString="<body>Hello world</body>";
var myIFrame = document.getElementById('iframe1');
myIFrame.src="javascript:'"+htmlString+"'";

html5 では、 srcdoc 属性を使用できます。

于 2013-05-15T17:39:03.537 に答える
0

どうですかdocument.documentElement.innerHTML。ただし、それを行うスクリプトであっても、ページ内のすべてが置き換えられることに注意してください。

iframeの場合、次のようになりますmyIFrame.contentWindow.document.documentElement.innerHTML

于 2013-05-12T06:49:24.630 に答える
-1

それを試してみてください:

$('iframe').load(function() {
    $(this).contents().find('body').append("Hello world");
}); 

アップデート:

$(function(){
    $('iframe').load(function() {
        $(this).contents().find('body').append("Hello world");
    }); 
})
于 2013-05-15T05:52:21.410 に答える