Подтвердить что ты не робот

Могу ли я модифицировать или добавлять файлы cookie из JavaScript?

Каковы ограничения для обработки файлов cookie браузера с javascript? Могу ли я проверить, включены ли файлы cookie?

4b9b3361

Ответ 1

Да! Прочитайте эту замечательную статью об использовании файлов cookie с JavaScript

Вот пример выдержки кода.

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

И как проверить, включены ли они. Мне нравится ответ jldupont.

Ответ 2

Вы пишете файл cookie и пытаетесь его прочитать: таким образом вы узнаете, включены ли файлы cookie.

Ответ 3

вы можете использовать navigator.cookieEnabled, но я не уверен, что он поддерживается всеми браузерами.

Для получения дополнительной информации о файлах cookie отметьте this

Ответ 4

Можно ли проверить, разрешены ли файлы cookie?

Да, но не так легко, как вы думаете. navigator.cookieEnabled - это очень общий флаг, который не охватывает точно, при каких обстоятельствах вы можете установить cookie.

Например, возможно, что куки сеанса разрешены, но постоянные файлы cookie блокируются. Таким образом, вы действительно не узнаете, будет ли набор файлов cookie успешным, если вы не попробуете его, установив манекен document.cookie, а затем верните document.cookie, чтобы посмотреть, нужно ли это делать.

Во многих браузерах постоянный файл cookie будет переопределен в файл cookie сеанса, если постоянные файлы cookie будут отключены. Но не IE, который просто блокирует его. Вы можете попытаться обнаружить это, установив как постоянный, так и сеансовый cookie на document.cookie и увидев, какое из них сохранится.

Ответ 6

В файле W3Schools JavaScript Cookies есть ошибка. В функции setCookie эта строка:

exdate.setDate(exdate.getDate()+expiredays);

Свойства объекта JavaScript JavaScript:

getDate() - Returns the day of the month (from 1-31)  
...  
getTime() - Returns the number of milliseconds since midnight Jan 1, 1970  
... 

getDate() plus the number of days is not going to work.  I think it should be something like this:  

expire = expiredays * 1000 * 60 * 60 * 24; // convert to milliseconds  
var exdate = new Date( today.getTime() + (expire) );

Библиотеки файлов cookie на TechPatterns.com Javascript Cookie Script Get Cookie, Set Cookie, Delete Cookie Functions работают лучше (# 1 в Результаты Google не всегда лучшие).

Я протестировал код с обеих страниц в IE8, и первый из них заставил мой cookie иметь срок действия 1/1/2038 1:00 AM. Код из второго примера устанавливает дату истечения срока действия файла cookie ровно 1 день с момента проверки его, как и ожидалось.