从另一个页面访问功能(IE11)

Access a function from another page (IE11)

我有一个打开子页面的父页面 (IE11)。

我想在父页面添加一些控件,触发子页面的一些功能。

这是父页面的内容(简体):

<script>

    let newWindow = window.open('cannon.htm','Picture Display', 'width=780, height=520');

</script>

<button onclick="newWindow.actions.sayHello()">Say</button>

这是子页面的内容(简体):

let actions;

window.addEventListener('load', function() {

    actions = (function() {

        return {
            sayHello: function() {
                 console.log("hello");
            }
        }

    })();

});

这会引发错误。为什么?我怎样才能让它发挥作用?

错误:无法获取未定义或空引用的 属性 'sayHello'

使用单独的脚本:

cannon.js:

let actions;

window.addEventListener('load', function() {

    actions = (function() {

        return {
            sayHello: function() {
                 console.log("hello");
            }
        }

    })();

});

cannon.htm:

<script src="cannon.js"></script>

父页面(index.html):

<script src="cannon.js"></script>

我找到了解决办法!非常简单:只需使用 var actions; 而不是 let actions; 来访问函数。 let 限制了范围,因此无法访问。

更多信息在这里:What's the difference between using "let" and "var"?