cookie和localStorage創(chuàng)建歡迎信息

兩種表達(dá)歡迎信息(當(dāng)用戶首次登錄網(wǎng)站時(shí)许赃,存儲(chǔ)用戶輸入的名稱,在第二次進(jìn)入網(wǎng)站時(shí)馆类,根據(jù)存儲(chǔ)的信息歡迎用戶)的方式混聊。

1. localStorage創(chuàng)建歡迎信息

首先在HTML頁(yè)面中創(chuàng)建基本的信息:

<h1>Welcome</h1>
<button>Change user</button>

一級(jí)標(biāo)簽中的內(nèi)容是用來存儲(chǔ)歡迎信息,按鈕是用戶用來更換用戶名乾巧。
在JavaScript部分中的代碼如下:

var myHeading = document.querySelector('h1');//獲取到h1元素
var myButton = document.querySelector('button');//獲取到button元素

//獲取用戶名的方法
function SetUserName(){
    var myName = prompt('Please enter your name');//通過彈出框使用戶輸入用戶名
    localStorage.setItem('name',myName);//將用戶輸入的用戶名傳給‘name’參數(shù)
    myHeading.innerHTML = 'Welcome '+myName;//將歡迎信息顯示在頁(yè)面中
}

//判斷用戶是否初次進(jìn)入網(wǎng)站
if(!localStorage.getItem('name')){
    SetUserName();//如果不能獲取到用戶名句喜,證明初次進(jìn)入網(wǎng)站,從而調(diào)用獲取用戶名的方法
}else{
    var storedName = localStorage.getItem('name');
    myHeading.innerHTML = 'Welcome '+ storedName;//如果獲取到用戶名沟于,直接顯示歡迎信息
}

myButton.onclick = function(){
    SetUserName();//用戶點(diǎn)擊按鈕更改用戶名
}

2. cookie創(chuàng)建歡迎信息

cookie 是存儲(chǔ)于訪問者的計(jì)算機(jī)中的變量咳胃。每當(dāng)同一臺(tái)計(jì)算機(jī)通過瀏覽器請(qǐng)求某個(gè)頁(yè)面時(shí),就會(huì)發(fā)送這個(gè) cookie旷太。你可以使用 JavaScript 來創(chuàng)建和取回 cookie 的值展懈。

創(chuàng)建cookie和使用localStorage的方法大致相同,創(chuàng)建cookie的主要代碼如下:

<body onLoad="checkCookie()"></body>
function getCookie(c_name)
{
    if (document.cookie.length>0)
    { 
    c_start=document.cookie.indexOf(c_name + "=")
    if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
    }
    return ""
}

function setCookie(c_name,value,expiredays)
{
    var exdate=new Date()
    exdate.setDate(exdate.getDate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : "; expires="+exdate.toGMTString())
}
    
function checkCookie()
{
    username=getCookie('username')
    if (username!=null && username!="")
      {alert('Welcome again '+username+'!')}
    else 
      {
      username=prompt('Please enter your name:',"")
      if (username!=null && username!="")
        {
        setCookie('username',username,365)
        }
      }
}

接下來對(duì)以上代碼進(jìn)行逐步解析供璧。
假設(shè)一名新用戶第一次進(jìn)入網(wǎng)站存崖,在執(zhí)行checkCookie方法的時(shí)候?qū)?huì)走else代碼塊中的部分,網(wǎng)頁(yè)會(huì)顯示對(duì)話框讓用戶輸入姓名睡毒。

function checkCookie()
{
    username=getCookie('username')
    if (username!=null && username!="")
      {alert('Welcome again '+username+'!')}
    else 
      {
      username=prompt('Please enter your name:',"")
      if (username!=null && username!="")
        {
        setCookie('username',username,365)
        }
      }
}

用戶輸入不為空的用戶名以后執(zhí)行setCookie方法来惧,并傳入三個(gè)參數(shù),分別是cookie名稱演顾,值以及過期天數(shù)」┎螅現(xiàn)將天數(shù)轉(zhuǎn)化為有效的日期隅居,然后將這三個(gè)天數(shù)存入document.cookie對(duì)象。

function setCookie(c_name,value,expiredays)
{
    var exdate=new Date()
    exdate.setDate(exdate.getDate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : "; expires="+exdate.toGMTString())
}

當(dāng)用戶第二次進(jìn)入網(wǎng)站的時(shí)候會(huì)執(zhí)行g(shù)etCookie方法趁曼。首先檢查 document.cookie 對(duì)象中是否存有 cookie军浆。假如 document.cookie 對(duì)象存有某些 cookie,那么會(huì)繼續(xù)檢查我們指定的 cookie 是否已儲(chǔ)存挡闰。如果找到了我們要的 cookie,就返回值掰盘,否則返回空字符串摄悯。

function getCookie(c_name)
{
    if (document.cookie.length>0)
    { 
    c_start=document.cookie.indexOf(c_name + "=")
    if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
    }
    return ""
}

以上是兩種方法的區(qū)別,cookie用起來相對(duì)來講不方便愧捕,而且有很多缺點(diǎn):

(1)cookie可能被禁用奢驯。當(dāng)用戶非常注重個(gè)人隱私保護(hù)時(shí),他很可能禁用瀏覽器的cookie功能次绘;
(2)cookie是與瀏覽器相關(guān)的瘪阁。這意味著即使訪問的是同一個(gè)頁(yè)面,不同瀏覽器之間所保存的cookie也是不能互相訪問的邮偎;
(3)cookie可能被刪除管跺。因?yàn)槊總€(gè)cookie都是硬盤上的一個(gè)文件,因此很有可能被用戶刪除禾进;
(4)cookie安全性不夠高豁跑。所有的cookie都是以純文本的形式記錄于文件中,因此如果要保存用戶名密碼等信息時(shí)泻云,最好事先經(jīng)過加密處理艇拍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宠纯,隨后出現(xiàn)的幾起案子卸夕,更是在濱河造成了極大的恐慌,老刑警劉巖婆瓜,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件快集,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡勃救,警方通過查閱死者的電腦和手機(jī)碍讨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒙秒,“玉大人勃黍,你說我怎么就攤上這事≡谓玻” “怎么了覆获?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵马澈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我弄息,道長(zhǎng)痊班,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任摹量,我火速辦了婚禮涤伐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缨称。我一直安慰自己凝果,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布睦尽。 她就那樣靜靜地躺著器净,像睡著了一般。 火紅的嫁衣襯著肌膚如雪当凡。 梳的紋絲不亂的頭發(fā)上山害,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音沿量,去河邊找鬼浪慌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欧瘪,可吹牛的內(nèi)容都是我干的眷射。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼佛掖,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼妖碉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芥被,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤欧宜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拴魄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冗茸,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年匹中,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夏漱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顶捷,死狀恐怖挂绰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情服赎,我是刑警寧澤葵蒂,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布交播,位于F島的核電站,受9級(jí)特大地震影響践付,放射性物質(zhì)發(fā)生泄漏秦士。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一永高、第九天 我趴在偏房一處隱蔽的房頂上張望隧土。 院中可真熱鬧,春花似錦命爬、人聲如沸次洼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至揖曾,卻和暖如春落萎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炭剪。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工练链, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奴拦。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓媒鼓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親错妖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绿鸣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容