Artículos
Javascript

Deshabilitar el botón derecho

10/Sep/2009

En este ejemplo vamos a ver como bloquear el botón derecho del ratón para evitar que el usuario pueda sacar el menú contextual. Esto es bueno ya que en este menú contextual aparece, entre otras opciones, la de mostrar código fuente.

Ahora que podemos pensar que suprimiendo este menú contextual evitamos que nuestro código fuente sea inspeccionado, si bien existen otras formas de que nuestro código fuente sea sustraido. Eso si, se plantean muchas trabas a la hora de que nuestro código fuente sea inspeccionado.

Una de las peores cosas que tiene Internet son las discrepancias entre los diferentes navegadores. En parte entendibles por la lentitud en la estandarización de los comités (lentitud en comparación con la velocidad de desarrollo de la red).

Aunque DOM Level2 Events intenta estandarizar el control de eventos. No es posible a día de hoy hacer un script único para los diferentes navegadores. Y en todo este embolado, Opera no ofrece el soporte de cancelación de eventos y promueve el uso del menú contextual obtenido por el botón derecho. Un lio.

Si una cosa sigue estando más o menos clara, aunque del tema presionar y el soltar un botón podríamos hacer un monologo, es que los eventos se pueden capturar con el onmousedown. Eso sí, esto puede no evitar el que el navegador lance el menú contextual. A si que no está de más el parar al menú contextual con el atributo oncontextmenu. Al cual, solo necesitaremos darle un valor de false.

document.onmousedown=anularBotonDerecho;
document.oncontextmenu=new Function("return false");

A la hora de calcular el botón presionado tenemos dos alternativas. Los navegadores Internet Explorer siguen basándose en la propiedad event.button y el valor 2 (botón derecho).

if (event.button == 2) {
   alert("Botón derecho pulsado");
}

Por su parte, Firefox y Chrome se apoyan en la propiedad which y sus valores 2 y 3.

if (e.which == 3 || e.which == 2) {
   alert("Botón derecho pulsado");
}

A si que además de validar el botón pulsado, añadiremos en la validación el navegador sobre el que operamos. En este caso nos apoyaremos en la propiedad Navigator.appName

function anularBotonDerecho(e) {


 if (navigator.appName == 'Netscape' 
       && (e.which == 3 || e.which == 2)){
   alert(sMensaje);
   return false;
 } else if (navigator.appName == 'Microsoft Internet Explorer'
       && (event.button == 2)) {
   alert(sMensaje);
 }
}

Código Fuente

Descárgate el código fuente de Deshabilitar el botón derecho
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Javascript

Disfruta también de nuestros artículos sobre Javascript en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Javascript

¿Te atreves a probar tus habilidades y conocimiento en Javascript con nuestro test?

Test Javascript
Suscribir
Notificar de
guest
10 Comentarios
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios