4

现在我正在使用一个很棒的 cookie 处理程序,我发现https://github.com/carhartl/jquery-cookie用于 jquery。唯一的问题是,它只会按天设置 cookie。我希望能够绕过它并在某些情况下将它们设置为秒/小时,甚至可能设置为特定时间。

查看插件,我知道我可以在哪里专门对其进行更改。但我想知道是否有办法用我自己的自定义代码扩展插件,所以当我像平常一样调用插件时,我可以使用我设置的参数。整个想法是避免侵入初始脚本,因此如果作者确实及时发布了新版本,我可以相应地对其进行更新,并且不会丢失我在升级过程中可能忘记的任何更改。

在当前插件行 44-47 中有

if (typeof options.expires === 'number') {
                var days = options.expires, t = options.expires = new Date();
                t.setDate(t.getDate() + days);
            }

我知道我可以直接破解它并做我想做的事。但这个想法再次是通过一些外部手段使用相同的脚本来完成

4

3 回答 3

1

正如其他人所建议的,我认为该插件已经支持您要添加的功能。但我要回答你的问题> I am wondering is there a means of extending the plugin with my own custom code

该插件设置$.cookie为具有三个参数 ( function (key, value, options)) 的函数。你可以这样扩展它:

// in a js file after including `jquery.cookies.js`
(function () {
    var cookie = $.cookie;
    $.cookie = function (key, value, options) {
        // TODO: add your code here

        $.cookie = cookie;
        var out = $.cookie(key, value, options);
        $.cookie = this;
        return out;
    }
}());
于 2013-04-22T03:43:35.563 回答
0

您可以将所需的秒数除以 86400。因此 30 秒使用:

$.cookie('the_cookie', 'the_value', { expires: 30/86400, path: '/' });
于 2013-04-22T03:40:39.820 回答
0

我不认为这个假设是正确的。

您可以使用

$.cookie('my-key', 'my-valye', {
    expires: new Date()
})

或者

var expires = new Date();
expires.setHours(expires.getHours() + 1);
$.cookie('my-key', 'my-valye', {
    expires: expires 
})
于 2013-04-22T03:36:30.433 回答