OSX/Mac 中的插件持久设置

Posted

技术标签:

【中文标题】OSX/Mac 中的插件持久设置【英文标题】:Add-in persistent settings in OSX/Mac 【发布时间】:2016-12-07 13:47:15 【问题描述】:

我无法找到在 Mac 上存储 office.js 插件的持久设置的方法。

在 Windows 上,localStorage 完美运行,因为它保存了在关闭和打开 Word 时仍然存在的设置。

在 Mac 上,localStorage 不会持续关闭和打开 Word,甚至不会通过刷新或关闭和打开加载项。

这是一个简单的代码示例:

var settingString = 'mySetting';
var oldValue = localStorage.getItem(settingString);
write('oldValue: "' + oldValue + '"');
var d = new Date();
var newValue = d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
localStorage.setItem(settingString, newValue);
write('newValue: "' + newValue + '"');

【问题讨论】:

【参考方案1】:

ios 目前存在一个错误,导致我们无法修复这个 localStorage 问题。同时,您有两种可能的解决方法:

Cookies

如果您希望该设置在文档中保持不变,请使用 javascript cookie (w3schools doc) 直到错误得到修复:

var settingString = 'mySetting';
var oldValue;
var myCookies = document.cookie.split(';');
for(var i = 0;i < myCookies.length;i++)
    var myCookie = myCookies[i].trim();
    if(myCookie.indexOf(settingString + "=") == 0)
        oldValue = myCookie.substring(settingString + 1,myCookie.length);
    

write('oldValue: "' + oldValue + '"');
var d = new Date();
var newValue = d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
var expiry = d.setTime(d.getTime() + (14 * 86400000)); // # milliseconds in a day
document.cookie = settingString + "=" + newValue + "; expires=" + expiry.toGMTString();
write('newValue: "' + newValue + '"');

设置

如果您只在当前文档中保留值就足够了,您可以使用 Office 设置 API (Office.js Settings object doc):

var settingString = 'mySetting';
var oldValue = Office.context.Settings.get(settingString);
write('oldValue: "' + oldValue + '"');
var d = new Date();
var newValue = d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
Office.context.Settings.set(settingString, newValue);
Office.context.Settings.saveAsync(function(asyncResult)
    write('newValue: "' + newValue + '"');
);

-Michael Saunders,Office 插件项目经理

【讨论】:

感谢您的快速回复!实际上,我确实尝试过使用饼干,但没有任何运气,但我可能做错了什么。我会在星期一尝试使用你的代码,然后告诉你它是怎么回事。 我尝试保存到 cookie,但我有 45000 个字符,对于 cookie 来说似乎太多了。有没有其他方法可以解决这个问题?

以上是关于OSX/Mac 中的插件持久设置的主要内容,如果未能解决你的问题,请参考以下文章

如何持久化docker中的环境变量

sh 从osx mac中删除phpsotrm

如何使用 Terraform 为 Elastic Beanstalk 中的 EC2 实例设置 EBS 根卷以持久保存

源码级别解读 mybatis 插件

源码级别解读Mybatis插件

从 Grails 中的 Cobertura 报告中排除插件