【问题标题】:Add-in persistent settings in OSX/MacOSX/Mac 中的插件持久设置
【发布时间】:2016-12-07 13:47:15
【问题描述】:

我无法找到在 Mac 上存储 office.js 插件的持久设置的方法。

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

【问题讨论】:

    标签: ms-office office-js word-addins


    【解决方案1】:

    iOS 目前存在一个错误,导致我们无法修复这个 localStorage 问题。同时,您有两种可能的解决方法:

    Cookies

    如果您希望该设置在文档中保持不变,请使用 JavaScript cookie (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 + '"');
    

    设置

    如果您只在当前文档中保留值就足够了,您可以使用 Office 设置 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,Office 插件项目经理

    【讨论】:

    • 感谢您的快速回复!实际上,我确实尝试过使用饼干,但没有任何运气,但我可能做错了什么。我会在星期一尝试使用你的代码,然后告诉你它是怎么回事。
    • 我尝试保存到 cookie,但我有 45000 个字符,对于 cookie 来说似乎太多了。有没有其他方法可以解决这个问题?
    猜你喜欢
    • 2017-01-15
    • 2014-01-25
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多