Может кто-нибудь объяснить эти cookie-функции JavaScript? - PullRequest
0 голосов
/ 09 августа 2010

Я новичок в javascript, и я наткнулся на эти функции, которые, я считаю, предназначены для хранения куки с именем в нем (имя равно 'value'). Я просто не понимаю этого! Функции следующие:

Изготовление печенья

function setCookie(c_name, value, expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

Проверка, хранится ли куки или нет

function getCookie(c_name) {
    if (document.cookie.length>0) {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1) {
            c_start=c_start + c_name.length+1;
            c_end=document.cookie.indexOf(";", c_start);
                if (c_end==-1) c_end=document.cookie.length;
                return unescape(document.cookie.substring(c_start,c_end));
            }
        }
    return "";
}

Есть также функция для отображения окна оповещения со значением, сохраненным в куки, но мне лень это записывать! (Я нашел это в книге)

РЕДАКТИРОВАТЬ: Я решил написать последнюю функцию, которая отображает приветственное сообщение, если cookie сохраняется, и отображает окно приглашения, если оно не установлено

Установлено? Если это так, сделайте "Foo". Если нет, сделайте "бар"

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

Ответы [ 3 ]

2 голосов
/ 09 августа 2010

Создание файла cookie:

Допустим, вы хотите установить файл cookie под названием «favourColor» со значением «синий», срок действия которого истекает через неделю.Код, который вы хотите запустить:

document.cookie="favoriteColor=blue;expires=Mon, 16 Aug 2010 23:59:59 GMT";

Функция setCookie, которую вы опубликовали, предназначена для генерации этой строки кода.Он генерирует дату на основе заданного вами периода, экранирует текст значения и объединяет результаты для создания строки document.cookie.

Единственный оставшийся хитрый бит заключается в том, что параметр expiredays является необязательным;строка, которая создает строку document.cookie, включает условие, которое проверяет, существует ли expiredays, и не включает в себя часть «expires» строки, если expiredays не существует.При этом используется «троичный оператор»: (expiredays==null) ? "" : ";expires="+exdate.toGMTString() означает «если expiredays равно нулю, используйте пустую строку, в противном случае используйте '; expires =" + exdate.toGMTString ()' ".

Второй фрагмент кодаВы разместили запрос на поиск файла cookie, выполнив поиск по набору файлов cookie (который представляет собой одну строку) по заданному имени (за которым следует =) и вернув текст с этой точки до следующей точки с запятой. Таким образом, он может выбрать «синий» изиз

"FavoritesBand = Иностранец; FavourColor = синий; FavourFood = Суши;".

2 голосов
/ 09 августа 2010

Файлы cookie документа хранятся в длинной строке cookie.Эти функции анализируют отдельные значения cookie.См. эту страницу для объяснения того, как структурирована строка.

1 голос
/ 09 августа 2010

Возможно, вы захотите прочитать немного о том, что такое куки и как они работают.

В файле cookie у вас есть name:value пары фактических данных и некоторые метаданные, такие как дата окончания срока действия файлов cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...