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插件

+0

谢谢你的快速反应!我确实尝试过没有运气的饼干,但我可能一直在做错事。我会在星期一尝试使用你的代码,并让你知道它是如何发生的。 – jkh

+0

我尝试保存到cookie,但我有45000个字符,似乎对于cookie来说太多了。有没有其他方法可以解决这个问题? – jkh