Сообщение в открывшемся окне браузера из обратного вызова в Internet Explorer 11.0.x

Я пытаюсь написать обратный вызов в моем приложении, которое открывает всплывающее окно, делает некоторые вещи и отвечает на окно всплывающего окна, чтобы пометить действие как завершенное.

Всплывающее окно использует window.opener.postmessage() способ связи с открывающим окном в браузере.

Это работает в большинстве браузеров. Однако Internet Explorer 11.0.x не может отправлять сообщения, тогда как 11.192.x может. Я не проверял с IE,9/10.

Ошибка Permission Denied а также window.opener является undefinedЕсть ли способ решить эту проблему и заставить мое всплывающее окно отправлять сообщение в открывающее окно в Internet Explorer 11.0.x?

Благодарю.

1 ответ

Я не пробовал это в Internet Explorer, но дайте мне знать, работает ли он для вас.

Создайте пустой объект для хранения ваших данных в объекте окна.

например.

window._myData = {};

Создайте функцию на объекте окна. Функция - это то, что вы хотите сделать, устанавливает данные и вызывается при закрытии нового окна.

например.

window._popupClosing = function(data){ this._myData = data; console.log('done....', this._myData); };

Откройте ваше всплывающее окно.

например.

var w = window.open('https://google.com','_blank');

Установите таймер, чтобы проверить, было ли окно закрыто. Затем запустите свою функцию.

например.

var timer = setInterval(function(){ if(w.closed){ clearInterval(timer); window.parent._popupClosing(window.location.href); } }, 1000);

Не забудьте закрыть новое всплывающее окно из скрипта во всплывающем окне, используя

window.close();

Объединяя эти

window._myData = {}; window._popupClosing = function(data){ this._myData = data; console.log('done....', this._myData); }; var w = window.open('https://google.com','_blank'); var timer = setInterval(function(){ if(w.closed){ clearInterval(timer); window.parent._popupClosing(window.location.href); } }, 1000);

Не забудьте закрыть новое всплывающее окно, когда вы закончите. window.close();

Если вы можете опубликовать свои данные в конечной точке, а затем извлечь данные из конечной точки с помощью функции закрытия всплывающих окон, это будет лучше, чем отправка данных между окнами. Я думаю.

Другие вопросы по тегам