Я хочу добавить пользовательское меню правой кнопки мыши в свое веб-приложение. Можно ли это сделать без использования каких-либо готовых библиотек? Если да, то как отобразить простое пользовательское меню, вызываемое правой кнопкой мыши, в котором не используется сторонняя библиотека JavaScript?
Я стремлюсь к чему-то вроде того, что делает Google Docs. Это позволяет пользователям щелкать правой кнопкой мыши и показывать пользователям их собственное меню.
ПРИМЕЧАНИЕ. Я хочу узнать, как создать свой собственный продукт по сравнению с тем, что кто-то уже сделал, поскольку большую часть времени эти сторонние библиотеки раздуты с функциями, тогда как мне нужны только те функции, которые мне нужны, поэтому я хочу, чтобы они были полностью сделаны вручную. меня.
источник
Ответы:
Отвечая на ваш вопрос - используйте
contextmenu
событие, как показано ниже:Но вы должны спросить себя, действительно ли вы хотите перезаписать поведение по умолчанию при щелчке правой кнопкой мыши - это зависит от приложения, которое вы разрабатываете.
JSFIDDLE
источник
e.preventDefault();
. Вот почему обычное меню не отображается. Что вы можете сделать, это создать некоторую условную логику, которая проверяет, нажата ли клавиша во время щелчка правой кнопкой мыши, а затем НЕ вызываетe.preventDefault()
- тогда вы получите обычное меню браузера.Было очень полезно для меня. Ради людей вроде меня, ожидающих рисования меню, я поместил здесь код, который использовал для создания меню правой кнопкой мыши:
источник
mouseY(event)
иmouseX(event)
с ,px
чтобы заставить его работать , как ожидалось: http://jsfiddle.net/a6w7n64o/ .test
но нет элемента по idtest
. Только элементы с классомtest
.jQuery
на самом деле не все так раздуты от лишних вещей. Не до такой степени, что это что-то замедлит. Это очень полезно, и то же самое, чтоjQuery
используется в этом ответе, может быть легко преобразовано в стандартныеJavaScript
команды. Возможно, он не на 100% соответствует запросу в исходном вопросе, но определенно соответствует на 95%.Сочетание некоторых хороших CSS и некоторых нестандартных HTML-тегов без внешних библиотек может дать хороший результат (JSFiddle)
HTML
Примечание: тег меню не существует, я делаю это (вы можете использовать все что угодно)
CSS
JavaScript только для этого примера, я лично удалить его настойчивое меню на окнах
Также обратите внимание, что вы потенциально можете изменить ,
menu > menu{left:100%;}
чтобыmenu > menu{right:100%;}
для меню , которое расширяется справа налево. Вам нужно было бы добавить поле или что-то еще, хотяисточник
Согласно ответам здесь и в других потоках, я сделал версию, похожую на версию Google Chrome, с переходом css3. JS Fiddle
Давайте начнем с лёгкости, так как у нас есть js выше на этой странице, мы можем беспокоиться о css и макете. Макет, который мы будем использовать, представляет собой
<a>
элемент с<img>
элементом или значком шрифта awesome (<i class="fa fa-flag"></i>
) и a<span>
для отображения сочетаний клавиш. Итак, это структура:Мы поместим их в div и покажем этот div правой кнопкой мыши. Давайте стилизовать их, как в Google Chrome, не так ли?
Теперь мы добавим код из принятого ответа и получим значения X и Y курсора. Для этого мы будем использовать
e.clientX
иe.clientY
. Мы используем клиент, поэтому раздел меню должен быть исправлен.И это все! Просто добавьте переходы CSS, чтобы постепенно исчезать и делать!
Показать фрагмент кода
источник
Вы можете попробовать просто заблокировать контекстное меню, добавив следующее в тег body:
Это заблокирует весь доступ к контекстному меню (не только с правой кнопки мыши, но и с клавиатуры).
PS вы можете добавить это к любому тегу, на котором вы хотите отключить контекстное меню
например:
Отключить контекстное меню только в этом конкретном div
источник
Протестировано и работает в Opera 11.6, Firefox 9.01, Internet Explorer 9 и Chrome 17. Вы можете ознакомиться с рабочим примером в javascript меню правой кнопки мыши.
источник
Я знаю, что на этот вопрос уже был дан ответ, но я потратил некоторое время на борьбу со вторым ответом, чтобы скрыть собственное контекстное меню и показать его там, где щелкнул пользователь.
HTML
CSS
JavaScript
Пример CodePen
источник
Попробуй это
http://jsfiddle.net/AkshayBandivadekar/zakn7Lwb/14/
источник
Чистое решение JS и CSS для по-настоящему динамического контекстного меню, вызываемого правой кнопкой мыши, хотя и на основе предварительно определенных соглашений об именах для элементов id, ссылок и т. Д. Jsfiddle и кода, который вы можете скопировать, вставить в одну статическую html-страницу:
источник
Вот очень хороший урок о том, как создать собственное контекстное меню с полным примером рабочего кода (без JQuery и других библиотек).
Вы также можете найти их демонстрационный код на GitHub .
Они дают подробное пошаговое объяснение, за которым вы можете следовать, чтобы создать собственное контекстное меню, вызываемое правой кнопкой мыши (включая html, css и код javascript), и подвести итог в конце, предоставив полный пример кода.
Вы можете легко следовать и адаптировать его к вашим собственным потребностям. И нет необходимости в JQuery или других библиотеках.
Вот как выглядит их пример меню:
Рабочий пример (список задач) можно найти на codepen .
источник
Вы можете сделать это с помощью этого кода. Посетите здесь для полного учебника с автоматическим определением края http://www.voidtricks.com/custom-right-click-context-menu/
`
источник
источник
oncontextmenu
событие, которое запускается (обычно по правому клику)Простой способ сделать это - использовать onContextMenu для возврата функции JavaScript:
И, введя,
return false;
вы отмените контекстное меню.если вы все еще хотите отобразить контекстное меню, вы можете просто удалить
return false;
строку.источник
Протестировано и работает в Opera 12.17, Firefox 30, Internet Explorer 9 и Chrome 26.0.1410.64.
источник
Что я здесь делаю
Пользователь JS, чтобы вызвать ваши собственные действия.
источник
Вы должны помнить, хотите ли вы использовать только решение Firefox, если вы хотите добавить его ко всему документу, вы должны добавить
contextmenu="mymenu"
его в<html>
тег, а не вbody
тег.На это стоит обратить внимание.
источник
Вы можете настроить и изменить этот код, чтобы сделать его более привлекательным и эффективным контекстным меню. Что касается изменения существующего контекстного меню, я не уверен, как это сделать ... Посмотрите эту скрипку для организованной точки зрения. Также попробуйте щелкнуть пункты в моем контекстном меню. Они должны предупредить вас несколькими удивительными сообщениями. Если они не работают, попробуйте что-нибудь более ... сложное.
источник
Я использую что-то похожее на следующий jsfiddle
если вы нацелены на более старые браузеры IE, вы должны в любом случае дополнить его 'attachEvent; кейс
источник