2013-04-22 46 views
4

现在我正在使用一个伟大的cookie处理程序,我发现https://github.com/carhartl/jquery-cookie为jquery。唯一的问题是,它只会在几天内设置Cookie。我希望能够绕过它,并在某些情况下以秒/小时为单位设置它们,甚至可能会在特定的时间。扩展一个jQuery插件,不必触摸原始插件代码

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

在当前插件线44-47有

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

我知道我可以直接入侵到这一点,做我想要的。但这个想法再次是通过一些外部手段使用相同的脚本整体

回答

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 
}) 
0

您可以将您想通过86400的秒数所以30秒使用:

$.cookie('the_cookie', 'the_value', { expires: 30/86400, path: '/' }); 
+0

当前的cookie脚本将给出数量并将其转换为天+,即:'t.setDate(t.getDate()+ days'所以这不会工作,不幸因此希望扩展它而不需要入侵ti – chris 2013-04-22 04:35:03

+0

是的,我看过代码,例如使用更大的数字,600秒= 0.00694444天? – 2013-04-22 04:37:11

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; 
    } 
}());