设置cookie以显示新样式表但url域名更改

时间:2014-04-24 22:42:40

标签: jquery cookies

这里是我的delima,我希望有一些技能好的人可以解决这个问题。我正在运行一个脚本,以便用户可以在网站的固定视图和完整视图之间切换。我设置cookie以记住他们的偏好,这是正常的。但是,主站点位于名为www.mysite.com的域名

所有链接页面都位于子域:pages.mysite.com

因此,当您在访问www.mysite.com时单击完整视图,然后转到pages.mysite.com上的任何页面时,您必须重新设置为完整视图,然后您的cookie才会设置该视图。

也许这就是可以做到的一切,但我想问一下是否有人知道解决方案。这是我的剧本。该脚本在主域和子域页面上设置为标题消息。

<script type="text/javascript">
    jQuery(document).ready(function ($j) {
        switch_style = {
            onReady: function () {
                this.switch_style_click();
            },
            switch_style_click: function () {
                var cookieValue = getCookie('mflSkinId');
                if (cookieValue != null) {
                    switch_style.set_style(cookieValue);
                }

                $(".skin").click(function () {
                    var id = $(this).attr("id");

                    setCookie('mflSkinId', id, 1000);
                    switch_style.set_style(id);
                });
            },
            set_style: function (id) {
                $("#switch_style").attr("href", "2014/MFL_Skins/" + id + ".css");
            }
        };
        $j().ready(function () {
            switch_style.onReady();
        });
    });

    function setCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    }

    function getCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }

    function deleteCookie(name) {
        createCookie(name, "", -1);
    }
</script>

1 个答案:

答案 0 :(得分:1)

setCookie函数中,在创建cookie时指定域选项,并将其设置为父域:

function setCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/; domain=.mysite.com";
}