如何检测用户是否在线使用Excel或Excel桌面

我已经看到了另外一个答案,但是我不能得到它的工作,我不能再提出另一个问题。

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

我发现,Excel Online经常出现与Excel Desktop不一样的情况。 我知道它应该,但不是,所以我真的需要能够控制行为,让我走出一个热点。

我怎么知道我正在使用哪个版本的Excel。

我已经看到下面的代码,但它只是挂起我的javascript:

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 } 

这个问题是关于OSF.DDA ….这些不会出现在我的智能感知,所以我想知道,我有东西失踪?

快速的回答是,您可以检查加载项是否在iframe中运行:

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

但是,我们build议您检查您所需的实际行为或function – 这种方法对于将来的更改会更加稳健。 假设您需要Excel Online中当前不可用的特定Excel API。 然后按照指定Office主机和API要求的指导。 例如,您可以检查:

 if (Office.context.requirements.isSetSupported("ExcelApi", 1.3)){ // use the Excel 1.3 API set which currently isn't available in Excel Online but will be in the future. } 

另一种可能性是,您实际需要的是某个特定的浏览器function,可能无法使用,具体取决于用户使用何种浏览器访问Office Online。 那么我推荐的解决scheme将再次检查您需要的function,例如:

 if(window.localStorage){ // the browser that the user is accessing Excel Online with has the local storage capability that you need. } 

-Michael(PM for Office加载项)