如何确定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 ,还有Excel
和Word
以及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 }