Office.js displayIialogAsync在IE上的在线单词中无法正常工作

时间:2018-01-23 13:18:36

标签: javascript internet-explorer office-js word-addins

我正在制作一个单词网络插件,大部分已完成,并且在2016/2013办公室工作正常,并在Chrome,edge和firefox上联机。但是我遇到了在IE 11上在线运行它的问题。

用户使用azure活动目录帐户登录应用程序,该帐户通过使用Office.context.ui.displayDialogAsync方法的弹出窗口完成。

正如我所说,除了IE上的在线词语之外,其他地方都可以正常工作。

据我所知,问题是在IE上,在弹出窗口中它并不被视为有效的办公环境,所以office.js没有正确初始化。似乎永远不会调用Office.initialize,如果手动初始化我的应用程序,那么当弹出窗口尝试通过Office.context.ui.messageParent通过Unable to get property messageParent of undefined or null reference消息与主窗口进行通信时会出现错误:

同样支持这一点的是,当我用OfficeHelpers.Utilities.host检查主机类型时,在chrome或edge的弹出窗口中显示" WORD"它在IE上显示" WEB",这似乎意味着永远不会调用Office.initialize并且Office.context.ui保留为空?

任何人都可以建议我是否遗漏了某些东西,或者这是office.js中的某种错误?

我尝试使用来自https://appsforoffice.microsoft.com/lib/1/hosted/office.js的office js以及最新的npm包,两者都是相同的。

编辑:对displayDialogAsync如何工作进行了一些调查后,我可以看到,当它创建新窗口时,它会捕获当前上下文,例如Word|Web|16.00|EN-US|<some guid>。这似乎无处不在,但在IE中,它确实可以在IE中打开常规页面的对话框时工作,但是当我们登录AD时,它必须转到AD登录页面然后重定向回来,这是这个值似乎的地方丢失(在IE中)。

1 个答案:

答案 0 :(得分:1)

我看到的特殊问题(导航后状态未保存在IE中)是由于我的网络应用程序在本地运行而IE将localhost视为常规网站的不同安全区域(例如AD登录页面),导致状态在它们之间转换时丢失。

我通过在Intranet下取消选中这些框来实现它(因此localhost属于常规Internet规则)

enter image description here