Я разрабатываю надстройку Word и использую «ExecuteFunction» для запуска обновления локального хранилища.Затем у меня есть прослушиватель объекта окна, который прослушивает изменения в локальном хранилище.
Функция сработала, а локальное хранилище обновлено.Однако прослушиватель событий не запускается в настольной версии Word для Windows.
В файле функций (т. Е. "FunctionFile" в манифесте) код:
(() => {
Office.initialize = () => {
window['logout'] = (event: Office.AddinCommands.Event) => {
const localStorageKey = 'local-storage-key';
let localStorageData = localStorage.getItem(localStorageKey);
if (localStorageData) {
localStorageData = JSON.parse(localStorageData);
localStorageData['isLoggedOut'] = true;
localStorage.setItem(localStorageKey , JSON.stringify(localStorageData));
}
event.completed();
};
};
})();
Затем в точке входа для приложения код:
window.addEventListener('load', () => {
window.addEventListener('storage', () => {
try {
const localStorageKey = 'local-storage-key';
const localStorageState = localStorage.getItem(localStorageKey);
// perform some action on local storage update
} catch (error) {
console.log(error);
}
});
});
Код работает в Word Online, а также в версии Word для Mac.Он не работает в настольной версии Word в Windows - функция logout
выполняется, но прослушиватель событий storage
никогда не запускается.
Я подозреваю, что прослушиватель событий окна не работает должным образом вIE11 / Edge - например, iframe приложения может не воспринимать событие, вызванное iframe файла функции, или что-то в этом роде.
Существует ли альтернативный / лучший способ передачи команды, выполняемой функциейв файле манифеста и приложения?
Спасибо,
Морган