如何确定Office加载项是否在Excel或Excel Online下运行?

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

就像是:

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

您可以使用文档types:

 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 } 

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

如果你需要这个区别function检测,我build议通过一个新的(但是移植到所有端点)API, Office.context.requirements.isSetSupported(name, version)来检查API需求集。 请看看我的答案在整洁的方式来获得环境(即Office版本) 。

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

回覆。 @Afshin提到的答案 – 它可能工作,但只是意识到它不是公共API,而是你正在testing的内部工作,所以有一个机会,这种方法将在未来停止工作…只有公开曝光的名称空间是Office (并且在2015年9月发布的新的Excel和Word API ,还有ExcelWord以及OfficeExtension )。

希望这可以帮助!

〜Michael Zlatkovsky

MSFT的Office Extensibility团队开发人员

PS:请使用office-js标签来标记将来的这类问题; 这是微软Office Extensibility团队积极关注的stackoverflow标签。

问题是你怎么做,而不是你为什么要这样做。 有很多原因可能会导致差异化。 把这个检查如下:

 if (window.top == window) { //the add-in is not running in Excel Online } else { //the add-in is running in Excel online }