一尘不染

在iframe中调用JavaScript函数

javascript

我在iframe从父页面调用JavaScript函数时遇到问题。这是我的两页:

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浏览此页面,我不认为这是问题所在)

当我按下“重置”按钮时,我得到“找到resultFrame”和“找不到resultFrame.Reset”。似乎有对框架的引用,但无法在框架上调用该函数,为什么呢?


阅读 240

收藏
2020-05-01

共1个答案

一尘不染

采用:

document.getElementById("resultFrame").contentWindow.Reset();

访问iframe中的重置功能

document.getElementById("resultFrame")将在您的代码中获取iframe,并在iframe中contentWindow获取window对象。拥有子窗口后,您可以在该上下文中引用javascript。

2020-05-01