如何正确检查主机:Office、Office Online 和 Web 浏览器
How to correctly check the host: Office, Office online and web browser
我需要检测用户是否从浏览器、Office 和 Office online 外部 访问了我的加载项 URL。 (我在网上看到过关于检测是 Excel 还是 Excel 的问题,但 两者都不是 。)
我查看了实用函数 OfficeHelpers.Utilities.host
和 OfficeHelpers.Utilities.isAddin
,但 code notes 说这些函数仅在调用 Office.initialize 后起作用。如果 URL 是从 Office 客户端外部导航到的,则情况并非如此 (?)。
所以我认为我需要执行与收到警告时所做的任何检查相同的检查:
Warning in Google Chrome
...确保 Office.initialize 不会 运行,而不是 运行 尚未 .
一个简单的用法是将用户定向到一个页面,该页面显示说明他们无法访问此内容而不将其作为加载项加载,以及有关如何加载加载项等的说明。
我试图得到的实际结果是将这两种情况处理为:
在 Office 客户端中:"GetData" 将 return 一些值并将它们写入文档。
如果从浏览器访问:"GetData" 将 return 一些值并重定向到视图以显示这些值。
目前对此没有很好的解决方案,但我同意这里有机会公开 "Office.ready" 以提供 Office.js 以某种方式加载的明确标志 - - 并且主机和平台现在已稳定确定(包括确定为稳定 "web" 和 null)。
对于Script Lab,我们使用在Office.js 上等待三秒钟,然后放弃并向用户显示一组消歧按钮的方法,要求他们选择主机。我们可能会安全地假设 "web" 在这一点上,但在我们的例子中,我们希望在任何情况下都提供消除歧义的体验,因此用户可以选择是 运行 网页片段还是查看特定于主机的片段无论如何都需要一个主机选择。
如果您想知道它是如何完成的,请参阅 https://github.com/OfficeDev/script-lab/blob/eeb4ba89a7a570cf1bb035fdd740ec7dcfb92822/src/client/app/helpers/environment.ts
中的 "initialize" 函数
我需要检测用户是否从浏览器、Office 和 Office online 外部 访问了我的加载项 URL。 (我在网上看到过关于检测是 Excel 还是 Excel 的问题,但 两者都不是 。)
我查看了实用函数 OfficeHelpers.Utilities.host
和 OfficeHelpers.Utilities.isAddin
,但 code notes 说这些函数仅在调用 Office.initialize 后起作用。如果 URL 是从 Office 客户端外部导航到的,则情况并非如此 (?)。
所以我认为我需要执行与收到警告时所做的任何检查相同的检查: Warning in Google Chrome ...确保 Office.initialize 不会 运行,而不是 运行 尚未 .
一个简单的用法是将用户定向到一个页面,该页面显示说明他们无法访问此内容而不将其作为加载项加载,以及有关如何加载加载项等的说明。
我试图得到的实际结果是将这两种情况处理为:
在 Office 客户端中:"GetData" 将 return 一些值并将它们写入文档。 如果从浏览器访问:"GetData" 将 return 一些值并重定向到视图以显示这些值。
目前对此没有很好的解决方案,但我同意这里有机会公开 "Office.ready" 以提供 Office.js 以某种方式加载的明确标志 - - 并且主机和平台现在已稳定确定(包括确定为稳定 "web" 和 null)。
对于Script Lab,我们使用在Office.js 上等待三秒钟,然后放弃并向用户显示一组消歧按钮的方法,要求他们选择主机。我们可能会安全地假设 "web" 在这一点上,但在我们的例子中,我们希望在任何情况下都提供消除歧义的体验,因此用户可以选择是 运行 网页片段还是查看特定于主机的片段无论如何都需要一个主机选择。
如果您想知道它是如何完成的,请参阅 https://github.com/OfficeDev/script-lab/blob/eeb4ba89a7a570cf1bb035fdd740ec7dcfb92822/src/client/app/helpers/environment.ts
中的 "initialize" 函数