2017-02-09 91 views
1

我們在Outlook加載項中使用對話框進行身份驗證。我們在加載項中有邏輯,首先檢查對話框API支持,然後檢查加載項是否被構造 - 在這種情況下,它彈出一個新的認證窗口。最近,OWA的對話框API亮起,並引發了一些問題。OWA:對話API支持

我們修復了一些與我們執行身份驗證(我們使用ADAL.js)和初始化Office的順序有關的問題。但是,一旦我們超過這些限制,就不會出現對話框可以使用Office.context.ui.messageParent與加載項進行通信。

此外,即使加載項訂閱Microsoft.Office.WebExtension.EventType.DialogEventReceived事件,它們在對話框關閉時不會被觸發(通常關閉對話框會返回12006錯誤代碼,我們會加以注意)。

我創建了一個簡單的Outlook加載項,只打開一個對話框,並驗證它仍然無法與OWA中的加載項進行通信。我已經包含下面的代碼。

外接代碼:

Office.initialize = function (reason) { 
    $(document).ready(function() { 
     var resultArea = $("span"); 
     $("button").click(function() { 
      resultArea.text("Opening dialog"); 
      Office.context.ui.displayDialogAsync(
       window.location.origin + "/TestAddin/Dialog.html", 
       { height: 75, width: 25 }, 
       function (asyncResult) { 
        if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { 
         var dialog = asyncResult.value; 
         dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, function handleAuthDialogMessage(message) { 
          dialog.close(); 
          resultArea.text(message); 
         }); 
         dialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogEventReceived, function handleAuthDialogMessage(message) { 
          resultArea.text("Event encountered"); 
         }); 
        } else { 
         resultArea.text("Dialog failed"); 
        } 
       }); 
     }); 
    }) 
}; 

對話框代碼:

Office.initialize = function (reason) { 
    $(document).ready(function() { 
     Office.context.ui.messageParent("dialog-opened"); 
    }) 
}; 

現在我已經調整了我們的插件來先檢查,看看它是否是誣陷,(在這種情況下,打開一個新的認證窗口),然後檢查或使用對話框API。這種方法使我們能夠修復我們的生產缺陷,並重新啓用OWA認證;不過,我想在對話框正常工作或我們的加載項已修復後採取對話:)

是否有人已意識到此問題了?

---更新2/22 ---

看來,對話可現在消息的父母。不幸的是,仍然存在一個突出的錯誤,即關閉對話框不會觸發事件發送到加載項。

+0

如果您可以共享您的清單,指向加載項的Internet部署版本,則可能更容易重新生成。 –

回答

0

無法重現消息父級問題。

關於DialogEventReceived事件在對話框關閉時不會觸發 - 這是一個已知的問題,我們正在爲修復工作,但感謝您的報告!

+0

如果用戶點擊X,我們會關閉事件,但如果用戶在焦點位於對話框內的控件上時點擊ESC,則不會。這是已知問題的一部分嗎? – lgaud

+0

@Igaud check out https://stackoverflow.com/questions/46037829/no-event-is-fired-when-closing-a-dialog-via-esc這仍然是一個問題。 –