Вызов метода JS, предоставляемого приложением Flex, из дополнительного окна - PullRequest
0 голосов
/ 30 октября 2019

В настоящее время я работаю над старым приложением, созданным во Flex (так, по сути, Flash), которое все еще требуется для работы в IE11 (я знаю ... я знаю). Это веб-приложение (назовем его A) предоставляет метод, вызываемый из JavaScript. А также имеет кнопку, чтобы открыть новое окно браузера (назовите его B). У B есть слушатель события «beforeunload»: когда пользователь собирается закрыть B, B должен вызвать метод JS в A. Надеюсь, я все правильно объяснил. Используя Google Chrome с параметром --disable-web-security, метод, определенный в A, выполняется, и мы довольны этим. Мы используем следующую инструкцию:

window.opener.document.getElementById('flashAppID').methodName();

Проблема, с которой мы сталкиваемся, заключается в том, что IE11 выдает следующее исключение, когда B пытается выполнить метод JS в A:

   {
      [functions]: ,
      __proto__: {
         [functions]: ,
         __proto__: {
            [functions]: ,
            __proto__: null
         },
         message: "",
         name: "Error"
      },
      description: "Authorization denied",
      message: "Authorization denied",
      name: "Error",
      number: -2146828218,
      stack: "Error: Authorization denied
   at callOpener (http://domainname.ext/pageB.html:18:21)"
   }

Мы пытались отключить любые возможные ограничения безопасности в IE, но безуспешно;У кого-нибудь есть предложения, как избежать этого исключения?

Заранее спасибо.

1 Ответ

0 голосов
/ 07 ноября 2019

Проблема была вызвана следующим заданием, написанным по неизвестным причинам предыдущими разработчиками:

document.domain = "domainname.ext";

После комментирования этой строки все начало работать так, как ожидалось. Поэтому, если кто-то столкнется с той же или подобной проблемой, не перезаписывайте свойство document.domain.

...