Search code examples
javascriptjqueryiframe

Set iframe innerHTML without loading page in it (with jquery)


I want to set the contents of an iframe dynamically, when no pages were loaded before in the iframe.

I'm doing that :

iframe = $('<iframe id="thepage"></iframe>');

iframeHtml = 'iframeHtml';
$('body').append(iframe);

iframe
.contents()
.html(iframeHtml);

But it is not working, the html is still empty.


Solution

  • the best way to populate frame contents is document.write

    var dstFrame = document.getElementById('yourFrameId');
    var dstDoc = dstFrame.contentDocument || dstFrame.contentWindow.document;
    dstDoc.write(yourHTML);
    dstDoc.close()
    

    UPD: that is

    var iFrame = $('<iframe id="thepage"></iframe>');
    $('body').append(iFrame);
    
    var iFrameDoc = iFrame[0].contentDocument || iFrame[0].contentWindow.document;
    iFrameDoc.write('<p>Some useful html</p>');
    iFrameDoc.close();