Quiero agregar un menú de clic derecho personalizado a mi aplicación web. ¿Se puede hacer esto sin usar bibliotecas preconstruidas? Si es así, ¿cómo mostrar un menú de clic derecho personalizado simple que no utiliza una biblioteca de JavaScript de terceros?
Estoy apuntando a algo como lo que hace Google Docs. Permite a los usuarios hacer clic derecho y mostrarles su propio menú.
NOTA: Quiero aprender a hacer mi propio en lugar de usar algo que alguien hizo ya que la mayoría de las veces, esas bibliotecas de terceros están llenas de características, mientras que solo quiero las características que necesito, así que quiero que estén completamente hechas a mano por yo.
javascript
contextmenu
right-click
usuario registrado
fuente
fuente
Respuestas:
Responda su pregunta: use el
contextmenu
evento, como a continuación:Pero debe preguntarse si realmente desea sobrescribir el comportamiento predeterminado del clic derecho; depende de la aplicación que esté desarrollando.
JSFIDDLE
fuente
e.preventDefault();
. Por eso no se muestra el menú normal. Lo que puede hacer es crear una lógica condicional que verifique, si se presiona la tecla mientras se hace clic derecho y luego NO se llamae.preventDefault()
, obtendrá el menú normal del navegador.Fue muy útil para mi. Por el bien de personas como yo, esperando el dibujo del menú, puse aquí el código que usé para hacer el menú del botón derecho:
fuente
mouseY(event)
ymouseX(event)
conpx
hacer que funcione como se esperaba: http://jsfiddle.net/a6w7n64o/ .test
pero no hay ningún elemento por la identificación detest
. Solo elementos con la clase detest
.jQuery
realmente no está tan hinchado con cosas extra. No en la medida en que ralentizaría algo. Es muy útil y lo mismojQuery
utilizado en esta respuesta podría convertirse fácilmente enJavaScript
comandos estándar . Puede que no esté 100% en línea con la solicitud en la pregunta original, pero definitivamente está 95% en línea con ella.Una combinación de un buen CSS y algunas etiquetas html no estándar sin bibliotecas externas puede dar un buen resultado (JSFiddle)
HTML
Nota: la etiqueta del menú no existe, la estoy inventando (puedes usar cualquier cosa)
CSS
El JavaScript es solo para este ejemplo, personalmente lo elimino para los menús persistentes en Windows
También tenga en cuenta, que potencialmente puede modificar
menu > menu{left:100%;}
amenu > menu{right:100%;}
un menú que se expande de derecha a izquierda. Sin embargo, deberá agregar un margen o algo en alguna partefuente
De acuerdo con las respuestas aquí y en otros flujos, he creado una versión que se parece a la de Google Chrome, con transición css3. JS Fiddle
Comencemos de manera fácil, ya que tenemos los js arriba en esta página, podemos preocuparnos por el CSS y el diseño. El diseño que utilizaremos es un
<a>
elemento con un<img>
elemento o un icono de fuente impresionante (<i class="fa fa-flag"></i>
) y una<span>
para mostrar los atajos de teclado. Entonces esta es la estructura:Los pondremos en un div y mostraremos ese div en el clic derecho. Vamos a diseñarlos como en Google Chrome, ¿de acuerdo?
Ahora agregaremos el código de la respuesta aceptada y obtendremos el valor X e Y del cursor. Para hacer esto, usaremos
e.clientX
ye.clientY
. Estamos utilizando el cliente, por lo que el menú div debe ser reparado.¡Y eso es todo! ¡Solo agregue las transiciones css para fundirse y desaparecer, y listo!
Mostrar fragmento de código
fuente
Puede intentar simplemente bloquear el menú contextual agregando lo siguiente a su etiqueta de cuerpo:
Esto bloqueará todo acceso al menú contextual (no solo desde el botón derecho del mouse sino también desde el teclado).
PD: puede agregar esto a cualquier etiqueta en la que desee deshabilitar el menú contextual
por ejemplo:
Deshabilitará el menú contextual en ese div en particular solamente
fuente
Probado y funciona en Opera 11.6, firefox 9.01, Internet Explorer 9 y Chrome 17 Puede consultar una muestra de trabajo en el menú de clic derecho de JavaScript
fuente
Sé que esto ya ha sido respondido, pero pasé un tiempo luchando con la segunda respuesta para que desapareciera el menú contextual nativo y que apareciera donde el usuario hizo clic.
HTML
CSS
JavaScript
Ejemplo de CodePen
fuente
Prueba esto
http://jsfiddle.net/AkshayBandivadekar/zakn7Lwb/14/
fuente
Solución pura de JS y CSS para un menú contextual de clic derecho verdaderamente dinámico, aunque basado en convenciones de nomenclatura predefinidas para la identificación de elementos, enlaces, etc. jsfiddle y el código que puede copiar y pegar en una sola página estática html:
fuente
Aquí hay un muy buen tutorial sobre cómo construir un menú contextual personalizado con un ejemplo de código de trabajo completo (sin JQuery y otras bibliotecas).
También puede encontrar su código de demostración en GitHub .
Proporcionan una explicación detallada paso a paso que puede seguir para crear su propio menú contextual con el botón derecho (incluido el código html, css y javascript) y resumirlo al final dando el código de ejemplo completo.
Puede seguirlo fácilmente y adaptarlo a sus propias necesidades. Y no hay necesidad de JQuery u otras bibliotecas.
Así es como se ve su código de menú de ejemplo:
Un ejemplo de trabajo (lista de tareas) se puede encontrar en codepen .
fuente
Puedes hacerlo con este código. visite aquí para obtener un tutorial completo con detección automática de bordes http://www.voidtricks.com/custom-right-click-context-menu/
``
fuente
fuente
oncontextmenu
evento que se dispara (generalmente con el botón derecho)Una manera simple de hacerlo es usar onContextMenu para devolver una función de JavaScript:
Y al ingresar
return false;
, cancelará el menú contextual.si aún desea mostrar el menú contextual, simplemente puede eliminar la
return false;
línea.fuente
Probado y funciona en Opera 12.17, firefox 30, Internet Explorer 9 y Chrome 26.0.1410.64
fuente
Lo que estoy haciendo aquí
Usuario js para invocar sus propias acciones.
fuente
Debe recordar que si desea utilizar la única solución de Firefox, si desea agregarla a todo el documento, debe agregarla
contextmenu="mymenu"
a la<html>
etiqueta, no a labody
etiqueta.Deberías prestar atención a esto.
fuente
Puede modificar y modificar este código para crear un menú contextual más eficiente y de mejor aspecto. En cuanto a la modificación de un menú contextual existente, no estoy seguro de cómo hacerlo ... Mira este violín para un punto de vista organizado. Además, intente hacer clic en los elementos en mi menú contextual. Deben alertarle de algunos mensajes increíbles. Si no funcionan, intente algo más ... complejo.
fuente
Yo uso algo similar al siguiente jsfiddle
si se dirige a navegadores IE más antiguos, debe completarlo con el 'attachEvent; caso
fuente