Я уверен, что связь работает, но я нахожу странным, что мы не можем переключаться между всплывающим окном и Excel для Mac ...
редлагают некоторые существующие темы (например,один, два, три), токДиалоговое окно не предоставляет API для отправкирегулярно сообщения со страницы хоста (например, панели задач) в диалоговое окно.
Поэтому я должен искать обходной путь: мы резервируем переменнуюmessage
вlocalStorage
, тогда мы делаем флажок Диалоговое окнорегулярно если значениеmessage
изменения. Это похоже на ручную реализацию прослушивателяlocalStorage
.
Кто-нибудь знает, как реализовать это надежным и эффективным способом (учитывая, что JavaScript не является многопоточным языком)? Я не хочу, чтобы этот слушатель был дорогим, и какой интервал нужно было бы установить?
Изменить 1:
Я попробовал StorageEvent, который предложил @PatrickEvans. Как для надстройки, так и для диалогового сайта нам необходимо реализоватьsendMessage...
иreceiveMessage...
по переменнымmessageFromHostToSite
а такжеmessageFromSiteToHost
в хранилище.
Он работал в Excel Online в Chrome и в Excel Online в IE 11. Однако он не работал в Excel 2016 для Windows 7 или 10; мы можем установить элементыlocalStorage
и вернуть их, меняяlocalStorage
кажется, ничего не увольняет.
Так может ли кто-нибудь подтвердить, что StorageEvent действительно не поддерживается в Excel 2016 для Windows 7 или 10? В этом случае я все еще ищу другие обходные пути ...
Изменить 2:
Я наконец сделал упрощенный пример: вотXML-файл, который вызываетнадстройка а такжесайт, Он хорошо работает в Excel Online, но НЕ запускает события в Excel для Windows.