JavaScript evästeet

Evästeet mahdollistavat käyttäjän tietojen tallentamisen verkkosivuille.

Mitä evästeitä ovat?

Evästeet ovat pieniä tekstitiedostoja, jotka tallennetaan tietokoneellesi.

Kun web-palvelin lähettää sivun selaimelle, yhteys suljetaan, ja palvelin unohtaa kaikki käyttäjän tiedot.

Evästeitä kehitettiin ratkaistakseen kysymys "miten muistaa käyttäjän tiedot".

  • Kun käyttäjä vierailee verkkosivulla, hänen nimensä voidaan tallentaa evästeeseen.
  • Kun käyttäjä vierailee sivulla seuraavan kerran, eväste muistaa hänen nimensä.

Evästeet tallennetaan nimiarvo-pareina, kuten:

username = Bill Gates

Kun selain pyytää sivua palvelimelta, evästeet, jotka kuuluvat kyseiselle sivulle, lisätään pyyntöön. Näin palvelin saa tarvittavat tiedot "muistamaan" käyttäjän tiedot.

Jos selain ei tue paikallisia evästeitä, seuraavat esimerkit eivät toimi.

JavaScriptin avulla luodaan evästeitä

JavaScript voi käyttää document.cookie Ominaisuudet luoda, lukea ja poistaa evästeitä.

JavaScriptin avulla voit luoda evästeitä tällä tavalla:

document.cookie = "username=Bill Gates";

Voit myös lisätä voimassa olevan päivämäärän (UTC-aika). Oletuksena, evästeet poistetaan, kun selain suljetaan:

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC";

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC"; Käytä path

Voit kertoa selaimelle, mihin polkuun cookie kuuluu. Oletuksena cookie kuuluu nykyiseen sivuun.

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

Lue cookie JavaScriptilla

Voit lukea cookie:n JavaScriptilla tällä tavalla:

document.cookie var x = document.cookie;

Kaikki cookie:t palautetaan yhdessä merkkijonona, esimerkiksi: cookie1=value; cookie2=value; cookie3=value;

Muuta cookiea JavaScriptilla

Voit muuttaa cookiea samalla tavalla kuin luot sitä JavaScriptilla:

document.cookie = "username=Steve Jobs; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

Vanha cookie korvataan.

Poista cookie JavaScriptilla

Cookie:n poistaminen on erittäin yksinkertaista.

Poista cookie ilman arvoa: expires Aseta parametrit menneeseen päivämäärään:

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

Sinun tulisi määritellä cookie-polku varmistaaksesi oikean cookie:n poistamisen.

Jos et määritä polkua, jotkut selaimet eivät salli sinua poistaa cookiea.

Cookie-merkkijono

document.cookie Ominaisuus näyttää normaalilta tekstimerkkijonolta. Se ei ole.

Vaikka lisäät document.cookie Kirjoita täydellinen cookie-merkkijono, kun luet sen uudelleen, näet vain sen nimi-arvo-parin.

Jos asetetaan uusi cookie, vanha cookie ei korvata sitä. Uusi Cookie lisätään document.cookie:hen, joten jos luet document.cookie, saat jotain tällaista:

cookie1 = value; cookie2 = value;
     

Jos haluat löytää määritetyn cookie-arvon, sinun on kirjoitettava JavaScript-funktio, joka etsii cookie-merkkijonosta cookie-arvon.

JavaScript Cookie-esimerkki

Alla olevassa esimerkissä luomme cookieen tallentamaan vieraan nimen.

Kun vieraat saapuvat ensimmäistä kertaa sivulle, häneltä vaaditaan nimen antaminen. Tämän jälkeen nimi tallennetaan cookieen.

Kun seuraava vieraat saapuu samaan sivulle, hän saa tervetuliaismessagen.

Esimerkiksi, luomme 3 JavaScript-funktiota:

  1. Aseta cookie-arvo
  2. Hae cookie-arvo
  3. Tarkista cookie-arvon

Cookie-asetus

Ensiksi luomme funktion, joka tallentaa vieraan nimen cookie-muuttujaan:

esimerkki

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=/";
} 

Esimerkki selityksestä:

Tämän funktion parametrit ovat: cookie-nimi (cname), cookie-arvo (cvalue) ja tiedetään, kuinka monta päivää cookie vanhenee (exdays).

Lisäämällä cookie-nimen, cookie-arvon ja vanhenemismerkin, funktio asettaa cookie.

Cookie-arvon haku

Sitten luomme funktion, joka palauttaa määritetyn cookie-arvon:

esimerkki

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 "";
} 

Funktion selitys:

Lähetä cookie parametrina (cname).

Luo muuttuja (name) ja etsittävä teksti (CNAME”=”).

Decodoi cookie-merkkijonon, käsittele erikoismerkkien sisältäviä cookieja, kuten “$”.

jaetaan document.cookie semikolmilla merkeillä jaetaan nimeltä ca (decodedCookie.split(';')) taulukkoon.

lähestytään ca-taulukkoa (i = 0; i < ca.length; i++) ja luetaan jokainen arvo c = ca[i].

jos eväste löytyy(c.indexOf(name) == 0),palautetaan kyseisen evästeen arvo(c.substring(name.length, c.length))。

jos eväste ei löydy, palautetaan "".

evästeen tarkistusfunktio

lopuksi luomme funktion, joka tarkistaa onko eväste asetettu.

jos eväste on asetettu, näytetään tervehdys.

jos evästä ei ole asetettu, näytetään ilmoitusikkuna, jossa kysytään käyttäjän nimeä, ja tallennetaan käyttäjänimi evästeeksi 365 päivää, kutsumalla setCookie funktio:

esimerkki

function checkCookie() {
    var username = getCookie("username");
    if (username != "") {
        alert("Welcome again " + username);
    }
        username = prompt("Please enter your name:", "");
        if (username != "" && username != null) {
            setCookie("username", username, 365);
        }
    }
} 

yhdistetään nyt

esimerkki

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);
    }
        user = prompt("Please enter your name:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
}

Kokeile itse

Yllä oleva esimerkki suorittaa checkCookie()-funktion sivun lataamisen jälkeen.