每當(dāng)我們創(chuàng)建任何應(yīng)用程序或網(wǎng)站時,我們都需要唯一地識別訪問該網(wǎng)站的計算機(jī)。唯一標(biāo)識計算機(jī)有很多好處。
例如,您正在向用戶提供一些服務(wù)。通過唯一標(biāo)識計算機(jī),當(dāng)用戶首次從新設(shè)備訪問您的網(wǎng)站時,您可以提供免費試用服務(wù)。當(dāng)用戶再次訪問時,您可以要求用戶購買高級版或訂閱您的應(yīng)用程序。
在這里,我們將使用 cookie 來識別訪問網(wǎng)站的計算機(jī)。
什么是 cookie?
Cookie 允許開發(fā)人員在瀏覽器中存儲用戶信息。例如,我們可以將數(shù)據(jù)從服務(wù)器發(fā)送到瀏覽器并存儲在瀏覽器中。因此,每當(dāng)用戶重新訪問該網(wǎng)站時,它都會從 cookie 而不是從服務(wù)器獲取數(shù)據(jù)。因此,cookie 可以提高應(yīng)用程序的性能。
在我們的例子中,當(dāng)用戶第一次訪問網(wǎng)站時,我們可以將 cookie 設(shè)置為 100 年到期。此后,每當(dāng)用戶再次訪問該網(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 進(jìn)行解碼。
第 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是否為空打印消息。
示例
在下面的示例中,每當(dāng)用戶第一次訪問網(wǎng)站時,我們都會在 cookie 中將“isValidate”設(shè)置為“true”值。每當(dāng)用戶第二次訪問該網(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ù)制
示例
在下面的示例中,每當(dāng)用戶第一次訪問該網(wǎng)站時,我們都會使用提示框詢問他們的姓名并顯示歡迎消息。此外,我們將 cookie 設(shè)置為 100 年有效期。
每當(dā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("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ù)制
用戶學(xué)會了使用 JavaScript 中的 cookie 來唯一標(biāo)識訪問網(wǎng)站的計算機(jī)。然而,cookie 有一些限制。如果用戶清除cookie,我們就無法唯一地識別該計算機(jī)。另外,我們需要將 cookie 的有效期限設(shè)置為 100 年。此外,如果用戶使用不同的瀏覽器,我們無法唯一地識別計算機(jī)。
克服上述所有問題的最佳解決方案是使用 Google Analytics。
以上就是如何在 JavaScript 中唯一標(biāo)識訪問網(wǎng)站的計算機(jī)?的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!






