меню в кеш

Статус
В этой теме нельзя размещать новые ответы.

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
466
Реакции
16
Здравствуйте,
есть такой вот скриптик
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>

как сделать что бы меню открывалось, и при переходе на другие страницы, оставалось открытым, пока его не закроют.
 
тут подойдет, наверное, только один вариант - сохранять событие в куки, то есть если закрыто, то при переходе по странице сразу проверяем значение в кукисах, 0 - не показываем, 1 - показываем.
 
а можно на примере? пожалуйста:)
 
на оф.сайте как я заметил есть два варианта - с раскрывающимся меню и без.
отличие кода этих двух вариантов в одной строчке:
Код:
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);
 
Теперь менюшка не работает, консоль выдаёт:
Uncaught TypeError: Cannot read property 'eTarget' of null
 
ок, ясно. ошибка возникала потому что в первый запуск скрипта в куках ничего не было. я немного переделал скрипт, проверил в хроме и лисе, должно теперь работать.
 

Вложения

  • e24tabmenu.zip
    176,8 KB · Просмотры: 4
  • Нравится
Реакции: vave
Очень подозрительно, у меня ни в хроме ни в лисе не работает.
Менюшка выползает, но при обновлении страницы она исчезает, ошибок никаких не выдаёт:nezn:
А должна оставаться открытой, до её закрытия...:(
 
Очень подозрительно, у меня ни в хроме ни в лисе не работает.
Менюшка выползает, но при обновлении страницы она исчезает, ошибок никаких не выдаёт:nezn:
А должна оставаться открытой, до её закрытия...:(
нужно иметь в виду, что скрипт будет работать только на хостинге или запущенном сервере локально, иначе куки создаватся не будут и эффекта запоминания положения меню тоже не будет.
 
  • Нравится
Реакции: vave
Теперь работает!:ay:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху