我在iframe从父页面调用JavaScript函数时遇到问题。这是我的两页:
iframe
mainPage.html
<html> <head> <title>MainPage</title> <script type="text/javascript"> function Reset() { if (document.all.resultFrame) alert("resultFrame found"); else alert("resultFrame NOT found"); if (typeof (document.all.resultFrame.Reset) == "function") document.all.resultFrame.Reset(); else alert("resultFrame.Reset NOT found"); } </script> </head> <body> MainPage<br> <input type="button" onclick="Reset()" value="Reset"><br><br> <iframe height="100" id="resultFrame" src="resultFrame.html"></iframe> </body> </html>
resultFrame.html
<html> <head> <title>ResultPage</title> <script type="text/javascript"> function Reset() { alert("reset (in resultframe)"); } </script> </head> <body> ResultPage </body> </html>
(我知道document.all不建议这样做,但只能在内部使用IE浏览此页面,我不认为这是问题所在)
document.all
当我按下“重置”按钮时,我得到“找到resultFrame”和“找不到resultFrame.Reset”。似乎有对框架的引用,但无法在框架上调用该函数,为什么呢?
采用:
document.getElementById("resultFrame").contentWindow.Reset();
访问iframe中的重置功能
document.getElementById("resultFrame")将在您的代码中获取iframe,并在iframe中contentWindow获取window对象。拥有子窗口后,您可以在该上下文中引用javascript。
document.getElementById("resultFrame")
contentWindow