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;
which isn't really a big win.
(Note: be very careful using jQuery for cross-frame-scripting. Each frame needs its own copy of jQuery and methods from one frame's copy won't necessarily work on nodes from the other. Cross-frame-scripting is a topic fraught with traps.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…