У меня есть родительская страница, которая открывает дочернюю страницу (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.info("hello");
}
}
})();
});
Это вызывает ошибку. Почему? Как я могу заставить его работать?
ОШИБКА: невозможно получить свойство «sayHello» неопределенной или нулевой ссылки
Я добавил его в основной пост: Не удалось получить свойство «sayHello» неопределенной или нулевой ссылки.
Используйте отдельный скрипт:
cannon.js
:
let actions;
window.addEventListener('load', function() {
actions = (function() {
return {
sayHello: function() {
console.info("hello");
}
}
})();
});
cannon.htm
:
<script src = "cannon.js"></script>
Родительская страница (index.html
):
<script src = "cannon.js"></script>
Я не уверен, что понимаю, как это может вызвать нажатие кнопки в родительском окне для выполнения действия в дочернем окне...?
Я нашел решение! Очень просто: просто используйте var actions;
вместо let actions;
для доступа к функции. let
ограничивает область действия, поэтому она недоступна.
Подробнее здесь: В чем разница между использованием «let» и «var»?
Спасибо, что опубликовали решение этой проблемы. Я предлагаю вам попробовать отметить свой ответ как принятый ответ на этот вопрос через 48 часов, когда он будет доступен для отметки. Это может помочь другим членам сообщества в будущем в подобных вопросах. Спасибо за понимание.
Вы также должны опубликовать ошибку, которую вы получили. :)