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 中的插件持久设置的主要内容,如果未能解决你的问题,请参考以下文章