5

我正在编写一个 Office 加载项(以前称为 Office 应用程序)。我正在使用office.js并且在某些代码点中我想检查应用程序是在 excel(桌面软件)中运行还是在 Web 上运行(Excel Online)

就像是:

if (Office.IsRunningOnWeb){
    // Do something.
}
4

4 回答 4

4

@Mehrandvd,如果我可能会问,您需要这种区别是什么(例如,基于知道您在 Excel Online 与桌面中,您会做些什么不同)?我在 Office.js API 上工作,所以如果你能提供一些细节,我很乐意将你的反馈传达给我的团队。

如果您需要这种区别来进行特征检测,我建议您通过新的(但向后移植到所有端点)API 检查 API 需求集,Office.context.requirements.isSetSupported(name, version). 请参阅我在Neat methods to get environment (ie Office version)中的回答。

如果这是由于您在 Excel 桌面版和在线版之间看到的一些 API 差异,目标是 API 在端点之间的行为相同,因此这可能是一个错误。如果你让我知道具体情况,我可以跟进。

回覆。@Afshin 提到的答案 - 它可能有效,但请注意它不是公共 API,而是您正在测试的内部工作,所以这种方法有可能在未来停止工作......唯一公开的命名空间是Office(并且,在 2015 年 9 月发布的新 Excel 和 Word API 中,还有ExcelandWordOfficeExtension)。

希望这可以帮助!

~ 迈克尔·兹拉特科夫斯基

   Office 可扩展性团队的开发人员,MSFT

office-jsPS:以后此类问题请使用标签进行标注;这是 Microsoft Office 可扩展性团队积极关注的 stackoverflow 标记。

于 2015-09-30T16:38:19.727 回答
3

您可以使用文档类型:

if (Microsoft.Office.WebExtension.context.document instanceof OSF.DDA.ExcelWebAppDocument) {
                                    //Your app running on the web
                                }

if (Microsoft.Office.WebExtension.context.document instanceof OSF.DDA.ExcelDocument) {
                                    //Your app running in excel
                                }
于 2015-06-16T06:31:57.530 回答
2

问题是你如何做到这一点,而不是你为什么要这样做。您可能想要区分的原因有很多。请按如下方式进行此检查:

if (window.top == window) {
//the add-in is not running in Excel Online
}
else
{
//the add-in is running in Excel online
}
于 2016-05-05T13:15:29.143 回答
0

Sturb的回答启发,以下适用于 ExcelApi 1.101.12

if (window.top.window == window) {
  // Add-in is running in Excel desktop
} else {
  // Add-in is running in Excel online
}
于 2020-10-30T17:20:50.550 回答