Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Последняя выбранная закладка в куках


Автор: Bogdan1024 20.12.2007, 17:49
Есть 2 закладки: "Новости в мире" и "Новости в Украине". Как сделать так чтобы последняя вбранная закладка сохранялась в кукизах? Чтобы пользователь в следующий раз когда зайдёт на сайт увидил бы свою последний раз выбранную закладку?
Код

HotNewsTabControl = function()
{
    TabControl.call(this, "HotNews");
    HotNewsTabControl.element = name;
    
    var but0 = document.getElementById("UANews");
    if (null != but0)
    {
        var page0 = document.getElementById("UANewsView");
        if (null != page0)
        {
            var text0 = but0.innerHTML;
            this._buttons[0] = new TabButton(but0,new TabPage(page0, text0), this );
        }
    }

    var but1 = document.getElementById("WorldNews");
    if (null != but1)
    {
        var page1 = document.getElementById("WorldNewsView");
        if (null != page1)
        {
            var text1 = but1.innerHTML;
            this._buttons[1] = new TabButton(but1,new TabPage(page1, text1), this );
        }
    }
    
    
    this._activePage = this._buttons[0];
}

//class TabControl
//{
    TabControl = function(element)
    {
        this.element = element;
        this._buttons = [];
        this._activePage = null;
    }

    // Прототип класса.
    TabControl.prototype =
    {
        //Переключение страниц
        changeActiveTab : function(button)
        {
            this._activePage.get_page().hide();
            this.rotate(button);
            this._activePage = this._buttons[0];
            this._activePage.get_page().show();
        },

        // Разрушение компонента.
        rotate : function(button)
        {
            var i2 = 0;
            var i3 = 0;
            var fack = true;
            var count = this._buttons.length;
            var newArray = new Array(count);

            for (i1 = 0; i1 < count; i1++)
            {
                if (this._buttons[i1].element.id != button.id && fack)
                {
                    newArray[i1] = this._buttons[i1].get_page();
                    i2++;
                }
                else
                {
                    fack = false;
                }
                if (!fack)
                {
                    this._buttons[i3].set_page(this._buttons[i1].get_page());
                    i3++;
                }
            }
            
            for (i4 = 0; i4 < i2; i4++)
            {
                this._buttons[i3].set_page(newArray[i4]);
                i3++;
            }
            
            for (i4 = 0; i4 < count; i4++)
            {
                this._buttons[i4].element.innerText = this._buttons[i4].get_page().get_text();
                i3++;
            }

        }
    }
//}

//class TabPage
//{
    TabPage = function(element, text)
    {
        this.element = element;
        this._text = text;
    }

    // Прототип класса.
    TabPage.prototype =
    {
        // Инициализация компонента.
        show : function()
        {
            this.element.style.display = "block";
        },

        // Разрушение компонента.
        hide : function()
        {
            this.element.style.display = "none";
        },
        
        get_text : function()
        {
            return this._text;
        },
        
        set_text : function(value)
        {
            this._text = value;
        }
    }
//}


//class TabButton
//{
    TabButton = function(element, page, parent)
    {
        this.element = element;
        this._page = page;
        this._parent = parent;
        
        var fack = this.get_parent();
        
        this.element.onclick = elementClick;
        
        function elementClick()
        {
            fack.changeActiveTab(this);
            return false;
        }
    }
    
    // Прототип класса.
    TabButton.prototype =
    {
        
        get_page : function()
        {
            return this._page;
        },
        
        set_page: function(value)
        {
            this._page = value;
        },
        
        get_parent : function()
        {
            return this._parent;
        },
        
        set_parent: function(value)
        {
            this._parent = value;
        }
    }
//}
HotNewsTabControl.prototype = new TabControl(this);

Как вообще кукизы в джаваскрипте на клиенте добавляются?

Автор: ksnk 20.12.2007, 19:59
Цитата(Bogdan1024 @  20.12.2007,  17:49 Найти цитируемый пост)
Как вообще кукизы в джаваскрипте на клиенте добавляются? 

Да, добавляются...
Код

/**
 * @example  cookie('sample') - получить значение куки
 * @example  cookie('sample','value',{expires:10}) - поставить куку на 10 дней
 */
// поставить куку cookie.
function cookie(name,value,opt){
    if (typeof value != 'undefined') { // name and value given, set cookie
        opt = opt || {};
        if (value === null) {
            value = '';
            opt.expires = -1;
        }
        var expires = '';//expires:10
        if (opt.expires && (typeof (opt.expires) == 'number' || opt.expires.toUTCString)) {
            var date;
            if (typeof opt.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (opt.expires * 24 * 60 * 60 * 1000));
            }
            else {
                date = opt.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        document.cookie = name + '=' + encodeURIComponent(value) + expires +
            (opt.path ? '; path=' + opt.path : '') +
            (opt.domain ? '; domain=' + opt.domain : '') +
            (opt.secure ? '; secure' : '')
    }
    else { // only name given, get cookie
        if (document.cookie && document.cookie != '') {
            var cook = (new RegExp(";\\s*" + name + "\\s*=([^;]+)")).exec(';' + document.cookie);
            return cook && decodeURIComponent(cook[1]);
        }
        return null;
    }    
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)