每當我們創(chuàng)建任何應(yīng)用程序或網(wǎng)站時,我們都需要唯一地識別訪問該網(wǎng)站的計算機。唯一標識計算機有很多好處。
例如,您正在向用戶提供一些服務(wù)。通過唯一標識計算機,當用戶首次從新設(shè)備訪問您的網(wǎng)站時,您可以提供免費試用服務(wù)。當用戶再次訪問時,您可以要求用戶購買高級版或訂閱您的應(yīng)用程序。
在這里,我們將使用 cookie 來識別訪問網(wǎng)站的計算機。
什么是 cookie?
Cookie 允許開發(fā)人員在瀏覽器中存儲用戶信息。例如,我們可以將數(shù)據(jù)從服務(wù)器發(fā)送到瀏覽器并存儲在瀏覽器中。因此,每當用戶重新訪問該網(wǎng)站時,它都會從 cookie 而不是從服務(wù)器獲取數(shù)據(jù)。因此,cookie 可以提高應(yīng)用程序的性能。
在我們的例子中,當用戶第一次訪問網(wǎng)站時,我們可以將 cookie 設(shè)置為 100 年到期。此后,每當用戶再次訪問該網(wǎng)站時,我們都會檢查cookie是否存在,然后我們就可以說用戶重新訪問了該網(wǎng)站。
語法
用戶可以按照以下語法在網(wǎng)絡(luò)瀏覽器上設(shè)置和獲取 cookie。
// to set cookies document.cookie = "isVisited=true"; // to get cookies let ca = decodeURIComponent(document.cookie).split(';');
登錄后復(fù)制
在上面的語法中,我們將一個帶有鍵值對的字符串分配給 document.cookie 以將 cookies 設(shè)置到瀏覽器中。要獲取 cookie,我們可以簡單地使用 document.cookie,它返回 cookie 數(shù)組。
步驟
第 1 步 – 創(chuàng)建 fetchCookies() 函數(shù)。
第 2 步 – 在 fetchCookies() 函數(shù)中,使用 document.cookie 獲取數(shù)組格式的 cookie,并使用decodeURIComponent() 方法對 cookie 進行解碼。
第 3 步 – 使用 for 循環(huán)迭代數(shù)組。
步驟 4 – 對于數(shù)組的每個元素,刪除數(shù)組開頭的空格。
第 5 步 – 使用 indexOf() 方法檢查數(shù)組元素是否包含第 0th 索引處的鍵,并使用 substring() 獲取鍵值方法。
第 6 步 – 返回特定鍵的值。
第 7 步 – 創(chuàng)建 fetchCookies() 函數(shù)。在 fetchCookies() 函數(shù)中,調(diào)用 getCookie() 函數(shù)并檢查 cookie 是否存在。
第 8 步 – 如果 cookie 為空,則設(shè)置 cookie。
第9步 – 根據(jù)所需的cookie是否為空打印消息。
示例
在下面的示例中,每當用戶第一次訪問網(wǎng)站時,我們都會在 cookie 中將“isValidate”設(shè)置為“true”值。每當用戶第二次訪問該網(wǎng)站時,我們都會在 cookie 中獲取“isValidate”,因此我們會打印“歡迎回到網(wǎng)站”之類的消息。
<html> <body> <h3>Using the <i> Cookies </i> to uniquely identify computers visiting web site in JavaScript</h3> <div id = "content"> </div> <script> let content = document.getElementById('content'); // function to get cookies function fetchCookies(cname) { let key = cname + "="; let ca = decodeURIComponent(document.cookie).split(';'); for (let i = 0; i < ca.length; i++) { let part = ca[i]; while (part.charAt(0) == ' ') { part = part.substring(1); } if (part.indexOf(key) == 0) { return part.substring(key.length, part.length); } } return null; } // set cookies to uniquely identify the computer visiting the website function checkCookies() { var cookies = fetchCookies("isVisited"); if (cookies == null) { content.innerHTML = "Welcome to the website"; document.cookie = "isVisited=true"; } else { content.innerHTML = "Welcome back to the website"; } } checkCookies(); </script> </body> </html>
登錄后復(fù)制
示例
在下面的示例中,每當用戶第一次訪問該網(wǎng)站時,我們都會使用提示框詢問他們的姓名并顯示歡迎消息。此外,我們將 cookie 設(shè)置為 100 年有效期。
每當用戶第二次訪問時,我們都會顯示帶有他們姓名的歡迎消息,而不會詢問他們的姓名。
<html> <body> <h3>Using the <i> Cookies </i> to uniquely identify computers visiting web site in JavaScript</h3> <div id = "content"> </div> <script> let content = document.getElementById('content'); // function to get cookies function fetchCookies(cname) { let key = cname + "="; let ca = decodeURIComponent(document.cookie).split(';'); for (let i = 0; i < ca.length; i++) { let part = ca[i]; while (part.charAt(0) == ' ') { part = part.substring(1); } if (part.indexOf(key) == 0) { return part.substring(key.length, part.length); } } return null; } // set cookies to uniquely identify the computer visiting the website function checkCookies() { var cookies = fetchCookies("customCookie"); if (cookies == null) { let name = prompt("Enter your name", "Shubham"); document.cookie = "customCookie=" + name + "; expires=Thu, 23 Oct 2120 12:00:00 UTC; path=/"; content.innerHTML = "How are you " + name + "?"; } else { content.innerHTML = "Hey, " + cookies + " You visited our site again!"; } } checkCookies(); </script> </body> </html>
登錄后復(fù)制
用戶學會了使用 JavaScript 中的 cookie 來唯一標識訪問網(wǎng)站的計算機。然而,cookie 有一些限制。如果用戶清除cookie,我們就無法唯一地識別該計算機。另外,我們需要將 cookie 的有效期限設(shè)置為 100 年。此外,如果用戶使用不同的瀏覽器,我們無法唯一地識別計算機。
克服上述所有問題的最佳解決方案是使用 Google Analytics。
以上就是如何在 JavaScript 中唯一標識訪問網(wǎng)站的計算機?的詳細內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!