为什么当我试图从父页面调用iFrame中的函数时,我得到一个TypeError

Why am I getting a TypeError when trying to call a function in an iFrame from the parent page?

本文关键字:TypeError 一个 函数 为什么 iFrame 调用      更新时间:2023-09-26

我有一个页面(父)与iFrame(子)嵌入其中,iFrame包含一个javascript函数,我需要从父调用。页面是在不同的域名,我不知道如果这是问题。这是我在父页面上的代码:

<script type="text/javascript">
    function SaveChanges() {
        var iFrame = document.getElementById("iframeSite");
        iFrame.contentWindow.ExecuteSave();
    }
</script>

…子页面上的代码:

<script type="text/javascript">
    function ExecuteSave() {
        alert("test1");
    }
</script>

当我在父程序中调用"SaveChanges"时,它在试图调用"ExecuteSave"的那一行出错。

Uncaught TypeError: Property 'ExecuteSave' of object [object DOMWindow] 
is not a function

我已经尝试了几乎所有的变化调用子iFrame的函数,但仍然收到相同的错误。

因为iframe在不同的域中,所以您不能在它们之间直接调用。这将违反同源策略。

是iframe和父元素通信的一种被认可的方式。它叫做postMessage()

希望这对你有帮助!