国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript BOM Cookie 的用法

Carbs / 553人閱讀

摘要:如果您的瀏覽器已關(guān)閉本地支持,則以下示例均無效。刪除時(shí),不必指定值。但事實(shí)并非如此。訪問者第一次到達(dá)網(wǎng)頁時(shí),將要求他她填寫他她的姓名。檢查的功能最后,我們創(chuàng)建一個(gè)函數(shù)來檢查是否設(shè)置了。

JavaScript Cookie

Cookie是計(jì)算機(jī)上存儲(chǔ)在小文本文件中的數(shù)據(jù)。當(dāng)Web服務(wù)器將網(wǎng)頁發(fā)送到瀏覽器時(shí),連接將關(guān)閉,服務(wù)器將忘記用戶的所有內(nèi)容。發(fā)明Cookie是為了解決“如何記住用戶信息”的問題:
當(dāng)用戶訪問網(wǎng)頁時(shí),他/她的名字可以存儲(chǔ)在cookie中。
下次用戶訪問該頁面時(shí),cookie會(huì)“記住”他/她的名字。
Cookie以鍵值對(duì)形式保存,如:

username = John Doe

當(dāng)瀏覽器從服務(wù)器請(qǐng)求網(wǎng)頁時(shí),屬于該頁面的cookie將添加到請(qǐng)求中。這樣,服務(wù)器獲取必要的數(shù)據(jù)以“記住”有關(guān)用戶的信息。
如果您的瀏覽器已關(guān)閉本地Cookie支持,則以下示例均無效。

使用JavaScript創(chuàng)建Cookie

JavaScript可以使用document.cookie屬性創(chuàng)建,讀取和刪除cookie。使用JavaScript,可以像這樣創(chuàng)建一個(gè)cookie:

document.cookie = "username=John Doe";

您還可以添加到期日期(以UTC時(shí)間為單位)。默認(rèn)情況下,在瀏覽器關(guān)閉時(shí)刪除cookie:

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";

使用path參數(shù),您可以告訴瀏覽器cookie屬于哪個(gè)路徑。默認(rèn)情況下,cookie屬于當(dāng)前頁面。

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
使用JavaScript閱讀Cookie

使用JavaScript,cookie可以像這樣讀取:

var x = document.cookie;

document.cookie將返回一個(gè)字符串中的所有cookie,如:cookie1 = value; cookie2 =值; cookie3 =值;

使用JavaScript更改Cookie

使用JavaScript,您可以像創(chuàng)建cookie一樣更改cookie:

document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

舊cookie被覆蓋。

使用JavaScript刪除Cookie

刪除cookie非常簡(jiǎn)單。刪除cookie時(shí),不必指定cookie值。只需將expires參數(shù)設(shè)置為傳遞日期:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

您應(yīng)該定義cookie路徑以確保刪除正確的cookie。如果您未指定路徑,某些瀏覽器將不允許您刪除cookie。

Cookie字符串

document.cookie屬性看起來像普通的文本字符串。但事實(shí)并非如此。即使你將一個(gè)完整的cookie字符串寫入document.cookie,當(dāng)你再次讀出它時(shí),你只能看到它的名稱 - 值對(duì)。如果您設(shè)置了新cookie,則不會(huì)覆蓋較舊的cookie。新的cookie被添加到document.cookie,所以如果你再次閱讀document.cookie,你會(huì)得到類似的東西:cookie1 = value; cookie2 = value;
如果要查找一個(gè)指定cookie的值,則必須編寫一個(gè)JavaScript函數(shù)來搜索cookie字符串中的cookie值。

JavaScript Cookie示例

在下面的示例中,我們將創(chuàng)建一個(gè)存儲(chǔ)訪客姓名的cookie。訪問者第一次到達(dá)網(wǎng)頁時(shí),將要求他/她填寫他/她的姓名。然后將名稱存儲(chǔ)在cookie中。下次訪問者到達(dá)同一頁面時(shí),他/她將收到歡迎信息。在這個(gè)例子中,我們將創(chuàng)建3個(gè)JavaScript函數(shù):

用于設(shè)置cookie值的函數(shù)

獲取cookie值的函數(shù)

用于檢查cookie值的函數(shù)

設(shè)置Cookie的功能

首先,我們創(chuàng)建一個(gè)函數(shù)將訪問者的名稱存儲(chǔ)在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=/";
}

