Jquery - загрузить данные cookie - PullRequest
       12

Jquery - загрузить данные cookie

0 голосов
/ 25 сентября 2011

Рассмотрим список миниатюр, из которых пользователь щелкает один из них, чтобы изменить фоновое изображение.Следующие сценарии позволяют пользователю выбрать фоновое изображение и применить его.

$(function() {
        $('.themes li a img').click(function() {
            var image = 'imgs/someimage.jpg';
            //Set cookie
            function setCookie(){
                $.cookie("html_img", image, {expires:7});
                var a = $.cookie('html_img');//get cookie value
                return a;
            }
       });
});

Другой скрипт с именем loadCookie.js загружает файл cookie, содержащий выбранный фон, когда пользователь посещает другую страницу:

$(function() {
        var startImage='';
        startImage = setCookie();
        $(document).ready(function(){
            $('html').css("background", startImage);
        });
    });

IE8 говорит: «объект не поддерживает это действие, строка 3»;Jquery cookie плагин установлен.Я знаю, что есть небольшая ошибка, которую я не могу найти.Приветствуется любая помощь в создании сценария.

Ответы [ 2 ]

2 голосов
/ 25 сентября 2011

Так как это ваш третий вопрос, опубликованный об этом же коде (предыдущие здесь и здесь ), вы, кажется, действительно озадачены как этим кодом, так и правильным способом использования стека. переполнение.

Вот как в целом работают куки. На одной странице вы устанавливаете куки. На следующей странице вы читаете этот файл cookie и используете его значение.

В этом примере кода вы устанавливаете cookie в первом блоке кода для фонового изображения. Пока все хорошо.

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

$(document).ready(function() {
    // initialize background from cookie
    var startImage = $.cookie("html_img");   // get cookie value
    if (startImage) {
        $(document.body).css("background-image", startImage);
    }

    // install click handler to change background
    $('.themes li a img').click(function() {
        var newBackground = 'imgs/someimage.jpg';
        $(document.body).css("background-image", newBackground);
        $.cookie("html_img", newBackground, {expires:7});  // save in cookie
   });
});

Вам также может понадобиться знать, что если вы не укажете опцию пути для файла cookie, например path: '/', файл cookie будет доступен для чтения только по текущему пути, а не где-либо еще на вашем сайте. Документация для этой библиотеки cookie jQuery: здесь .

Что касается использования stackoverflow, вам следует задать четкий вопрос о конкретном фрагменте кода, а когда респонденты запутались или дают ответы, которые не являются тем, что вы хотели спросить, вы должны уточнить свой вопрос соответствующим образом, пока не получите соответствующий ответ. , Помните, когда люди дают ответы в неправильном направлении, это, скорее всего, потому, что они не понимают, что вы спрашиваете, а не потому, что они не знают, как ответить. Вы не должны публиковать небольшие изменения одного и того же вопроса в новом вопросе.

2 голосов
/ 25 сентября 2011

Не 100% на то, что вы пытаетесь сделать, но я думаю, что это то, что вы ищете (если вы используете jquery.cookie.js):

$(function() {

    if($.cookie("html_img")) {
        $('html').css("background", $.cookie("html_img"));
    }

    $('.themes li a img').click(function() {

        var image = 'imgs/someimage.jpg';
        // var image = $(this).attr('src');

        $('html').css("background", image);

        $.cookie("html_img", image, {expires:7});

        return false;

    });

});
...