2016-08-02 4 views
2

У меня возникли проблемы с поиском способа хранения постоянных настроек для надстройки office.js на Mac.Установки постоянных настроек в OSX/Mac

В окнах 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

прошивки в настоящее время есть ошибка, которая не позволяет нам устранить эту проблему 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 + '"'); 
}); 

-Michael Сондерс, менеджер программы для офиса надстроек

+0

Спасибо за быстрый ответ! Я действительно пытался с помощью куки-файлов без какой-либо удачи, но я, возможно, делал что-то неправильно. Я попробую с вашим кодом в понедельник и дам вам знать, как это происходит. – jkh

+0

Я попытался сохранить файлы cookie, но у меня есть что-то вроде 45000 символов, и кажется, что это слишком много для файлов cookie. Есть ли другой способ решить эту проблему? – jkh