示例說明:
上述函數(shù)的參數(shù)是cookie的名稱(cname),cookie的值(cvalue)以及cookie到期之前的天數(shù)(exdays)。該函數(shù)通過將cookiename,cookie值和expires字符串相加來設(shè)置cookie。
獲取Cookie的功能
然后,我們創(chuàng)建一個(gè)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作為參數(shù)(cname)。使用要搜索的文本(cname +“=”)創(chuàng)建變量(名稱)。解碼cookie字符串,處理帶有特殊字符的cookie,例如"$"將分號(hào)上的document.cookie拆分為名為ca的數(shù)組(ca = decodingCookie.split(";"))。循環(huán)通過ca數(shù)組(i = 0; i < ca.length; i ++),并讀出每個(gè)值c = ca [i])。如果找到cookie(c.indexOf(name)== 0),則返回cookie的值(c.substring(name.length,c.length))。如果找不到cookie,則返回“”。
檢查Cookie的功能
最后,我們創(chuàng)建一個(gè)函數(shù)來檢查是否設(shè)置了cookie。如果設(shè)置了cookie,它將顯示問候語。如果未設(shè)置cookie,它將顯示一個(gè)提示框,詢問用戶的名稱,并通過調(diào)用setCookie函數(shù)將用戶名cookie存儲(chǔ)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);
    }
  }
}

所有代碼都在一起實(shí)現(xiàn)

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()在頁面加載時(shí)運(yùn)行該函數(shù)。
更詳情的Cookie技術(shù)文章

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/106303.html

相關(guān)文章

  • JavaScript 基礎(chǔ)知識(shí) - BOM

    摘要:在中我們需要掌握定時(shí)器。定時(shí)器不是我們調(diào)用,我們只需要把函數(shù)的地址傳過去,時(shí)間到了,會(huì)自己調(diào)用。參數(shù)延時(shí)的時(shí)間單位毫秒返回定時(shí)器的,用于清除示例代碼延時(shí)定時(shí)器秒后將執(zhí)行的代碼。 showImg(https://segmentfault.com/img/remote/1460000012575821?w=1920&h=1080); 前言 本篇文章是JavaScript基礎(chǔ)知識(shí)的BOM篇,...

    garfileo 評(píng)論0 收藏0
  • JavaScript 基礎(chǔ)知識(shí) - BOM

    摘要:在中我們需要掌握定時(shí)器。定時(shí)器不是我們調(diào)用,我們只需要把函數(shù)的地址傳過去,時(shí)間到了,會(huì)自己調(diào)用。參數(shù)延時(shí)的時(shí)間單位毫秒返回定時(shí)器的,用于清除示例代碼延時(shí)定時(shí)器秒后將執(zhí)行的代碼。 showImg(https://segmentfault.com/img/remote/1460000012575821?w=1920&h=1080); 前言 本篇文章是JavaScript基礎(chǔ)知識(shí)的BOM篇,...

    Object 評(píng)論0 收藏0
  • 面試題總結(jié)

    摘要:所以個(gè)人建議將登陸信息等重要信息存放為其他信息如果需要保留,可以放在中和屬性的異同共同點(diǎn)對(duì)內(nèi)聯(lián)元素設(shè)置和屬性,可以讓元素脫離文檔流,并且可以設(shè)置其寬高。不同點(diǎn)仍會(huì)占據(jù)位置,會(huì)覆蓋文檔流中的其他元素。 說說你對(duì)閉包的理解 使用閉包主要是為了設(shè)計(jì)私有的方法和變量。閉包的優(yōu)點(diǎn)是可以避免全局變量的污染,缺點(diǎn)是閉包會(huì)常駐內(nèi)存,會(huì)增大內(nèi)存使用量,使用不當(dāng)很容易造成內(nèi)存泄露。 閉包有三個(gè)特性: 函...

    RiverLi 評(píng)論0 收藏0
  • 常見js筆試面試題(持續(xù)更新)

    摘要:相當(dāng)于繞過了瀏覽器端,自然就不存在跨域問題。三者的區(qū)別與服務(wù)器的交互數(shù)據(jù)始終在同源的請(qǐng)求中攜帶即使不需要,即在瀏覽器和服務(wù)器間來回傳遞。而和不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。和雖然也有存儲(chǔ)大小的限制,但比大得多,可以達(dá)到或更大。 本文提供最簡(jiǎn)便的解答方式,方便快速記憶,復(fù)盤,詳細(xì)答案可自己再搜一下。 js基礎(chǔ)知識(shí) 1. javascript typeof返會(huì)的數(shù)據(jù)類型有哪些 ob...

    yuxue 評(píng)論0 收藏0
  • 網(wǎng)站常見安全問題記錄(持續(xù)更新)

    摘要:由此造成即使頁面的或者設(shè)置為,也無法讓整個(gè)網(wǎng)頁緊貼瀏覽器頂部,因?yàn)樵谝婚_頭有這個(gè)隱藏字符解決辦法保存文件為建議不要用記事本打開開發(fā)文件 說明 初衷: 本文檔用于記錄所遇到的網(wǎng)站安全問題,并分類匯總,方便后期遇到類似問題,能夠快速找到解決方案,提高效率,讓程序員有更多的時(shí)間去把妹,LOL... 記錄規(guī)范: 標(biāo)題必須清晰明了,方便用戶快速查找,拒絕標(biāo)題黨; 問題放到正確的分類中; 記錄問...

    Jason_Geng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<