OSX/Mac中的插件持久设置
问题描述:
我无法找到一种方法来存储Mac上的office.js加载项的持久设置。OSX/Mac中的插件持久设置
在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 + '"');
答
的iOS目前有问题,导致我们从尚未解决这个问题的localStorage的错误。在此期间,你有两个可能的解决办法:
饼干
如果要在文件要永久保存的设置,使用JavaScript饼干(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 + '"');
设置
如果您仅在当前文档中保留该值就足够了,则可以使用办公室设置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 + '"');
});
- 迈克尔·桑德斯,项目经理为Office插件
谢谢你的快速反应!我确实尝试过没有运气的饼干,但我可能一直在做错事。我会在星期一尝试使用你的代码,并让你知道它是如何发生的。 – jkh
我尝试保存到cookie,但我有45000个字符,似乎对于cookie来说太多了。有没有其他方法可以解决这个问题? – jkh