Доступ к функции с другой страницы (IE11) - PullRequest
2 голосов
/ 08 апреля 2019

У меня есть родительская страница, которая открывает дочернюю страницу (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' с неопределенной или нулевой ссылкой

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Я нашел решение!Очень просто: просто используйте var actions; вместо let actions; для доступа к функции.let ограничивает область видимости, поэтому она недоступна.

Больше информации здесь: В чем разница между использованием "let" и "var"?

0 голосов
/ 08 апреля 2019

Используйте отдельный скрипт:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...