Вопрос о файлах cookie jQuery

#javascript #session #cookies #detect

#javascript #сессия #файлы cookie #обнаружение

Вопрос:

Я много искал вокруг и, похоже, не могу найти ничего, что было бы достаточно простым для меня…

Я настроил веб-страницу, которая определяет, какой браузер запущен в данный момент, и если это что-то другое, чем Firefox 4.0, она отображает скрытый div, который выдает предупреждение о том, что страницу лучше всего просматривать в Firefox 4.0 или более поздней версии. Внутри этого div находится кнопка, которая скрывает onclick div.

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

Текущий код:

 <head>
    <script src="js/browsercheck.js"></script>
    <script type="text/javascript">
        // external script "browsercheck.js" checks
        // which browser/version is being used
        // check browser and display message if != Firefox 4.0 or >
        function checkBrowser() {
            var browser = BrowserDetect.browser;
            var version = BrowserDetect.version;
            if (browser == "Firefox") {
                if (version >= 4) {
                    // do nothing
                }
            } else {
                document.getElementById("coverall").style.visibility="visible";
                document.getElementById("browser").innerHTML = browser   " "   version;
            } 
        }
        // remove overlay if user commands
        function removeCoverall() {
            document.getElementById("coverall").style.visibility="hidden";
        }
    </script>
</head>
<body>
    <div id="coverall" style="visibility:hidden;">
        <p>I see you're using <span id="browser"></span>. Please use Firefox.</p>
        <button type="button" onclick="removeCoverall()">I understand</button>
    </div>
</body>
  

Комментарии:

1. Вы упоминаете jQuery в названии, но вы вообще не используете jQuery… тогда как этот вопрос связан с jQuery?

2. Не похоже, что вы вообще используете jQuery. Но если это действительно так, взгляните на плагин jquery cookies: плагины. jquery.com/project/Cookie

Ответ №1:

Используя jQuery и плагин cookie, вы можете сделать:

 функция removeCoverall() { 
 $.cookie("user_clicked_ok", "true");
 document.getElementById("комбинезон").style.visibility="скрытый";
 }

$(window).ready(функция() { 
 if ($.cookie("user_clicked_ok")=="true") {removeCoverall();}
});

Более подробная информация на: http://www.electrictoolbox.com/jquery-cookies /

Комментарии:

1. похоже, это должно сработать, но я очень новичок в JS / jQuery. Я знаю только основы, и по какой-то причине файлы cookie сбивают меня с толку. Вы не могли бы сформулировать это именно так, как это должно быть реализовано? Кажется, я не могу заставить это работать

Ответ №2:

В removeCoverall функции вы могли бы установить файл cookie, который указывает, что пользователь закрыл div, и в checkBrowser функции проверить, присутствует ли файл cookie, прежде чем показывать div.

Ответ №3:

 You seem to have the right idea, you need cookies! YUM!
  

JS

 function removeCoverall() {
    var date = new Date();
    date.setTime(date.getTime() (7*24*60*60*1000));// expires in one week
    document.cookie = 'skipNotify=1;expires=' date.toGMTString() '; path=/';
    document.getElementById("coverall").style.visibility="hidden";
}
  

Теперь извлечение файлов cookie в javascript может быть затруднено, но вы можете использовать PHP!

PHP

 function checkBrowser() {
    <?php if(isset($_COOKIE['skipNotify']))echo'return;';?>
    var browser = BrowserDetect.browser;
    var version = BrowserDetect.version;
    if (browser == "Firefox") {
        if (version >= 4) {
            // do nothing
        }
    } else {
        document.getElementById("coverall").style.visibility="visible";
        document.getElementById("browser").innerHTML = browser   " "   version;
    } 
}
  

Приведенный выше код вводит оператор return, если у пользователя есть файл cookie, поэтому вызов функции ничего не сделает.

Как упоминалось в других сообщениях, я настоятельно рекомендую вам использовать jQuery для всех ваших нужд в javascript. Он очень популярен, стабилен и полезен! Я дал свой ответ только потому, что в нем не используется какое-либо стороннее решение.