2015-05-12 5 views
1

Прежде всего, извините, я вижу, что есть много повторений по всему вопросу о cookie, но я должен добавить этот вариант, потому что меня очень путают с различными jQuery cookie plugIns.Проблема с настройкой jQuery cookie

Я использую этот jQuery Cookie Plugin v1.4.1

Я успешно реализован следующий код на одном из моих страниц

$(document).ready(function() { 
    if ($.cookie('noFadeWorks')) { 
     // do something when initial effect on page enter has been already seen 
    } else { 
     // functions here to do the initial page enter effect 
     $.cookie('noFadeWorks', true);  
    }; 
}); 

Сейчас это в основном работает с некоторыми проблемами/вопросы пока (не домашняя страница!):

  1. Работа в ожидании в Сафари. Когда браузер закрыт и снова открывается, все начинается с 0, как ожидалось и желательно. YET: Google Chrome даже после закрытия и открытия снова имеет файл cookie. Мои функции эффекта больше не входят в игру. Здесь не нужно.

  2. Было бы здорово, если бы в некоторых точках сеанса я мог сказать обозревателю забыть о cookie и начать с 0 (с эффектом на определенной странице) снова. Я пробовал для этого: $ .removeCookie ('noFadeWorks'); на моей домашней странице, но это совсем не сработало.

Я сам объясню? Как это сделать правильно? Я также испробовал варианты истечения срока действия.

Большое спасибо!

+0

У вас нет другого окна Chrome где-нибудь? Или, может быть, приложение Chrome? Если вы хотите, чтобы Chrome удалял ваши файлы cookie, вы должны закрыть каждое окно браузера, иначе он сохранит тему, поскольку это все тот же «сеанс». – krtek

+0

Проверка pls http://stackoverflow.com/questions/10617954/chrome-doesnt-delete-session-cookies может быть связана с этой настройкой «Продолжить, когда вы остановились» – Dharmang

+0

@krtek: Да, я уверен. Чтобы удалить файл cookie в Chrome, я должен явно сделать это в меню удаления истории. С Safari, похоже, достаточно близко и снова открыть браузер. – Garavani

ответ

1

Примечание: jquery cookie v1.4.1 не принимает значение Number в качестве значения: https://github.com/js-cookie/js-cookie/tree/v1.4.1. Но это не проблема.

Я создал небольшой тестовый случай с JQuery v2.1.4 и JQuery-печенья v1.4.1 (по ссылке выше):

<!DOCTYPE html> 
<script src="jquery.js"></script> 
<script src="jquery-cookie.js"></script> 
<script> 
    $(document).ready(function() { 
     if ($.cookie('noFadeWorks')) { 
      // do something when initial effect on page enter has been already seen 
      alert("has cookie!"); 
     } else { 
      // functions here to do the initial page enter effect 
      $.cookie('noFadeWorks', 'true'); 
      alert("No cookie, creating..."); 
     }; 
    }); 
</script> 

Следующая происходит:

  1. Когда входит в первый раз он создает cookie («No cookie, create ...»)
  2. Когда вы обновляете страницу, cookie существует («есть cookie!»)
  3. Если вы закроете и откройте браузер еще раз, это говорит s («есть печенье!»), ожидаемый результат («Нет печенье, не создавая ...»), потому что в v1.4.1 он должен создать куки сессии по умолчанию, и мы не указали path: "/"

Если я использую ctrl + shift + n, чтобы запустить окно в анонимном режиме, cookie будет удален (Chrome запустит новый чистый экземпляр браузера).

Так вот моя теория:

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

Я не тестировал отключение этой функции, но интуитивно это, кажется, проблема.

Было бы здорово, если бы в некоторых точках сеанса я мог сказать браузеру забыть о cookie и начать с 0 (с эффектом на определенной странице) снова.

Вы можете указать путь, в котором вы хотите печенье быть действительным, печенье будет не можно прочитать из другого пути ближе к корню (как /):

<!DOCTYPE html> 
<script src="jquery.js"></script> 
<script src="jquery-cookie.js"></script> 
<script> 
    $(document).ready(function() { 
     if ($.cookie('noFadeWorks')) { 
      // do something when initial effect on page enter has been already seen 
      alert("has cookie!"); 
     } else { 
      // functions here to do the initial page enter effect 
      $.cookie('noFadeWorks', 'true', { 
       // It will not be visible in the root, only in pages inside the "/dir/" path 
       path: "/dir/" 
      }); 
      alert("No cookie, creating..."); 
     }; 
    }); 
</script> 

Я рекомендую попробовать последнюю версию jquery-cookie (сейчас js-cookie): https://github.com/js-cookie/js-cookie/releases

+0

Вау, спасибо за подробный ответ! Я перейду на новый плагин cookie, как вы предложили, и попробуйте свое решение как можно скорее. Надеюсь, это сработает для меня! – Garavani