将 Word Online 检测为 Office 加载项内的主机

Detecting Word Online as the host inside Office Add-ins

我正在任务窗格应用程序中使用 JavaScript APISettings 对象来保存文档中的一些键值对。

我的代码是这样的

 Office.context.document.settings.set(key, value);
 Office.context.document.settings.saveAsync(function () {
        Toast.showToast("Setting saved", "Info saved into the document using saveAsync");
 });

我也在调用它的 saveAsync 函数来保存值。

我面临的问题是设置没有保存在 Word Online 中,因为当前设置对象是 not supported in Word Online

那么有没有办法在Word Online中发现应用程序是运行,所以可以显示一条消息,或者可以使用localStorage或其他东西来保存值。

编辑: 创建了一个用户语音请求在 Word Online 中添加这个,你可以支持这个功能 here

编辑 2

为了更好地解释问题并分享示例,我创建了一个示例插件,清单位于 here.

在这里您可以输入键 test 的值并按保存,这会在内部调用位于 StorageLibrary.js 中的函数 saveToPropertyBag(key, value)。此函数具有上述代码来保存设置,然后调用 saveAsync 以便将值保留在文档中。

现在您可以刷新浏览器或重新加载插件,然后按获取,该值将在 Excel 和 Powerpoint 中可用,但在 Word Online 中不可用。

所以我正在寻找一种检测主机 (Word Online) 的方法,以便我可以回退到其他方式来存储值,如本地存储,并向用户显示警告。

查看我对

的回答

基本上,您应该可以调用

if (Office.context.requirements.isSetSupported("Settings", 1.1)) {
    // Use Office settings
} else {
    // Fall back to local storage or something else.
}

~ Michael Zlatkovsky
Office 扩展性团队的开发人员,MSFT