-
cookie : 存儲數(shù)據(jù),當用戶訪問了某個網(wǎng)站(網(wǎng)頁)的時候章钾,我們就可以通過cookie來像訪問者電腦上存儲數(shù)據(jù)
- 不同的瀏覽器存放的cookie位置不一樣墙贱,也是不能通用的
- cookie的存儲是以域名形式進行區(qū)分的
- cookie的數(shù)據(jù)可以設(shè)置名字的
- 一個域名下存放的cookie的個數(shù)是有限制的,不同的瀏覽器存放的個數(shù)不一樣
- 每個cookie存放的內(nèi)容大小也是有限制的贱傀,不同的瀏覽器存放大小不一樣
我們通過document.cookie來獲取當前網(wǎng)站下的cookie的時候惨撇,得到的字符串形式的值,他包含了當前網(wǎng)站下所有的cookie府寒。他會把所有的cookie通過一個分號+空格的形式串聯(lián)起來
如果我們想長時間存放一個cookie魁衙。需要在設(shè)置這個cookie的時候同時給他設(shè)置一個過期的時間
cookie默認是臨時存儲的,當瀏覽器關(guān)閉進程的時候自動銷毀
<script>
/**
* coolie的設(shè)置與調(diào)用
*/
document.cookie = "username='小明'"
document.cookie = "age='15'"
console.log(document.cookie) //返回的是一個字符串形式的數(shù)據(jù)
/**
* 設(shè)置cookie保存時間
*/
var oDate = new Date()
oDate.setDate(oDate.getDate() + 7) //設(shè)置保存的時間
//由于cookie保存的是字符串格式的時間椰棘,所以進行轉(zhuǎn)換菠隆;oDate.toCMTString()不贊成使用,并且由oDate.toUTCString()取代搭盾,所以返回的格式和內(nèi)容均相同
document.cookie = "username='小紅';expires=" + oDate.toUTCString()
/**
* 關(guān)于編碼
*/
// document.cookie = "username='小明\n123'" 無法識別\n所以最好進行編碼操作
document.cookie = "username=" + encodeURI('小剛\n123') //encodeURI進行編碼
console.log(decodeURI(document.cookie) //decodeURI進行解碼
/**
* 創(chuàng)建保存cookie組件次伶,方便調(diào)用:
*/
function Cookie() {
}
Cookie.prototype = {
setCookie: function (key, value, t) {
var oDate = new Date()
oDate.setDate(oDate.getDate() + t)
document.cookie = key + "=" + encodeURI(value) + ";expires" + oDate.toUTCString()
},
getCookie: function (key) {
var arr = document.cookie.split("; ")
return this.formatData(arr, key)
},
removeCookie: function (key, value, t) {
this.setCookie(key, value, t)
},
formatData: function (arr, key) {
var prev
var _this = this
arr.forEach(function (item, idx) {
var arr = item.split("=")
if (arr[0] === key) {
// console.log("arr[1]:",decodeURI(arr[1]))
prev = decodeURI(arr[1])
}
})
return prev
}
}
var c = new Cookie()
c.setCookie("username", "小明", 5)
console.log(c.getCookie("username"))
c.removeCookie("username", "", -1)
console.log("remove:", c.getCookie("username"))
</script>