меню в кеш

Тема в разделе "JavaScript", создана пользователем vave, 3 сен 2012.

Статус темы:
Закрыта.
Модераторы: ZiX
  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    Здравствуйте,
    есть такой вот скриптик
    HTML:
    <script type="text/javascript">
            function initApp() {
                oe24TabMenu = new e24TabMenu( 'menu', { mode: 'uppertabs', duration: 1.0, transition: Effect.Transitions.sinoidal } );
            }
            Event.observe(window, 'load', initApp, false);
        </script>
    как сделать что бы меню открывалось, и при переходе на другие страницы, оставалось открытым, пока его не закроют.
     
  2. crazyzubr

    crazyzubr Создатель

    Регистр.:
    26 авг 2012
    Сообщения:
    23
    Симпатии:
    15
    тут подойдет, наверное, только один вариант - сохранять событие в куки, то есть если закрыто, то при переходе по странице сразу проверяем значение в кукисах, 0 - не показываем, 1 - показываем.
     
  3. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    а можно на примере? пожалуйста:)
     
  4. crazyzubr

    crazyzubr Создатель

    Регистр.:
    26 авг 2012
    Сообщения:
    23
    Симпатии:
    15
    на оф.сайте как я заметил есть два варианта - с раскрывающимся меню и без.
    отличие кода этих двух вариантов в одной строчке:
    Код:
    oe24TabMenu.toggleMenu($('3d'));// раскрываем меню
    
    значит нужно поставить условие на эту строчку в зависимости от значения в куках.
    для примера я буду использовать соответствующие функции (использовал бы JQuery было бы проще, но здесь библиотека prototype и скорее всего они будут конфликтовать с jquery:(

    Код:
    function getCookie( name ) {
        var start = document.cookie.indexOf( name + '=' );
        var len = start + name.length + 1;
        if ( ( !start ) && ( name != document.cookie.
    substring( 0, name.length ) ) ) {
            return null;
        }
        if ( start == -1 ) return null;
        var end = document.cookie.indexOf( ';', len );
        if ( end == -1 ) end = document.cookie.length;
        return unescape( document.cookie.substring( len, end ) );
    }
     
    function setCookie( name, value, expires, path, domain, secure ) {
        var today = new Date();
        today.setTime( today.getTime() );
        if ( expires ) {
            expires = expires * 1000 * 60 * 60 * 24;
        }
        var expires_date = new Date( today.getTime() + (expires) );
        document.cookie = name+'='+escape( value ) +
            ( ( expires ) ? ';expires='
    +expires_date.toGMTString() : '' ) +
    //expires.toGMTString()
            ( ( path ) ? ';path=' + path : '' ) +
            ( ( domain ) ? ';domain=' + domain : '' ) +
            ( ( secure ) ? ';secure' : '' );
    }
     
    function deleteCookie( name, path, domain ) {
        if ( getCookie( name ) ) document.cookie = name + '=' +
                ( ( path ) ? ';path=' + path : '') +
                ( ( domain ) ? ';domain=' + domain : '' ) +
                ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
    }
     
    function initApp() {
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+7);//запоминаем на неделю
    var m_show = getCookie('m_show');
    m_show=(m_show != '1')?'1':'0';
    setCookie('m_show',m_show,exdate,'/');
     
     
    oe24TabMenu = new e24TabMenu( 'menu', { mode: 'uppertabs', duration: 0.0, transition: Effect.Transitions.sinoidal } ); 
    if (m_show == '1'){
    oe24TabMenu.toggleMenu($('3d'));
    }
     
    }
    Event.observe(window, 'load', initApp, false);
     
    
     
  5. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    Теперь менюшка не работает, консоль выдаёт:
    Uncaught TypeError: Cannot read property 'eTarget' of null
     
  6. crazyzubr

    crazyzubr Создатель

    Регистр.:
    26 авг 2012
    Сообщения:
    23
    Симпатии:
    15
    ок, ясно. ошибка возникала потому что в первый запуск скрипта в куках ничего не было. я немного переделал скрипт, проверил в хроме и лисе, должно теперь работать.
     

    Вложения:

    • e24tabmenu.zip
      Размер файла:
      176,8 КБ
      Просмотров:
      4
    vave нравится это.
  7. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    Очень подозрительно, у меня ни в хроме ни в лисе не работает.
    Менюшка выползает, но при обновлении страницы она исчезает, ошибок никаких не выдаёт:nezn:
    А должна оставаться открытой, до её закрытия...:(
     
  8. crazyzubr

    crazyzubr Создатель

    Регистр.:
    26 авг 2012
    Сообщения:
    23
    Симпатии:
    15
    нужно иметь в виду, что скрипт будет работать только на хостинге или запущенном сервере локально, иначе куки создаватся не будут и эффекта запоминания положения меню тоже не будет.
     
    vave нравится это.
  9. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    374
    Симпатии:
    15
    Теперь работает!:ay:
     
Статус темы:
Закрыта.