How to call a function in an iframe from the parent page?
Asked
Active
Viewed 2.9k times
8
-
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
16
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
- 326,646
- 82
- 467
- 441
-
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 ;)
GigolNft
- 761
- 7
- 9
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,549
- 3
- 30
- 58