How to call a function in an iframe from the parent page?
5 Answers
As long as the framed page is on the same domain (or on a sub-domain, and you're setting document.domain), you need to access the contentWindow property of the frame element. For example:
$("#myFrame")[0].contentWindow.myFunction(); // or, if jQuery hasn't made you lazy document.getElementById("myFrame").contentWindow.myFunction(); Most browsers also support contentDocument, but Internet Explorer doesn't. If your framed page is on a different domain then you'll get an Access Denied error.
4 Comments
Jeromy French
I'd suggest that the non-lazy equivalent would really be
if(document.getElementById("myFrame").length==0){ document.getElementById("myFrame").contentWindow.myFunction(); };Andy E
@Jeromy: nope, both versions would throw the same error if
#myFrame didn't exist in the same page.Jeromy French
I see what you mean...
$("#myFrame")[0] returns undefined, which of course has no methods. I was thinking $("#myFrame")..., but that's not how this works. Thanks for setting me on the right path.Aster Veigas
This should be accepted as the answer. I like the lazy version ;)
did you try?
top.frames['my_frame'].myFunc(); 1 Comment
Maurizio Cucchiara
It's javascript, you don't necessary need jquery