2016-04-23 14 views
3

Insert content into iFrameとそのフィドルhttp://jsfiddle.net/8VP4y/3/を見て、問題が発生している次のコードが出てきました。Append内のAppend、Iframe内のAppend内に追加する

私は以下の問題のためにjsfiddleを作成しました。

https://jsfiddle.net/cy87j70t/2/

$(document).ready(function() { 

     $('#card2').html('<iframe id="myFrame"></iframe>'); 

     var myFrame = $("#myFrame").contents().find('body'); 
     var myFrame2 = $("#myFrame2").contents().find('body'); 

     myFrame.append('<p>OH NO TOKEN IS FOR myFrame Original '); 
     myFrame2.append('<p>OH NO TOKEN IS FOR myFrame 2 '); 

    }); 

とHTMLは次のようになります。

<div id='card2'> 

</div> 
<iframe id='myFrame2'> 

</iframe> 

私は、JSONP(私は簡単にデバッグのためにその一部を省略さき)からコンテンツをIFRAMEへの書き込みは、JavaScriptを使用してのiframeを作成しようとしています。

なぜiframeに書き込まれていないのかわかりませんが、それはiframeがjavascriptによって作成されているからですか?

私はAPPEND、HTML、後、前付加を試みたが、何も私はIFRAME

+1

だから、問題が何であるか、フィドルは期待通りに動作するようです。 – dfsq

+0

これは、HTMLで作成されたmyFrame2で印刷されますが、javascriptで作成されたmyFrameには印刷されません。 –

+0

あなたのデモでは、両方のiframeで正しく印刷されます。 – dfsq

答えて

1

いいえ、それはバグではありませんへの書き込みを許可していないようにみえます。

Updated jsfiddle

正しい方法は次のとおりです。

$(function() { 
    $('#card2').html('<iframe id="myFrame"></iframe>'); 

    // add the src attribute so that the load event will take place in every browser.. 
    $("#myFrame").attr('src', 'about:blank'); 

    // wait for the iframe is loaded 
    $("#myFrame").on('load', function(e) { 
    var myFrame = $("#myFrame").contents().find('body'); 
    myFrame.append('<p>11111111OH NO TOKEN IS FOR myFrame Original</p>'); 
    }); 



    var myFrame2 = $("#myFrame2").contents().find('body'); 
    myFrame2.append('<p>2222222222 OH NO TOKEN IS FOR myFrame 2</p>'); 
}); 
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script> 

<div id='card2'> 

</div> 
<iframe id='myFrame2'> 

</iframe> 
+0

ありがとう、フレームロードはfirefoxのトリックでした。 しかし、** $( "#myFrame")。attr( 'src'、 'about:blank'); **これはSafariでは機能しなくなりますが、Firefoxでは機能しますが、うまくいきました –

+0

@DaveTeu問題はiframeがコンテナなので、src attrを設定した場合、イベントの読み込みが開始され、処理を続行できます。私はそれを8.1でテストした:ie11、FF&Chromeの最新バージョン。 – gaetanoM

+1

ありがとうございました。ロジックを理解した後、私は$( '#myFrame')[0] .contentWindow.location.reload(true)を見つけました。私のコードでabout:blankが欲しくない場合でもうまくいきます。このバグで6時間Zzzはあなたに感謝しています。 –