Can't write to dynamic iframe using jQuery

Posted by Fremont Troll on Stack Overflow See other posts from Stack Overflow or by Fremont Troll
Published on 2009-11-02T21:55:31Z Indexed on 2010/05/28 3:01 UTC
Read the original article Hit count: 261

Filed under:
|
|

My goal is to dynamically create an iframe and write ad JavaScript into it using jQuery (e.g. Google AdSense script). My code works on Chrome, but fails intermittently in Firefox i.e. sometimes the ad script runs and renders the ad, and other times it doesn't. When it doesn't work, the script code itself shows up in the iframe.

My guess is these intermittent failures occur because the iframe is not ready by the time I write to it. I have tried various iterations of *iframe_html* (my name for the function which is supposed to wait for the iframe to be ready), but no luck. Any help appreciated!

PS: I have read various threads (e.g. http://stackoverflow.com/questions/205087/jquery-ready-in-a-dynamically-inserted-iframe). Just letting everyone know that I've done my research on this, but I'm stuck :)

Iteration 1:

function iframe_html(html){
 $('<iframe name ="myiframe" id="myiframe"/>').appendTo('#maindiv');
 $('#myiframe').load(
   function(){
    $('#myiframe').ready( function(){
     var d = $("#myiframe")[0].contentWindow.document;
     d.open();
     d.close();
     d.write(html);
     });
   }
 );
};

Iteration 2:

function iframe_html(html){
 $('<iframe id="myiframe"/>').appendTo('#maindiv').ready(
   function(){
    $("#myiframe").contents().get(0).write(html);
   }
 ); 
};

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about jQuery