jquery使用Cookie和JSON記錄用戶最近瀏覽歷史
在一些電商網(wǎng)站,有“商品瀏覽歷史記錄”這一功能,一些視頻類、小說(shuō)類的網(wǎng)站也能記錄用戶最近的瀏覽歷史。本文將使用Cookie以及JSON來(lái)講解如何實(shí)現(xiàn)這一功能。
Cookie可以用來(lái)記錄客戶端用戶ID、密碼、瀏覽過(guò)的網(wǎng)頁(yè)、停留的時(shí)間等信息,jQuery提供了一個(gè)cookie插件,能非常方便的讀寫(xiě)cookie信息。
基本流程:
1、獲取文章詳情頁(yè)面文章的標(biāo)題和頁(yè)面地址;
2、獲取瀏覽歷史cookie信息,判斷如果瀏覽歷史的cookie中已經(jīng)存在當(dāng)前文章的瀏覽記錄,則不進(jìn)行任何操作;
3、如果瀏覽歷史的cookie中不存在當(dāng)前文章的瀏覽記錄,則將當(dāng)前文章的cookie信息(文章標(biāo)題和頁(yè)面地址)寫(xiě)入瀏覽歷史的cookie信息中。寫(xiě)入的cookie信息,采用JSON數(shù)據(jù)格式,便于讀取。
4、獲取瀏覽歷史cookie信息,遍歷JSON數(shù)據(jù),分析并輸出瀏覽歷史記錄。
詳解:
1、保證要記錄瀏覽歷史的文章詳情頁(yè)面已載入jquery和cookie插件。獲取當(dāng)前文章頁(yè)面的文章標(biāo)題和頁(yè)面地址:
var art_title = $(".blog_txt h2").text(); //文章標(biāo)題 var art_url = document.URL; //頁(yè)面地址
2、獲取用戶歷史瀏覽記錄,如果已經(jīng)存在瀏覽歷史,則分析歷史記錄的cookie信息(JSON數(shù)據(jù)格式),獲取記錄長(zhǎng)度。
var canAdd = true; //初始可以插入cookie信息 var hisArt = $.cookie("hisArt"); var len = 0; if(hisArt){ hisArt = eval("("+hisArt+")"); len = hisArt.length; }
3、如果瀏覽歷史cookie信息已經(jīng)存在,則遍歷cookie信息,對(duì)比當(dāng)前文章標(biāo)題,如果cookie信息中已經(jīng)存在當(dāng)前文章標(biāo)題,則中止程序,不做任何操作。
$(hisArt).each(function(){ if(this.title == art_title){ canAdd = false; //已經(jīng)存在,不能插入 return false; } });
4、如果瀏覽歷史cookie中不存在當(dāng)前文章,則可以像瀏覽歷史cookie中插入當(dāng)前文章的cookie信息。此時(shí)需要構(gòu)建json數(shù)據(jù),將已有的瀏覽記錄cookie和當(dāng)前頁(yè)面的cookie信息已經(jīng)組合成JSON數(shù)據(jù),然后通過(guò)$.cookie()方法寫(xiě)入到瀏覽歷史記錄中。
if(canAdd==true){ var json = "["; var start = 0; if(len>4){start = 1;} for(var i=start;i<len;i++){ json = json + "{\"title\":\""+hisArt[i].title+"\",\"url\":\""+hisArt[i].url+"\"},"; } json = json + "{\"title\":\""+art_title+"\",\"url\":\""+art_url+"\"}]"; $.cookie("hisArt",json,{expires:1}); }
這樣,我們就得到了用戶的瀏覽歷史記錄cookie信息,cookie名稱為hisArt,值為JSON格式的數(shù)據(jù),如:[{"title":"article1","url":"a.html"},{"title":"article2","url":"b.html"},]
5、接下來(lái),我們就要在需要展示用戶瀏覽歷史記錄的cookie信息。在本例對(duì)應(yīng)的demo頁(yè)面,首先要獲取瀏覽歷史cookie:hisArt的值,然后分析,遍歷,組合成字符串輸出到頁(yè)面,代碼如下:
$(function(){ var json = eval("("+$.cookie("hisArt")+")"); var list = ""; for(var i=0; i<json.length;i++){ list = list + "<li><a href='"+json[i].url+"' target='_blank'>"+json[i].title+"</a></li>"; } $("#list").html(list); });
我們?cè)赿emo的頁(yè)面中放置了一個(gè)#list的列表,當(dāng)然這個(gè)頁(yè)面也需要預(yù)先載入jquery庫(kù)和cookie插件。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)cookie插件有所幫助。
- 使用JS location實(shí)現(xiàn)搜索框歷史記錄功能
- JS返回頁(yè)面時(shí)自動(dòng)回滾到歷史瀏覽位置
- 通過(guò)Jquery.cookie.js實(shí)現(xiàn)展示瀏覽網(wǎng)頁(yè)的歷史記錄超管用
- js 實(shí)現(xiàn)瀏覽歷史記錄示例
- javascript history對(duì)象(歷史記錄)使用方法(實(shí)現(xiàn)瀏覽器前進(jìn)后退)
- javascript 歷史記錄 經(jīng)常用于產(chǎn)品最近歷史瀏覽
- JavaScript入門教程(7) History歷史對(duì)象
- javascript結(jié)合Cookies實(shí)現(xiàn)瀏覽記錄歷史
- JavaScript中的History歷史對(duì)象
- javascript-hashchange事件和歷史狀態(tài)管理實(shí)例分析
相關(guān)文章
jQuery復(fù)合事件結(jié)合toggle()方法的用法示例
這篇文章主要介紹了jQuery復(fù)合事件結(jié)合toggle()方法的用法,實(shí)例分析了toggle()方法的功能、定義以及與復(fù)合事件結(jié)合使用的操作技巧,需要的朋友可以參考下2017-06-06淺析jQuery移動(dòng)開(kāi)發(fā)中內(nèi)聯(lián)按鈕和分組按鈕的編寫(xiě)
這篇文章主要介紹了jQuery移動(dòng)開(kāi)發(fā)中內(nèi)聯(lián)按鈕和分組按鈕的編寫(xiě)方法,基于jQuery mobile這個(gè)jQuery針對(duì)移動(dòng)開(kāi)發(fā)版的庫(kù),需要的朋友可以參考下2015-12-12JQuery的html(data)方法與<script>腳本塊的解決方法
在使用Jquery的html(data)方法執(zhí)行寫(xiě)數(shù)據(jù)到Dom元素時(shí)遇到一個(gè)問(wèn)題:在data參數(shù)中包含script腳本塊的時(shí)候,html(data)方法的執(zhí)行結(jié)果與預(yù)期不符2010-03-03jQuery實(shí)現(xiàn)的可編輯表格完整實(shí)例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的可編輯表格,結(jié)合完整實(shí)例形式分析了jQuery響應(yīng)鼠標(biāo)事件動(dòng)態(tài)操作頁(yè)面元素樣式與屬性的相關(guān)技巧,需要的朋友可以參考下2016-06-06Django中使用jquery的ajax進(jìn)行數(shù)據(jù)交互的實(shí)例代碼
這篇文章主要介紹了Django中使用jquery的ajax進(jìn)行數(shù)據(jù)交互的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值 ,需要的朋友可以參考下2017-10-10jQuery實(shí)現(xiàn)只允許輸入數(shù)字和小數(shù)點(diǎn)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)只允許輸入數(shù)字和小數(shù)點(diǎn)的方法,涉及jQuery針對(duì)鍵盤事件的響應(yīng)及字符串操作的相關(guān)技巧,需要的朋友可以參考下2016-03-03使用jQuery實(shí)現(xiàn)兩個(gè)div中按鈕互換位置的實(shí)例代碼
這篇文章主要介紹了使用jQuery實(shí)現(xiàn)兩個(gè)div中按鈕互換位置的實(shí)例代碼,需要的朋友可以參考下2017-09-09jQuery實(shí)現(xiàn)輸入框的放大和縮小功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)輸入框的放大和縮小功能,涉及jQuery基于事件響應(yīng)的頁(yè)面元素屬性動(dòng)態(tài)變換相關(guān)操作技巧,需要的朋友可以參考下2018-07-07