今天把javascript如何用來(lái)創(chuàng)建及存儲(chǔ)cookie復(fù)習(xí)了一下,其中的一點(diǎn)體會(huì)拿出來(lái)和大家討論,首先看一下基礎(chǔ)知識(shí):
什么是cookie
cookie 是存儲(chǔ)于訪問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器請(qǐng)求某個(gè)頁(yè)面時(shí),就會(huì)發(fā)送這個(gè) cookie。你可以使用 JavaScript 來(lái)創(chuàng)建和取回 cookie 的值。
cookie的例子
名字 cookie: 當(dāng)訪問(wèn)者首次訪問(wèn)頁(yè)面時(shí),他或她也許會(huì)填寫(xiě)他/她們的名字。名字會(huì)存儲(chǔ)于 cookie 中。當(dāng)訪問(wèn)者再次訪問(wèn)網(wǎng)站時(shí),他們會(huì)收到類(lèi)似 "Welcome John Doe!" 的歡迎詞。而名字則是從 cookie 中取回的。
密碼 cookie: 當(dāng)訪問(wèn)者首次訪問(wèn)頁(yè)面時(shí),他或她也許會(huì)填寫(xiě)他/她們的密碼。密碼也可被存儲(chǔ)于 cookie 中。當(dāng)他們?cè)俅卧L問(wèn)網(wǎng)站時(shí),密碼就會(huì)從 cookie 中取回。
日期 cookie: 當(dāng)訪問(wèn)者首次訪問(wèn)你的網(wǎng)站時(shí),當(dāng)前的日期可存儲(chǔ)于 cookie 中。當(dāng)他們?cè)俅卧L問(wèn)網(wǎng)站時(shí),他們會(huì)收到類(lèi)似這樣的一條消息:"Your last visit was on Tuesday August 11, 2005!"。日期也是從 cookie 中取回的。
下面來(lái)創(chuàng)建一個(gè)cookie的實(shí)例,如何來(lái)創(chuàng)建cookie及取出cookie。
javascript部分代碼:
//創(chuàng)建cookiefunction setCookie(name, value, expireday) { var exp = new Date(); exp.setTime(exp.getTime() + expireday*24*60*60*1000); //設(shè)置cookie的期限 document.cookie = name+"="+escape(value)+"; expires"+"="+exp.toGMTString();//創(chuàng)建cookie}//提取cookie中的值function getCookie(name) { var cookieStr = document.cookie; if(cookieStr.length > 0) { var cookieArr = cookieStr.split(";"); //將cookie信息轉(zhuǎn)換成數(shù)組 for (var i=0; i<cookieArr.length; i++) { var cookieVal = cookieArr[i].split("="); //將每一組cookie(cookie名和值)也轉(zhuǎn)換成數(shù)組 if(cookieVal[0] == name) { return unescape(cookieVal[1]); //返回需要提取的cookie值 } } }}//測(cè)試cookiefunction checkCookie() { var cookieUser = document.getElementById("cookieUser"); var userName = getCookie("userName"); if(userName) { cookieUser.innerHTML = "您好"+userName+",歡迎再次回來(lái)!"; } else { var value = prompt("請(qǐng)輸入用戶名", ""); if(value) { setCookie('userName', value, 1); } else { alert("請(qǐng)輸入用戶名!"); } }}主要在于如何提取我們需要的cookie信息,在本例的getCookie函數(shù)中主要是將cookie信息轉(zhuǎn)化成數(shù)組的方式來(lái)查找我們需要提取的cookie值。還可以通過(guò)正則表達(dá)式的方式來(lái)匹配,如下:
function getCookie(name) { var cookieStr = document.cookie; var cookieArr = cookieStr.match(new RegExp(name+"=[a-zA-Z0-9]*;$")); var cookieVal = cookieArr.split("="); if(cookieVal[0] == name) { return unescape(cookieVal[1]); }}比如在這個(gè)例子中,如果打開(kāi)瀏覽器中沒(méi)有存儲(chǔ)名為userName的cookie,則會(huì)提示用戶輸入用戶名,再次刷新頁(yè)面時(shí)則會(huì)顯示輸入的cookie值。 最后我們可以測(cè)試一下代碼:
新聞熱點(diǎn)
疑難解答
圖片精選