Не удается отправить информацию в диалоговое окно; «Office.context.ui.addHandlerAync не является функцией»

#javascript #office-js #office-addins #outlook-web-addins

Вопрос:

Я пытаюсь отправить информацию в диалоговое окно в веб-надстройке Outlook.

 var url = window.location.origin '/dialog.html'
var dialog
Office.context.ui.displayDialogAsync(url2,
       function (asyncResult) {
           dialog = asyncResult.value;
           dialog.messageChild('message')     
           });
 

Который открывает диалоговое окно и пытается отправить информацию в диалоговое окно, содержащее этот Javascript:

 Office.onReady().then(()=> {
        Office.context.ui.addHandlerAsync(
            Office.EventType.DialogParentMessageReceived,
            onMessageFromParent);         
    });

function onMessageFromParent(arg){
    console.log(arg.message)
    document.getElementById('ID').style.display = 'none';
}
 

Однако это просто приводит меня к ошибке:

 TypeError: Office.context.ui.addHandlerAsync is not a function
 

Когда я бегу console.log(Office.context.ui) , я получаю:

 OSF.DDA.UI.ParentUI
[[Prototype]]:Object
closeContainer:function(){ … }
displayDialogAsync:function(){ … }
openBrowserWindow:function(){ … }
__proto__:Object
 

Как вы можете видеть, внутри нет addHandlerAync функции Office.context.ui , но в документации Microsoft говорится, что ее следует использовать.

Что здесь происходит не так? Спасибо

Комментарии:

1. Ты можешь console.log(Office.context.ui.addHandlerAsync()) ? Это не функция или она не определена?

2. Это не функция. Это просто выдает ошибку TypeError: Office.context.ui.addHandlerAsync is not a function

3. Вы это проверили? Было бы здорово знать это наверняка.

4. Да, когда я запускаю console.log(Office.context.ui.addHandlerAsync()) , это просто выдает мне эту ошибку. Как вы думаете, может ли это быть из-за того, что я использую старую версию API? Спасибо за вашу помощь

5. console.log(Office.context.ui.addHandlerAsync) возвращает значение не определено.

Ответ №1:

Я смотрю на твою надстройку. Его taskpane.html еще не завершено, и JavaScript не включен. Однако я вручную загружаю страницу диалога в отладчике и подтверждаю, что ваш код в dialogbox.html работает. Я вижу, что Office.context.ui.addHandlerAsync доступен в офисе.На готовом обработчике. Хотите исправить свою надстройку и дважды проверить, работает ли она?

Комментарии:

1. Привет, я удалил все html и js, связанные с «областью задач», так как они не нужны для этой надстройки. Надстройка отображает диалоговое окно при нажатии кнопки «Отправить», поэтому ей нужны только «команды» и «диалоговое окно», связанные с html и js. После открытия диалогового окна я хотел бы отправить информацию в диалоговое окно.