javascript封裝 Cookie 應(yīng)用接口
本文章記錄本人在學(xué)習(xí) Cookie 中看書理解到的一些東西,加深記憶和并且整理記錄下來(lái),方便之后的復(fù)習(xí)。
封裝函數(shù)
在默認(rèn)的情況下存取Cookie是一件比較麻煩的事情。由于Cookie是通過(guò)字符串來(lái)存儲(chǔ)信息的,所以容易導(dǎo)致在執(zhí)行賦值運(yùn)算的時(shí)需要轉(zhuǎn)換讀取信息的數(shù)據(jù)類型。而且Cookie信息的字符串本身就令人討厭,在經(jīng)常使用Cookie信息的 Web 應(yīng)用中格外的不方便。所以需要自行的封裝一個(gè)Cookie函數(shù)來(lái)提供開發(fā)效率!
定義一個(gè)函數(shù)Cookie(),這個(gè)函數(shù)能夠?qū)懭胫付ǖ腃ookie信息,刪除指定的Cookie信息,也能夠讀取指定名稱的Cookie值,另外,在該函數(shù)中還可以制定Cookie信息的有效期、有效路徑、作用域和安全性選項(xiàng)設(shè)置。完整的代碼:
var Cookie = function(name, value, options) {
// 如果第二個(gè)參數(shù)存在
if (typeof value != 'undefined') {
options = options || {};
if (value === null) {
// 設(shè)置失效時(shí)間
options.expires = -1;
}
var expires = '';
// 如果存在事件參數(shù)項(xiàng),并且類型為 number,或者具體的時(shí)間,那么分別設(shè)置事件
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString();
}
var path = options.path ? '; path=' + options.path : '', // 設(shè)置路徑
domain = options.domain ? '; domain=' + options.domain : '', // 設(shè)置域
secure = options.secure ? '; secure' : ''; // 設(shè)置安全措施,為 true 則直接設(shè)置,否則為空
// 把所有字符串信息都存入數(shù)組,然后調(diào)用 join() 方法轉(zhuǎn)換為字符串,并寫入 Cookie 信息
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // 如果第二個(gè)參數(shù)不存在
var CookieValue = null;
if (document.cookie && document.cookie != '') {
var Cookie = document.cookie.split(';');
for (var i = 0; i < Cookies.length; i++) {
var Cookie = (Cookie[i] || "").replace( /^\s+|\s+$/g, "");
if (Cookie.substring(0, name.length + 1) == (name + '=')) {
CookieValue = decodeURIComponent(Cookie.substring(name.length + 1));
break;
}
}
}
return CookieValue;
}
};
如何使用
寫入Cookie信息:
// 簡(jiǎn)單寫入一條 Cookie 信息
cookie("user", "baidu");
// 寫入一條 Cookie 信息,并且設(shè)置更多選項(xiàng)
cookie("user", "baidu", {
expires: 10, // 有效期為 10 天
path: "/", // 整個(gè)站點(diǎn)有效
domain: "www.baidu.com", // 有效域名
secure: true // 加密數(shù)據(jù)傳輸
});
2.讀取Cookie信息:
cookie("user");
3.刪除Cookie信息:
cookie("user", null);
再給大家分享一個(gè)封裝好的代碼
//向cookie寫入數(shù)據(jù)
function writeCookie(name, value, days) {
// 定義有效日期(cookie的有效時(shí)間)
var expires = "";
// 為有效日期賦值
if (days) {
var date = new Date();
//設(shè)置有效期(當(dāng)前時(shí)間+時(shí)間段)
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));//時(shí)間段為毫秒數(shù)
expires = "; expires=" + date.toGMTString();
}
// 給cookie賦值 name, value和expiration date(有效期)
document.cookie = name + "=" + value + expires + "; path=/";
}
//讀取cookie數(shù)據(jù)
function readCookie(name) {
var searchName = name + "=";
var cookies = document.cookie.split(';');
for(var i=0; i < cookies.length; i++) {
var c = cookies[i];
while (c.charAt(0) == ' ')
c = c.substring(1, c.length);
if (c.indexOf(searchName) == 0)
return c.substring(searchName.length, c.length);
}
return null;
}
//清楚所有的cookie
function eraseCookie(name) {
// 將時(shí)間設(shè)置成-1將清除存儲(chǔ)在cookie中的數(shù)據(jù)
writeCookie(name, "", -1);
}
最后,如果文章有什么錯(cuò)誤和疑問(wèn)的地方,請(qǐng)指出。與sf各位共勉!
相關(guān)文章
JS變量中有var定義和無(wú)var定義的區(qū)別以及es6中l(wèi)et命令和const命令
這篇文章主要介紹了JS變量中有var定義和無(wú)var定義的區(qū)別以及es6中l(wèi)et命令和const命令,需要的朋友可以參考下2017-02-02
BootStrap中Tab頁(yè)簽切換實(shí)例代碼
這篇文章主要介紹了BootStrap中Tab頁(yè)簽切換實(shí)例代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
JS高級(jí)運(yùn)動(dòng)實(shí)例分析
這篇文章主要介紹了JS高級(jí)運(yùn)動(dòng),結(jié)合實(shí)例形式分析了javascript運(yùn)動(dòng)框架原理、實(shí)現(xiàn)與應(yīng)用技巧,需要的朋友可以參考下2016-12-12
20個(gè)必會(huì)的JavaScript面試題(小結(jié))
這篇文章主要介紹了20個(gè)必會(huì)的JavaScript面試題(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
JS生成登錄驗(yàn)證碼的實(shí)現(xiàn)示例
本文主要介紹了JS生成登錄驗(yàn)證碼的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
原生JavaScript再網(wǎng)頁(yè)實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音功能
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)原生JavaScript再網(wǎng)頁(yè)實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-03-03
javascript實(shí)現(xiàn)圖片自動(dòng)和可控的輪播切換特效
這篇文章主要介紹了javascript實(shí)現(xiàn)圖片自動(dòng)和可控的輪播切換特效,效果非常的棒,推薦給大家,有需要的小伙伴可以參考下。2015-04-04
json屬性名為什么要雙引號(hào)(個(gè)人猜測(cè))
json屬性名為什么要雙引號(hào)?更加規(guī)范,利于解析、避免class等關(guān)鍵字引起的不兼容問(wèn)題,需要的朋友可以參考下2014-07-07
JS動(dòng)態(tài)增加刪除UL節(jié)點(diǎn)LI及相關(guān)內(nèi)容示例
這篇文章主要介紹了JS如何動(dòng)態(tài)增加刪除UL節(jié)點(diǎn)LI及相關(guān)內(nèi)容,需要的朋友可以參考下2014-05-05

