В сети куча туториалов на эту тему, если чо.
Что хотела бы отметить для себя на будущее - на что только что напоролась, как последний быдлокодер.
Контекстное меню должно закрываться при клике на этот же элемент снова, либо при клике по странице.
Вот в чем зарыт прикол. Беру первый попавшийся гайд. http://www.electrictoolbox.com/jquery-modify-right-click-menu/
Если див, который должен выпадать по райт-клику, окажется НЕ под курсором мышки (в стороне где-то, например), то браузер сразу же после события contextmenu вызовет событие document.click, соответственно, выпишет этому самому диву display:none.
Как избежать?
Курсор мышки должен быть отпущен НАД появившимся элементом.
Как проверить?
Если нарываемся на эту багу (по правому клику меню выпадает и сразу исчезает), зажимаем правую кнопку и с зажатой правой кнопкой ведем мышку на появившийся элемент и отпустить кнопку. Если элемент не пропал (можно на document.click вместе со скрывалкой меню вывесить console.log("yo"); для верняка) - наш клиент.
Как добиться нормального результата?
Либо сдвинуть вот эту конструкцию на 5-10 пикселей влево-вверх
Что хотела бы отметить для себя на будущее - на что только что напоролась, как последний быдлокодер.
Контекстное меню должно закрываться при клике на этот же элемент снова, либо при клике по странице.
Вот в чем зарыт прикол. Беру первый попавшийся гайд. http://www.electrictoolbox.com/jquery-modify-right-click-menu/
Если див, который должен выпадать по райт-клику, окажется НЕ под курсором мышки (в стороне где-то, например), то браузер сразу же после события contextmenu вызовет событие document.click, соответственно, выпишет этому самому диву display:none.
Как избежать?
Курсор мышки должен быть отпущен НАД появившимся элементом.
Как проверить?
Если нарываемся на эту багу (по правому клику меню выпадает и сразу исчезает), зажимаем правую кнопку и с зажатой правой кнопкой ведем мышку на появившийся элемент и отпустить кнопку. Если элемент не пропал (можно на document.click вместе со скрывалкой меню вывесить console.log("yo"); для верняка) - наш клиент.
Как добиться нормального результата?
Либо сдвинуть вот эту конструкцию на 5-10 пикселей влево-вверх
.css({
top: e.pageY+'px',
left: e.pageX+'px'
})
Либо (если нужно, чтобы это меню вываливалось не под курсором, а фиг знает где) подложить пустое место под курсор. Паддинг диву дать или что-то такое.
Немає коментарів:
Дописати коментар