How to call a function in an iframe from the parent page?
Asked
Active
Viewed 3.0k times
11
-
1Same answer here: http://stackoverflow.com/questions/3672726/make-an-event-happen-in-child-iframe-to-the-parent-window-in-javascript – Meetai.com May 28 '13 at 03:49
5 Answers
19
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.

Andy E
- 338,112
- 86
- 474
- 445
-
I'd suggest that the non-lazy equivalent would *really* be `if(document.getElementById("myFrame").length==0){ document.getElementById("myFrame").contentWindow.myFunction(); };` – Jeromy French Jun 12 '14 at 17:47
-
@Jeromy: nope, both versions would throw the same error if `#myFrame` didn't exist in the same page. – Andy E Jun 13 '14 at 07:34
-
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. – Jeromy French Jun 13 '14 at 14:10
-
This should be accepted as the answer. I like the lazy version ;) – Aster Veigas Feb 03 '16 at 06:01
3
$("iframe").each(function()
{
$(this).one("load", function()
{
$(this)[0].contentWindow.myFunction();
});
});
It is necessary to loaded iframe ;)

Gigoland
- 1,287
- 13
- 10
0
You can select the iFrame using its id
document.getElementById(iframeId).contentDocument
but I am not sure you can access its JavaScript, especially if child iFrame is from different domain

Alex Rashkov
- 9,833
- 3
- 32
- 58