2017-06-12 78 views
0

使用executeFunction功能區按鈕執行帶dialogApi的對話框時,executeFunction事件從未在Outlook for Windows中完成。 在清單中,我們調用函數「x」觸發對話框並添加事件處理程序。在Outlook for Windows中未完成Outlook Addin ExecuteFunction功能區按鈕

function x(evt) { _event = evt; ...} 
Office.context.ui.displayDialogAsync(settings, function (asyncResult) { 
_dialog = asyncResult.dialog; 
_dialog.addEventHandler(Office.EventType.DialogMessageReceived, messageHandler); 
_dialog.addEventHandler(Office.EventType.DialogEventReceived, eventHandler); 
}) 
function messageHandler() { _event.completed(); } 
function eventHandler() { _event.completed(); } 

ExecuteFunction loader

更新:
1.在清單中,有一個帶按鈕定義執行的功能。該函數接受從功能區按鈕單擊傳遞的事件參數,並調用Office.context.ui.displayDialogAsync api以打開對話框。事件參數保存到全局變量中,以便稍後在對話框事件處理程序中調用它。當點擊功能區按鈕時,對話框會正常打開,但是,當對話框關閉時,event.completed似乎不會被調用。附加的圖像運行約10-15分鐘。
2.代碼片段來自原始發佈。
3.使用的平臺是Windows 10上帶有IE 11和Edge的Outlook 2016
*奇怪的行爲:出於調試目的,每個事件處理程序都觸發任意的異步請求。在調用event.completed之前發出請求時,事件成功完成。

+0

嗨jchoi76!感謝您的發佈。您能否請添加更多信息,以便我們更好地理解您的問題: 1)您能描述一下您重現問題的確切步驟嗎? 2)你能分享你在對話框頁面中運行的代碼嗎? 3)您使用的Windows,Internet Explorer和桌面Outlook的版本是什麼? –

回答

0

我測試下面的代碼和它的作品:

var globalEvent; 

function eventHandler() 
{ 
    globalEvent.completed(true); 
} 

function dialogCallback(asyncResult) 
{ 
    _dialog = asyncResult.value; 
    _dialog.addEventHandler(Office.EventType.DialogEventReceived, eventHandler); 
} 

function ExecuteFunctionMailRead1(event) 
{ 
    globalEvent = event; 
    Office.context.ui.displayDialogAsync("http://contoso.com/", {height: 30, width: 20}, dialogCallback); 
} 

我認爲問題是,你需要做的: _dialog = asyncResult.value;代替 _dialog = asyncResult。 dialog;

相關問題