Monday, June 17, 2013

jQuery render iframe without src and direct html

<iframe id='iframe' frameborder='0' height='200' width='300'></ifraem>

var html = '<div>any html here</div>';

var frame = document.getElementById("iframe').contentWindow.document;
frame.open();
frame.write(html);
frame.close();

Write the following code to get the iframe body using jQuery
var iFrame = jQuery("#iframe").contents().find("body");

To get the window object for a frame you can use the window.frames array:
var iframewindow= frames['iframe_name'];
 
This requires that you give the <iframe> an old-school name attribute instead-of-or-as-well-as the id. Alternatively if you know the order of iframes on the page you can index them numerically:
var iframewindow= frames[0];
 
It's generally more flexible to get the iframe window from the iframe element in the DOM, but this requires some compatibility code to cope with IE:
var iframe= document.getElementById('iframe_id');
var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;

jQuery defines the contents() method to grab the document node, but it doesn't give you a cross-browser way to go from the document to the window, so you're still stuck with:
var iframe= $('#iframe_id')[0];
var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;

No comments:

Post a Comment