本篇內容介紹了“JavaScript創建、更改和刪除Cookie的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Cookie是計算機上存儲在小文本文件中的數據。當Web服務器將網頁發送到瀏覽器時,連接將關閉,服務器將忘記用戶的所有內容。發明Cookie是為了解決“如何記住用戶信息”的問題:
當用戶訪問網頁時,他/她的名字可以存儲在cookie中。
下次用戶訪問該頁面時,cookie會“記住”他/她的名字。
Cookie以鍵值對形式保存,如:
username = John Doe
當瀏覽器從服務器請求網頁時,屬于該頁面的cookie將添加到請求中。這樣,服務器獲取必要的數據以“記住”有關用戶的信息。
如果您的瀏覽器已關閉本地Cookie支持,則以下示例均無效。
JavaScript可以使用document.cookie屬性創建,讀取和刪除cookie。使用JavaScript,可以像這樣創建一個cookie:
document.cookie = "username=John Doe";
您還可以添加到期日期(以UTC時間為單位)。默認情況下,在瀏覽器關閉時刪除cookie:
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";
使用path參數,您可以告訴瀏覽器cookie屬于哪個路徑。默認情況下,cookie屬于當前頁面。
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
使用JavaScript,cookie可以像這樣讀?。?/p>
var x = document.cookie;
document.cookie將返回一個字符串中的所有cookie,如:cookie1 = value; cookie2 =值; cookie3 =值;
使用JavaScript,您可以像創建cookie一樣更改cookie:
document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
舊cookie被覆蓋。
刪除cookie非常簡單。刪除cookie時,不必指定cookie值。只需將expires參數設置為傳遞日期:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
您應該定義cookie路徑以確保刪除正確的cookie。如果您未指定路徑,某些瀏覽器將不允許您刪除cookie。
document.cookie屬性看起來像普通的文本字符串。但事實并非如此。即使你將一個完整的cookie字符串寫入document.cookie,當你再次讀出它時,你只能看到它的名稱 - 值對。如果您設置了新cookie,則不會覆蓋較舊的cookie。新的cookie被添加到document.cookie,所以如果你再次閱讀document.cookie,你會得到類似的東西:cookie1 = value; cookie2 = value;
如果要查找一個指定cookie的值,則必須編寫一個JavaScript函數來搜索cookie字符串中的cookie值。
在下面的示例中,我們將創建一個存儲訪客姓名的cookie。訪問者第一次到達網頁時,將要求他/她填寫他/她的姓名。然后將名稱存儲在cookie中。下次訪問者到達同一頁面時,他/她將收到歡迎信息。在這個例子中,我們將創建3個JavaScript函數:
用于設置cookie值的函數
獲取cookie值的函數
用于檢查cookie值的函數
設置Cookie的功能
首先,我們創建一個函數將訪問者的名稱存儲在cookie變量中:
function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; }
示例說明:
上述函數的參數是cookie的名稱(cname),cookie的值(cvalue)以及cookie到期之前的天數(exdays)。該函數通過將cookiename,cookie值和expires字符串相加來設置cookie。
獲取Cookie的功能
然后,我們創建一個function返回指定cookie的值:
function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; }
功能說明:
將cookiename作為參數(cname)。使用要搜索的文本(cname +“=”)創建變量(名稱)。解碼cookie字符串,處理帶有特殊字符的cookie,例如'$'將分號上的document.cookie拆分為名為ca的數組(ca = decodingCookie.split(';'))。循環通過ca數組(i = 0; i < ca.length; i ++),并讀出每個值c = ca [i])。如果找到cookie(c.indexOf(name)== 0),則返回cookie的值(c.substring(name.length,c.length))。如果找不到cookie,則返回“”。
檢查Cookie的功能
最后,我們創建一個函數來檢查是否設置了cookie。如果設置了cookie,它將顯示問候語。如果未設置cookie,它將顯示一個提示框,詢問用戶的名稱,并通過調用setCookie函數將用戶名cookie存儲365天:
function checkCookie() { var username = getCookie("username"); if (username != "") { alert("Welcome again " + username); } else { username = prompt("Please enter your name:", ""); if (username != "" && username != null) { setCookie("username", username, 365); } } }
所有代碼都在一起實現
function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function checkCookie() { var user = getCookie("username"); if (user != "") { alert("Welcome again " + user); } else { user = prompt("Please enter your name:", ""); if (user != "" && user != null) { setCookie("username", user, 365); } } }
上面的示例checkCookie()在頁面加載時運行該函數。
“JavaScript創建、更改和刪除Cookie的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。