Как сохранить cookie на всех страницах ?

xsacha

Постоялец
Регистрация
16 Июн 2015
Сообщения
115
Реакции
21
Подскажите как сохранить cookie на всех страницах форума ?
PHP:
<label>
            <input type="checkbox" id="chk1"/> воспроизведение
        </label>

<script>
    function cookieFromCheckbox()
    {
        var ch = [];
        $("#chk1").each(function(){
            var $el = $(this);
            if($el.prop("checked"))
                ch.push($el.attr("id"));
        });
        $.cookie("webzones", ch.join());
    }
    function checkboxFromCookie()
    {
        if($.cookie("webzones") == null)
            return;
        var chMap = $.cookie("webzones").split(',');
        for (var i in chMap)
            $('#'+chMap[i]).prop("checked", true);
    }
    function clearCookie()
    {
        $.cookie("webzones", null);
    }
    var checkboxCookie = $.cookie("webzones");
    if(checkboxCookie == null)
    {
        cookieFromCheckbox();
        checkboxCookie = $.cookie("webzones");
    }
    else
        checkboxFromCookie();
    $("#chk1").change(function(){
        cookieFromCheckbox();
    });
</script>
Цель такая, если человек нажал чекбокс, то значение true должно сохраниться и отображаться на всех страницах, если чекбокс не нажат, тогда значение false. В данном варианте сохраняется состояние только для той странице где было нажатие, но действие выполненное после нажатие работает на всех страницах, но отключить его нельзя.
 
Подскажите как сохранить cookie на всех страницах форума ?
PHP:
<label>
            <input type="checkbox" id="chk1"/> воспроизведение
        </label>

<script>
    function cookieFromCheckbox()
    {
        var ch = [];
        $("#chk1").each(function(){
            var $el = $(this);
            if($el.prop("checked"))
                ch.push($el.attr("id"));
        });
        $.cookie("webzones", ch.join());
    }
    function checkboxFromCookie()
    {
        if($.cookie("webzones") == null)
            return;
        var chMap = $.cookie("webzones").split(',');
        for (var i in chMap)
            $('#'+chMap[i]).prop("checked", true);
    }
    function clearCookie()
    {
        $.cookie("webzones", null);
    }
    var checkboxCookie = $.cookie("webzones");
    if(checkboxCookie == null)
    {
        cookieFromCheckbox();
        checkboxCookie = $.cookie("webzones");
    }
    else
        checkboxFromCookie();
    $("#chk1").change(function(){
        cookieFromCheckbox();
    });
</script>
Цель такая, если человек нажал чекбокс, то значение true должно сохраниться и отображаться на всех страницах, если чекбокс не нажат, тогда значение false. В данном варианте сохраняется состояние только для той странице где было нажатие, но действие выполненное после нажатие работает на всех страницах, но отключить его нельзя.
Вот ответ на твой вопрос, я даже бы сказал решение:
Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся
 
Вот ответ на твой вопрос, я даже бы сказал решение:
Да верно если посмотреть код его я и использовал, он хорошо работает на одной странице, но если передвигаться по сайту, то чекбокс где включен, где то этого состояния нет вообще, поэтому и я хотел узнать как сохранть куки глобально, чтобы везде состояние отображалось, а не только на той странице где установлен чекбокс.
 
Да верно если посмотреть код его я и использовал, он хорошо работает на одной странице, но если передвигаться по сайту, то чекбокс где включен, где то этого состояния нет вообще, поэтому и я хотел узнать как сохранть куки глобально, чтобы везде состояние отображалось, а не только на той странице где установлен чекбокс.
А куки и так привязаны к домену, а не к странице...
 
Но тем не менее в на одних страницах работают на других нет. Чекбокс пустой.
Ну значит надо отлавливать ситуацию при которой это происходит. Однозначно где-то проблема в логике
 
PHP:
$(document).ready(function() {
    var treeState = { // объект, который хранит состояния веток
        state: JSON.parse(localStorage.getItem('branchOpened')) || {},
        setOpened: function(element) {
            this.state[this._getKey(element)] = true;
            this._save();
        },
        setClosed: function(element) {
            delete this.state[this._getKey(element)];
            this._save();
        },
        isClosed: function(element) {
            return !this.state[this._getKey(element)];
        },
        _save: function() {
            localStorage.setItem('branchOpened', JSON.stringify(this.state));
        },
        _getKey: function(element) {
            var ixs = [];
            $(element).parentsUntil('ul-dropfree', 'li')
                .each(function(ix, item) {
                    ixs.unshift($(item).index());
                });
            return ixs.join(',');
        }
    };
    $(".ul-dropfree").find("li:has(ul:has(li))").prepend('<div class="drop"></div>');
    $(".ul-dropfree div.drop").click(function() {
        if ($(this).nextAll("ul").css('display') == 'none') {
            $(this).nextAll("ul").slideDown(400);
            $(this).css({
                'background-position': "-22px 0px"
            });
            // сохраняем состояние ветви
            treeState.setOpened(this);
        }
        else {
            $(this).nextAll("ul").slideUp(400);
            $(this).css({
                'background-position': "0px 0px"
            });
            // сохраняем состояние ветви
            treeState.setClosed(this);
        }
    });
    // эту часть немного переделал, чтобы скрывать только нужные ветви
    $(".ul-dropfree").find("ul").each(function(ix, branch) {
        $(branch).parent("li")
            .children("div.drop")
            .css({'background-position': "0 0"});
        if (treeState.isClosed(branch)) {
            $(branch).slideUp(400);
        }
    });
});
 
Назад
Сверху