我目前有一个页面结构,包含一个包含iframe(iframe0)的页面(Parent),在iframe内部我有另一个iframe(iframe1).在iframe1中我有一个javascript函数,我试图从Parent调用.在Firefox/Chrome/Safari中,我可以使用以下代码调用此函数:
frames["iframe0"]["iframe1"].functionName();
Run Code Online (Sandbox Code Playgroud)
但是,在Internet Explorer中,上面的代码不起作用,它返回错误"对象不支持此属性或方法".我已经尝试了一些其他方法来访问该方法,他们都返回相同的错误.
window.frames.iframe0[iframe1].functionName();
window.iframe0.iframe1.functionName();
window.frames.iframe0.frames.iframe1.functionName();
Run Code Online (Sandbox Code Playgroud)
我甚至尝试在iframe0中调用一个函数来调用iframe1中的函数,但它甚至都不起作用.
任何人都知道如何访问嵌套在2级深度的iframe中的javascript函数?
谢谢.
更新: 在进一步研究问题之后,我发现我正在处理的问题与我提出的问题无关.答案ylebre在下面回答了我问过的问题,并且我将在那里标记为答案.我可能会开始另一个更详细地描述我的问题的问题.
yle*_*bre 10
我提供了一个使用3个HTML文件的示例.最外层是test.html,它有一个包含iframe1.html的iframe.反过来,iframe1.html包含一个包含iframe2.html的iframe.我希望这是你想到的那种设置.
基本上,您可以使用iframe.contentWindow.myfunc()调用iframe函数;
使用contentWindow.document,您可以访问第二级iframe.
示例函数'doit()'调用父,第一个iframe和第二个iframe中的函数.
希望这可以帮助!
<!------- test.html -------->
<html>
<head>
<script type="text/javascript">
function parent_function() {
alert('parent');
}
function doit() {
parent_function();
document.getElementsByTagName('iframe')[0].contentWindow.iframe1_function();
document.getElementsByTagName('iframe')[0].contentWindow.document.getElementsByTagName('iframe')[0].contentWindow.iframe2_function();
}
</script>
</head>
<body>
main
<a href="javascript:doit();">do it</a>
<iframe src='iframe1.html'>
</body>
</html>
<!------- iframe1.html -------->
<html>
<head>
<script type="text/javascript">
function iframe1_function() {
alert('iframe1');
}
</script>
</head>
<body>
frame1
<iframe src='iframe2.html'>
</body>
</html>
<!------- iframe2.html -------->
<html>
<head>
<script type="text/javascript">
function iframe2_function() {
alert('iframe2');
}
</script>
</head>
<body>
frame2
</body>
</html>
Run Code Online (Sandbox Code Playgroud)