检测Word Online是Office加载项中的主机

时间:2015-10-26 17:05:21

标签: ms-office office-addins office-js

我在任务窗格应用程序中使用Settings的{​​{1}}对象来保存文档中的一些键值对。

我的代码是这样的

 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中没有保留设置,因为当前设置对象为JavaScript API

有没有办法找到应用程序在Word Online中运行,因此可以显示消息,或者可以使用localStorage或其他东西来保存值。

修改:创建了一个uservoice请求以在Word Online中添加此请求,您可以支持此功能not supported in Word Online

修改2

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

您可以在此处键入密钥test的值,然后按保存,这会在内部调用here中的函数saveToPropertyBag(key, value)。此函数具有上述代码以保存设置,然后调用saveAsync,以便值保持在文档中。

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

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

1 个答案:

答案 0 :(得分:2)

请参阅我对Neat ways to get environment (i.e. Office version)

的回答

基本上,您应该可以致电

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

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