feed twitter facebook LinkedIn facebook

JavaScript » Deshabilitar el botón derecho

Septiembre 10, 2009 por Víctor Cuervo . 5887 visitas 6 Comentarios Imprimir Imprimir

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.

  1. document.onmousedown=anularBotonDerecho;
  2. 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).

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

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

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

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

  1. function anularBotonDerecho(e) {
  2.  
  3. if (navigator.appName == 'Netscape'
  4. && (e.which == 3 || e.which == 2)){
  5. alert(sMensaje);
  6. return false;
  7. } else if (navigator.appName == 'Microsoft Internet Explorer'
  8. && (event.button == 2)) {
  9. alert(sMensaje);
  10. }
  11. }
Visualizar el Codigo
Visualiza el artículo
Descargar el Codigo
Descargar el código
Error en el Codigo
Error en el código
Foro sobre JavaScript
Foro sobre JavaScript
tags: , , , , , , ,

Artículos relacionados:

6 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

  1. Carlos
    Septiembre 10, 2009 #

    Todas estas zancadillas para impedir mostrar el código fuente no sirven de nada: siempre hay formas alternativas de hacer las cosas. (pulsando CTRL+U en Firefox, a través del menú Ver -> Código fuente, etc.). En última instancia, si mi navegador “puede” acceder al HTML, yo también “puedo”.

    Hay otros métodos como ofuscadores de código, pero tambien tienen su contrapartida en los formateadores automáticos para recuperar legibilidad.

    La pregunta es ¿qué se gana entorpeciendo el acceso a los recursos? (como por ejemplo, ver el código fuente o guardar una imagen de la página).

    A mí siempre me han molestado sobremanera los sitios que usan estas burdas artimañas. El resultado es que, después de obtener lo que yo quería, no vuelvo nunca más a ese sitio.

  2. Jaume Dr. T
    Septiembre 16, 2009 #

    De acuerdo contigo, Carlos. Con un simple “impr pant”, puedo guardarme una foto superprotegida. Es decir, hecha la ley, hecha la trampa.

    Pero a veces te ves “forzado” a recurrir a esas artimañas. En mi caso ha sido por petición expresa de un cliente, que estaba horrorizado ante la posibilidad de que se pudiesen descargar imágenes de su sitio. Pues nada, un par de lineas de javascript, y el hombre se ha quedado la mar de tranquilo.

    Y… es que como son los clientes, eh?

  3. Carlos
    Septiembre 16, 2009 #

    Hola, Jaume.

    Desde esa perspectiva me queda mucho más claro el “objetivo” de intentar impedir ciertas acciones. Yo también he sufrido los absurdos (y cambiantes) deseos de los clientes.

    A veces me gustaría que supieran lo fácil que es saltarse esas barreras. Así no pedirían tantas tonterías, que al final no sirven más que para perder el tiempo.

    Un saludo.

  4. Jesus
    Octubre 12, 2009 #

    Exacto para eso sirven esas artimañas para hacer perder el tiempo a los “ladrones”…. tu lo has dicho, y es por ese el motivo por lo que utilizo todo ese tipo de artimañas en mi web, y si encuentro una nueva artimaña la incluyo y la implemento en mi web. Solo para hacer perder el tiempo a los ladrones, chupopteros, aprovechados y demás gentuza que copian y roban del contenido ajeno.

    Saludos

  5. Leonardo
    Octubre 14, 2009 #

    @Jesus, me juego lo que quieras a que estás usando en tus páginas contenidos de otros autores sin pedirles su permiso. ¿O es que has fabricado tú mismo cada imágen, cada hoja CSS, cada archivo javascript a partir de la nada, sin basarte en ninguna otra página web?

  6. val
    Julio 9, 2010 #

    la verdad no entiendo una mir.. no se como hacerlo no encuenteo en panel de control diseño busco y nada!!!

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*