2016-08-02 53 views
2

Ich habe Probleme, eine dauerhafte Speicherung der Einstellungen für ein Office.js-Add-in auf dem Mac zu finden.Add-in persistente Einstellungen in OSX/Mac

Unter Windows funktioniert localStorage perfekt, da Einstellungen gespeichert werden, die beim Schließen und Öffnen von Word bestehen bleiben.

Auf Mac behält localStorage das Schließen und Öffnen von Word nicht bei, auch nicht durch Auffrischen oder Schließen und Öffnen des Add-Ins.

Hier ist ein einfaches Code-Beispiel:

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 + '"'); 

Antwort

1

iOS derzeit einen Fehler hat, die uns von der Festsetzung dieses Problems noch zu verhindern local wird. In der Zwischenzeit haben Sie zwei mögliche Lösungen:

Plätzchen

Wenn Sie die Einstellung wollen über Dokumente beibehalten werden, verwenden Sie JavaScript Cookies (w3schools doc), bis der Fehler behoben ist:

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 + '"'); 

Einstellungen

Wenn es für Sie ausreicht, den Wert nur im aktuellen Dokument beizubehalten, können Sie das verwenden Office-Einstellungen 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, Programm-Manager für Office-Add-In

+0

Vielen Dank für Ihre schnelle Antwort! Ich habe tatsächlich mit Keksen ohne Glück versucht, aber vielleicht habe ich etwas falsch gemacht. Ich werde am Montag mit deinem Code versuchen und dich wissen lassen, wie es geht. – jkh

+0

Ich habe versucht, auf Cookies zu speichern, aber ich habe so etwas wie 45000 Zeichen und es scheint, dass zu viel für Cookies ist. Gibt es einen anderen Weg, dies zu lösen? – jkh