Невозможно выполнить код из ошибки освобожденного скрипта на IE 10 - PullRequest
0 голосов
/ 06 мая 2020

У меня есть вариант использования, когда я подписываюсь / слушаю топи c на каждом iframe, теперь иногда этот iframe будет удаляться и заменяться новым iframe.

Также , У меня нет чистого способа отписаться от первоначального подписчика на удаленной iframe.

В Chrome, когда событие публикуется на удаленной подписке iframe, оно попадает в try / catch, однако в IE10 он сразу выдает ошибку «Невозможно выполнить на освобожденном скрипте»

iframe 1 (который будет удален из DOM)

subscribe("event-topic", (event) {
   try { ... }
   catch(ex) { ... }
})

iframe 2

subscribe("event-topic", (event) {
   try { ... }
   catch(ex) { ... }
})

Основное приложение

publish("event-topic");

Теперь, например, первый iframe удален и добавляется 2-й iframe. Главное приложение начинает публиковать sh событие. В результате этого publi sh вызываются обратные вызовы обоих подписчиков. Теперь, поскольку 1-го iframe больше нет, Chrome отправляет его в блок try/catch в обратном вызове подписки, а IE выдает ошибку.

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

Кто-нибудь решил это проблема или есть обходной путь, чтобы заставить IE вести себя так же, как Chrome? Как полифилл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...