Tan*_*kin 6 javascript ms-word internet-explorer-11 office-js
由于升级到Windows 10,我们无法在Word中脱机运行Office Javascript API。我们正在运行Word版本16.0.4639.1000 64位。去年以前,我们已经使用从github OfficeDev下载的v1.1.4在Word 2016(相同版本)上成功运行了Office Javascript API。
<script type="text/javascript" src="vendor/microsoft/office-js-1.1.4/dist/office.js"></script>
Run Code Online (Sandbox Code Playgroud)
但是,以上行在Windows 10当前的Word版本中不再起作用。使用在线版本可以正常工作:
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
但不能在线运行。
我尝试从github更新到v1.1.8,然后从当前的Microsoft托管站点下载了使用联机链接时F12报告Word Taskpane正在加载的文件(office.js,en-us / office_strings.js,ariatelemetry / aria- web-telemetry.js,word-win32-16.01.js)。
我已将问题归结为office.js文件的2个脚本的DOM插入:语言环境字符串文件office_strings.js和主机文件,例如word-win32-16.01.js。
问题是IE11似乎阻止了该请求。F12网络选项卡显示每个文件的GET:对于Microsoft网站,该GET是正常的。对于本地服务器,GET显示“成功从缓存”成功200次,延迟为0ms,没有标题-文件当然不在IE缓存中。然后office.js中的脚本加载器功能将轮询一个超时时间,等待为这两个文件设置其内部标志。由于未加载它们,因此将不会调用用于设置这些标志的onload函数,并且脚本加载器最终会超时。对于主机文件(word -... js),它将引发错误“ MicrosoftAjax.js未成功加载”。当然,由于office.js没有主机文件,因此不会调用Office.initialize()函数。
在我编写的独立测试客户端的IE11中可以看到相同的问题,该问题对于文件o15apptofilemappingtable.js(由office.js加载而不是主机文件和区域设置字符串)失败。脚本加载器最终会以相同的方式以相同的错误超时。
因此,我相信这实际上是Windows 10上的Internet Explorer 11而不是officejs库的问题。我们正在运行IE11 11.228.17134.0,最高可达KB4343205。不是非常规的安全设置,没有配置受信任的站点。
有趣的部分是,如果未在运行浏览器请求的计算机上加载客户端证书,那么即使office.js本地插入DOM插入脚本也可以正常工作。我用Java 1.8 Keygen重新生成了原始证书,并验证了它的绝对SHA256。不幸的是我们的应用程序需要客户端证书。
我曾尝试从本地Intranet上的另一台计算机(相同的问题)和diff Web服务器(httpd而不是tomcat)提供office js文件,但我认为0ms等待时间和已擦除标头表明即使在Web服务器之前,IE11也会阻塞参与。
我有一个非常临时和脆弱的解决方法,其他人可能对此感兴趣:
然后,只需要一个小的js实用程序,即可在OSF._OfficeAppFactory.getLoadScriptHelper()返回的脚本加载器中设置标志。
setMsScriptLoaded(OSF.ConstantNames.OfficeStringsId); setMsScriptLoaded(OSF.ConstantNames.HostFileId);
如果有人可以提供其他解决方法,甚至提供适当的解决方案,我将不胜感激。
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |