如何判断一个Office Add-in是Excel下的运行还是Excel在线?
How to determine if an Office Add-in is running under Excel or Excel Online?
我正在编写 Office 加载项(以前称为 Apps for Office)。我正在使用 office.js
并且在某些代码点我想检查该应用程序是 excel(桌面软件)中的 运行 还是网络上的 运行(Excel在线)
类似于:
if (Office.IsRunningOnWeb){
// Do something.
}
您可以使用文档类型:
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 在线与桌面,你会做什么不同)?我在 Office.js API 工作,所以如果你能提供一些具体细节,我很乐意将你的反馈反馈给我的团队。
如果您需要这种区别来进行特征检测,我建议您通过新的(但向后移植到所有端点)API、[=10= 检查 API 要求集].请在 .
查看我的回答
如果是由于您在 Excel 桌面版与在线版本之间看到的一些 API 差异,目标是 API 在端点上表现相同,所以这可能是一个错误。如果你告诉我具体情况,我可以跟进。
回复。 @Afshin 提到的答案 - 它可能有效,但请注意它不是 public API 而是你正在测试的内部工作原理,所以这种方法有可能会停止在未来工作......唯一的 publically-exposed 命名空间是 Office
(并且,与 new Excel and Word APIs released in Sept. 2015,还有 Excel
和 Word
和 OfficeExtension
).
希望对您有所帮助!
~ Michael Zlatkovsky
Office 可扩展性团队的开发人员,MSFT
PS:以后此类问题请使用office-js
标签;这是 Microsoft 的 Office 可扩展性团队积极关注的 Whosebug 标签。
问题是你怎么做,而不是你为什么要这样做。您可能想要与众不同的原因有很多。按如下方式输入此支票:
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
}
我正在编写 Office 加载项(以前称为 Apps for Office)。我正在使用 office.js
并且在某些代码点我想检查该应用程序是 excel(桌面软件)中的 运行 还是网络上的 运行(Excel在线)
类似于:
if (Office.IsRunningOnWeb){
// Do something.
}
您可以使用文档类型:
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 在线与桌面,你会做什么不同)?我在 Office.js API 工作,所以如果你能提供一些具体细节,我很乐意将你的反馈反馈给我的团队。
如果您需要这种区别来进行特征检测,我建议您通过新的(但向后移植到所有端点)API、[=10= 检查 API 要求集].请在
如果是由于您在 Excel 桌面版与在线版本之间看到的一些 API 差异,目标是 API 在端点上表现相同,所以这可能是一个错误。如果你告诉我具体情况,我可以跟进。
回复。 @Afshin 提到的答案 - 它可能有效,但请注意它不是 public API 而是你正在测试的内部工作原理,所以这种方法有可能会停止在未来工作......唯一的 publically-exposed 命名空间是 Office
(并且,与 new Excel and Word APIs released in Sept. 2015,还有 Excel
和 Word
和 OfficeExtension
).
希望对您有所帮助!
~ Michael Zlatkovsky
Office 可扩展性团队的开发人员,MSFT
PS:以后此类问题请使用office-js
标签;这是 Microsoft 的 Office 可扩展性团队积极关注的 Whosebug 标签。
问题是你怎么做,而不是你为什么要这样做。您可能想要与众不同的原因有很多。按如下方式输入此支票:
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
}