我目前正在构建一个 Web 应用程序,它既可以作为独立版本在浏览器中加载,也可以作为 Outlook 加载项加载。为了利用 Outlook 环境,我将 office.js 加载到我的 Web 应用程序的布局中。我想检查 web 应用程序是在 Outlook 中加载(作为加载项)还是作为浏览器中的 web 应用程序加载,以便我可以有条件地隐藏需要该应用程序在 Outlook 中运行的功能。
根据关于该主题的现有问题(在此处找到:检查 Office.js 是否在 Office 客户端之外加载)office-js-helpers 通过使用
OfficeHelpers.Utilities.host
这将根据上下文返回“outlook”或未定义,这正是我正在寻找的(需要注意的是,您首先加载 office.js,然后再加载另一个脚本以检查是否确实需要 office.js)。不幸的是,我必须支持旧版本的 Outlook,即使在 Outlook 中加载上述解决方案也会返回 undefined(比最新版本晚 2 年 - 看不到任何变化)。
有趣的是,office.js 本身(或者更确切地说是它的依赖项,o15apptofilemappingtable.js,https: //appsforoffice.microsoft.com/lib/1.1/hosted/o15apptofilemappingtable.js )已经在缩小的 JavaScript 中有一行能够找出 office.js 在 Outlook 环境之外加载并打印警告:
if(d._hostInfo.isRichClient){var e,a,u="Warning: Office.js is loaded outside of Office client",
这正是我正在寻找的东西,但我似乎无法理解如何自己实施这样的检查。我知道您可以通过使用 Office.onReady() 检查 Office.js 是否已完全加载(如此处所示:https ://docs.microsoft.com/en-us/office/dev/add-ins /develop/understanding-the-javascript-api-for-office),但我想要的是在加载 office.js 之前检查它是否真的有必要(当应用程序在 Outlook 环境之外运行时不是这样) )。
是否有人遇到过类似的情况并可能分享他的见解?