我正在制作一个单词网络插件,大部分已完成,并且在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中)。