Eiv*_*eth 2 office-addins outlook-addin office-js
我正在使用Visual Studio项目模板创建一个新的Outlook Mail加载项,我在其中获取一个显示当前所选电子邮件属性的示例.
我添加了一个带有click事件处理程序的按钮,使用以下代码打开一个对话框:
$('#clickMeButton').click(function () {
Office.context.ui.displayDialogAsync('https://localhost/OutlookAddinTest/MessageDialog.html', {
height: 40,
width: 40,
requireHTTPS: true
}, function (result) {
_dlg = result.value;
_dlg.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, dialogMessageReceived);
});
});
Run Code Online (Sandbox Code Playgroud)
我正在使用Chrome中的Outlook网络客户端进行调试:

我不知道它是否与此错误相关,但在我点击clickMeButton之前,我可以在加载网站后看到以下错误:

osfruntime.js:13 Error while parsing the 'sandbox' attribute: 'ms-allow-popups' is an invalid sandbox flag.OSF.OsfControl._createIframeAndActivateOsfControl @ osfruntime.js:13
Run Code Online (Sandbox Code Playgroud)
该displayDialogAsync(...)函数不应该用于Outlook Mail加载项吗?这可能是一个问题,因为它会在主Outlook html页面的上下文中加载另一个html页面.但它不能在Outlook桌面客户端中运行.
错误 osfruntime.js:13 Error while parsing the 'sandbox' attribute: ms-allow-popups
来自这ms-allow-popups是一个供应商前缀的css属性.
实际上,您可能知道您的加载项存在于沙盒iframe中.为了能够做一些事情,这个沙盒iframe有一些额外的权限.例如,弹出窗口是允许的,但由于MS IE,谷歌浏览器,Firefox等不同意沙盒选项100%,他们有一些"供应商"特定选项,并且ms-allow-popups是其中之一(对于MS IE).如果您使用devtools浏览iFrame,您将找到以下选项
sandbox="allow-scripts allow-forms allow-same-origin ms-allow-popups allow-popups".
要总结错误,您可以忽略它,因为它仅由Chrome引发,因为它不了解Microsoft供应商前缀.您的代码不对此负责.
现在关于dialogAPI.不幸的是,dialogAPI仅适用于Microsoft Outlook Desktop 2016最近版本.(> = 16.0.6741.1000.).确保您的Outlook桌面是最新的.Web客户端(也称为OWA)没有dialogAPI.您将无法在使用OWA的Chrome上看到任何对话框.
我在Keluro上实现的解决方案是使用dialogAPI,当它可用时带有以下示例代码(typescript).
hasDialogApi(): boolean {
var context: any = Office.context;
try {
return context.requirements.isSetSupported('DialogAPI', '1.1');
} catch (ex) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如果dialogAPI不可用(旧的Outlook 2016,Outlook Web客户端),我们将回退到基于弹出窗口的身份验证流程.我们使用基于弹出窗口和SignalR/WebSockets的登录机制来实现这样的流程.看到这篇文章和这一篇了解更多.
结论:在撰写本文时,带有dialogAPI的Outlook桌面版本并不是很普遍,但我们看到越来越多的用户使用它们.dialogAPI对于我们的加载项开发人员至关重要,因为对于没有dialogAPI的Outlook桌面,大多数情况下基于弹出窗口的身份验证方案将无效(禁用弹出窗口,禁用Web套接字等).目前,没有dialogAPI的Outlook桌面代表了人们在Keluro上登录的最大部分.
注意:用于调试在Outlook桌面的iFrame你可能有兴趣在此.
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |