Chrome и Opera по разному реагируют на код cookie

Рейтинг: 1Ответов: 1Опубликовано: 19.03.2011

Так мне толком никто и не пояснил в моём вопросе про куки, ну да ладно. Меня больше убил тот факт, что два браузера по разному реагируют на одно условие. Вот код:

<script src="js/jquery-1.5.1.min.js" type="text/javascript" language="javascript">
</script>
<script src="js/jquery.cookie.js" type="text/javascript"></script>
<script>
    $(document).ready(function(){
        num = 0;
        $.cookie('visit', num);
        if($.cookie('visit') == '0') {
            alert("Вижу вы тут первый раз");
            num = num++;
            $.cookie('visit', num);
        } else {
            alert("Вижу вы тут уже " + $.cookie('visit') + " раз!");
        }
    });
</script>

В Opere результат - "Вижу вы тут первый раз", а в Chrome "Вижу вы тут уже null раз". Как так?

Вторая задача проверит существование куки:

<script>
    $(document).ready(function(){
        $.cookie('visit','0');
        if($.cookie('visit')){
            alert("Есть Кука!")
        } else {
            alert("Нету куки!")
        }
    });
</script>

Примитивный код, но в Хроме(версии 9.0) нету кук (они включены!), а в остальных браузерах (в FF не проверял) куки есть! Для Хрома нужна какая-то особенная функция проверки существования кук?

Ответы

▲ 1Принят

Оператор "++" работает в JS как и в остальных С-подобных (если не переопределить) языках. Поэтому дополнительная операция присваивания не нужна:

num = num++;

Достаточно:

num++;

и посмотрите вот этот скрипт

<script>
    function checkNumber() {
        num = 0;
        if(num == '0')
            alert('int num can be compared with string');
        if(num == 0)
            alert('int num can be compared with int');
        if(num.toString() == '0')
            alert('(String) num can be compared with String');
        num++;
        alert(num);
    }
</script>

Поможет вам разобраться и определить, что не работает в Opera (там работают все проверки, т.к. они правильные вот ссылка на сравнение типов с помощью "=="), а что не работает в Chrome.

В моем Chrome работает замечательно. Я предлагаю не менять значение num на строковое, а приводить его к строковому.

$.cookie('visit',num.toString());