2017-06-12 50 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;

相关问题