2016-08-02 104 views
2

我無法找到一種方法來存儲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 + '"'); 

回答

1

的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