我正在编写一个 Office 加载项(以前称为 Office 应用程序)。我正在使用office.js
并且在某些代码点中我想检查应用程序是在 excel(桌面软件)中运行还是在 Web 上运行(Excel Online)
就像是:
if (Office.IsRunningOnWeb){
// Do something.
}
我正在编写一个 Office 加载项(以前称为 Office 应用程序)。我正在使用office.js
并且在某些代码点中我想检查应用程序是在 excel(桌面软件)中运行还是在 Web 上运行(Excel Online)
就像是:
if (Office.IsRunningOnWeb){
// Do something.
}
@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 中,还有Excel
andWord
和OfficeExtension
)。
希望这可以帮助!
~ 迈克尔·兹拉特科夫斯基
Office 可扩展性团队的开发人员,MSFT
office-js
PS:以后此类问题请使用标签进行标注;这是 Microsoft Office 可扩展性团队积极关注的 stackoverflow 标记。
您可以使用文档类型:
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
}
问题是你如何做到这一点,而不是你为什么要这样做。您可能想要区分的原因有很多。请按如下方式进行此检查:
if (window.top == window) {
//the add-in is not running in Excel Online
}
else
{
//the add-in is running in Excel online
}
受Sturb的回答启发,以下适用于 ExcelApi 1.10和1.12
if (window.top.window == window) {
// Add-in is running in Excel desktop
} else {
// Add-in is running in Excel online
}