Pull to refresh

Comments 47

Как здорово! ) и быстро !))
спасибо большущее за информацию, непременно к осмысливанию
Пожалуйста. Пользуйтесь, модифицируйте как надо. Лицензия MIT.
Для хабралюдей из Казани можно и beer-ware (:
По идее, когда курсор уходит с пункта с подменю, то подменю должно скрываться.
так и есть. только не при уходе, а при наведении на другой пункт. по таймеру
Ага, это довольно непривычно :)
Я делал по образу и подобию меню в фаерфоксе. Там так. В Опере иначе… Кстати идея! Можно менять это поведение в зависимости об бразуера :)
Хм… я у себя не ощущаю задержки в FF3 на WinXP и разницы с Оперой тоже не замечаю. Возможно, потому что у меня в винде убрана задержка вылезания меню.
Таймер тоже стоит оставить — события выхода не всегда корректно отслеживаются.
Думал об этом, но до реализации пока руки не дошли — разные меню используют разные иконки, поэтому монолит может быть довольно большим. Но в туду этот пункт есть.
Интересная штука. Подгючевает в IE, но, работает.
Капец просто. Хотел посмотреть в ие, обнаружил интересный факт. У меня эксплорер открывает странички с ip-адресом в Опере!
оффтоп: было бы неплохо чтобы автору топика добавлялась карма за то, что другие заносят его пост в избранное, а то пост полезный, а плюсануть не могу… пусть хоть так опосредованно перепадает благодарность :)
Эх, заминусут Вас щас :) Знаете ведь — не любят на Хабре разговоров о карме.
Да мне по барабану, если честно.
Просто хочется выразить благодарность принятыми в данной системе способом, а не могу :)
Хм… у меня по клику правой клавигей ничего не происходит… А вот о клику левой — открывается)
Firefox 3.0.3, Kubuntu 8.04.1…

И еще — насколько я помню, Опера не отлавливает клик правой клавишей. Или уже отлавливает?
Так и должно быть, чтобы сохранить возможность для пользователя открыть дефолтное меню браузера.
Не отлавливает. Именно поэтому от поддержки правой кнопки мыши я отказался. Хотя никто не запрещает биндить по любому событию (через getCaller(string event,menu menu))
В настройках Оперы есть пункт «Allow script to receive right click», но я как-то по традиции снимаю галочку.
Заметил особенность в Опере, если выбрать в меню пункт «Назад...», то после этого меню перестаёт вызываться.
Да, спасибо. Щас тоже заметил. Видимо для оперы history.back(); когда назад некуда — это ошибка.
Видимо, это странность Оперы: try-catch эту ошибку не ловит. Если есть куда переходить — переходит. Если нет — убивает скрипты. Что ж. Будем боросться.

Запуск другим потоком тоже ничего не дал. Если есть идеи — пишите.
history.length не поможет?
Помогает не всегда. Иногда при непустой истории history.length равен нулю. В Опере только.
А сложно под mootools всё это переделать?
Абсолютно не сложно. jQuery там всего несколько вызовов. Люди, знакомые с mootols без труда заменят из соответствующими. К сожалению, я к таковым не отношусь, поэтому пока только jQuery. Если сделаете — давайте ссылку, добавлю в пост.
Опечаточку поправьте)
«Если знаете реАлизации лучше»…
В IE6 не работает (показывается за краями видимой области)

А можно ли как-то динамически подгружать пункты меню. Например в базе хранится некий список с URL по который можно переходить и когда юзер кликает на «вызов меню», то этот список из базы погружается в меню…
С ие разберемся, ага. Динамическая подгрузка была реализована в ранней версии меню. Там можно было задавать меню строкой-урлом, по которому шел запрос. На практике оказалось не нужно и эту ветку быстро забыли. Фактически игра не стоит свеч: для подобных меню правильнее загружать ресурсы заранее, иначе это ведет к увеличению времени взаимодействия с пользователем и лишним гет-запросам.
>Фактически игра не стоит свеч:…
Нууууу, может быть. Хотя если это реализуемо, что почему бы и нет. Я пересмотрел очень много контекстных меню — и у всех один, для меня, недостаток — надо заранее задавать все пункты меню. Я бы предпочел сделать лишний ajax запрос для генерации меню, чем заранее загружать его, IMHO.
А что мешает сделать это ручками?
$.getJSON('datasource.php?q=GetAllDataInOneRequets',function(json_response_object){
  $('#menu_click_here').bindMenu(json_response_object.menu1);
  $('#menu_click_me').bindMenu(json_response_object.menu2);
  $('.blablablaMenu').bindMenu(json_response_object.menuBlaBlaBla);
}

Так мы грузим всё одним запросом.
Большой привет Казани! Очень хочу там побывать! (сорри за офтоп).
Теперь по делу: если не ошибаюсь, то в опере нельзя использовать контекстное меню? или все таки ошибаюсь? позже протестирую.
Можно. Там в примере глючок закрался паршивенький, а так всё нормально.
Автор! Настоятельно советую перенести вызов js в конец файла, или сделать его как-то отложенно. Что меня всегда раздражало — так это привычка ставить js в начало файла, из за чего ощутимо замедляется загрузка((( Неприкольно смотреть на белвый экран((
Разница в скорости загрузки с и без поддержки js видна невооруженным глазом.

А меню — хорошее, только стили бы поменять умолчальные.
Можно еще добавить стрелки вверх вниз. Там элементарно делается. Пример jotsky.com.
Может уже слишком поздно и мой мозг спит, но я не увидел на сайте примера, хотя интуитивно догадываюсь, что речь идет о стрелочках для скроллирования мега-больших меню, не помещающихся на экран.
Я думаю речь скорее об управлении с клавиатуры.
идея хорошая, но возможно динамические меню стоит реализовывать через ajax.
фиксированные меню лучше сразу сгенерировать в html, завернуть в невидимый блок и вызывать по требованию.
<div style="display: none;"> menu </div>

Фиксированные меню рендерятся по требованию. Довольно часто их вообще не вызывают. Всё-таки контекстными меню (по крайней мере наши юзеры) пользуются не так часто. Но в принципе на инит поставить вызов render() дело пяти секунд. Раньше, кстати так и было, но пришлось убрать в силу указанных выше причин.
а я бы привязал меню к курсору, а то ведь, если область клика большая то меню вылазит далековато от меню (собственно говоря — в примере так и есть), а так это было бы более похоже на контекстное меню, где кликнул — там и вылезло.

саму функцию попробовал — интересная, вот теперь думаю использовать, или свое сделать, заточенное под мои нужды.
Вах! Error 404 по всем ссылкам! Верните все назад!
Only those users with full accounts are able to leave comments. Log in, please.