在Excel Online中,OfficeJS API不再将host_Info_参数传递给Excel加载项

时间:2016-11-19 00:50:56

标签: excel office-js

我不知道这种情况何时开始发生,或者情况发生了变化,但_host_Info param没有被框架传递到Excel Online中的Excel加载项。

它传递一个空的"et="参数,在这种情况下是正常的,因为我在开发模式下。 Excel桌面客户端仍在传递它。

这是我的加载项在Excel Online和Excel for Windows之间切换功能所必需的。

我检查了文档,但发现任何内容都没有变化。

2 个答案:

答案 0 :(得分:4)

附加到Sudhi的答案:根据Sudhi的回答中的链接,我们已经开始并且还添加了一个" shim"对于OfficeJsHelpers库中的API。

垫片仍然使用Sudhi提到的变通方法代码 - window.sessionStorage['hostInfoValue'] - 但它将它包装在一个非常类似于官方Office.js中的API中。官方API可用后,我们将切换填充码以便使用它。这种方法的优点在于,如果您通过NPM包使用OfficeJsHelpers,您所要做的就是更新您的包依赖项,并且您会突然从非官方且可能非常脆弱的变通方法转变为依赖于100的API。 %官方曝光的属性 - 所有这些都不需要更改自己的代码!同样,如果当时您决定切换回使用官方Office.js版本,API的相似性(基本上只是名称空间差异)应该使切换实现变得微不足道。

帮助程序API为 OfficeHelpers.Utilities.host (将返回WORDEXCEL等)和 OfficeHelpers.Utilities.platform (将返回IOSPCOFFICE_ONLINEMAC)。常量在OfficeHelpers.HostTypeOfficeHelpers.PlatformType中定义。

您可以在https://www.npmjs.com/package/@microsoft/office-js-helpers找到NPM包,并通过NPM安装,或使用像Unpkg这样的CDN快速试用:https://unpkg.com/@microsoft/office-js-helpers@0.4.2/dist/office.helpers.min.js

console.log(OfficeHelpers.Utilities.host);
console.log(OfficeHelpers.Utilities.platform);

if (OfficeHelpers.Utilities.platform === OfficeHelpers.PlatformType.OFFICE_ONLINE) {
    console.log("Yep, I'm on the web client");
}

我希望您发现上述有用的临时措施,并且我们确保在官方API发布后更新此StackOverflow线程(以及OfficeJsHelpers代码)。

答案 1 :(得分:1)

<强>更新

请参阅上面的答案,而不是https://stackoverflow.com/a/40963500/678505),因为现在可以使用

[旧回复:]

吉姆,你能描述一下你的情景吗?为什么需要区分在线和桌面?

对于host_info_的消失:您将无法在文档中找到它,因为host_info_在文档中从不。未记录的任何内容都是内部API,可能会根据Office.js的内部工作方式进行更改。我们非常认真地重新考虑,但仅限于 实际 官方记录的API。

如果没有API,你可以做的就是把两者分开(或者更确切地说,不依赖于其他可能随时间变化的内部工作部分)。我们之前已经在内部对此进行了讨论,但发现很难指出平台信息必要且合法的特定场景(如果您使用平台信息检查API是否可用,那么“合法”)例如,这正是我们希望你做的;我们希望你改用Office.context.requirements.isSetSupported

如果您可以分享您的方案详细信息,我可能会建议另一种方法来确定您需要的任何内容,有一个可靠的方案可以带回团队。