2011-01-20 13 views
62

Quiero saber cómo desactivar haciendo clic derecho en las imágenes usando jQuery.Desactivar hacer clic derecho en las imágenes usando jquery

Sólo sé esto:

<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 
     $(document).bind("contextmenu",function(e) { 
      return false; 
     }); 
    }); 
</script> 
+3

esto debería funcionar a veces;). Pero olvídalo, hay otras 100 maneras de guardar una imagen de la web. Por cierto, si está pasando el objeto cliqueado, ¡entonces úselo! http://jsfiddle.net/VZX4A/ – meo

+3

sí lo sé. Estoy haciendo esto solo para disminuir el número de copias de imágenes. Es específicamente para aquellos que solo saben hacer clic derecho y guardar, es decir, los usuarios tontos. –

+3

Simplemente no lo hagas. No está protegiendo la imagen para que no se copie, y está deshabilitando la funcionalidad predeterminada y esperada del navegador. –

Respuesta

133

Esto funciona:

$('img').bind('contextmenu', function(e) { 
    return false; 
}); 

O de nuevo jQuery:

$('#nearestStaticContainer').on('contextmenu', 'img', function(e){ 
    return false; 
}); 

jsFiddle example

+2

gracias hombre esto funciona. –

+46

la nueva forma es: '$ ('body'). On ('contextmenu', 'img', función (e) { return false; }); 'aunque recomendaría algo más estrecho que 'cuerpo' si puedes. – Myster

+1

jQuery con el one-two knockout una vez más. <3 – Foxinni

10

lo que es su propósito de desactivar el botón derecho del ratón . El problema con cualquier técnica es que siempre hay una manera de sortearlas. la consola para firefox (firebug) y Chrome permiten la desvinculación de ese evento. o si quieres que la imagen esté protegida, siempre puedes echar un vistazo a su caché temporal para las imágenes.

Si desea crear su propio menú contextual, el preventDefault está bien. Solo elige tus batallas aquí. ni siquiera una gran biblioteca de JavaScript como tnyMCE funciona en todos los navegadores ... y eso no es porque no sea posible ;-).

$(document).bind("contextmenu",function(e){ 
    e.preventDefault() 
}); 

Personalmente estoy más en una internet abierta. El comportamiento del navegador nativo no debe verse obstaculizado por las interacciones de las páginas. Estoy seguro de que se pueden encontrar otras formas de interactuar que no son el clic derecho.

+2

-1. No es una respuesta a la pregunta. – richsage

+0

cambiado para adaptarse mejor como aclaración – yopefonic

7

Para Desactivar Haga clic derecho Opción

<script type="text/javascript"> 
    var message="Function Disabled!"; 

    function clickIE4(){ 
     if (event.button==2){ 
      alert(message); 
      return false; 
     } 
    } 

    function clickNS4(e){ 
     if (document.layers||document.getElementById&&!document.all){ 
      if (e.which==2||e.which==3){ 
       alert(message); 
       return false; 
      } 
     } 
    } 

    if (document.layers){ 
     document.captureEvents(Event.MOUSEDOWN); 
     document.onmousedown=clickNS4; 
    } 
    else if (document.all&&!document.getElementById){ 
     document.onmousedown=clickIE4; 
    } 

    document.oncontextmenu=new Function("alert(message);return false") 
</script> 
+2

Apoyos para la versión pura de Javascript, pero el OP pidió jQuery. –

+0

Y el código anterior es de finales de los años 90 – mplungjan

2

¿Sería posible salir de la capacidad de descarga Haga clic derecho y justo cuando se hace una marca de agua separada se coloca en la imagen. Por supuesto, esto no evitará las capturas de pantalla, pero pensó que podría ser un buen término medio.

7

En Chrome y Firefox, los métodos anteriores no funcionaron a menos que use 'live' en lugar de 'bind'.

Esto funcionó para mí:

$('img').live('contextmenu', function(e){ 
    return false; 
}); 
+2

Funciona con la "nueva forma" mencionada por @Myster –

1

Usted podría intentar esto:

var message="Sorry, right-click has been disabled"; 

function clickIE() { 
    if (document.all) { 
     (message); 
     return false; 
    } 
} 

function clickNS(e) { 
    if (document.layers || (document.getElementById && !document.all)) { 
     if (e.which == 2||e.which == 3) { 
      (message); 
      return false; 
     } 
    } 
} 

if (document.layers) { 
    document.captureEvents(Event.MOUSEDOWN); 
    document.onmousedown = clickNS; 
} else { 
    document.onmouseup = clickNS; 
    document.oncontextmenu = clickIE; 
} 

document.oncontextmenu = new Function("return false") 

Checkout a demo here

1

Una forma muy sencilla es añadir la imagen como fondo a una carga DIV entonces un gif transparente vacío configurado al mismo tamaño que el DIV en primer plano. eso mantiene lo menos determinado. No pueden obtener el fondo sin ver el código y copiar la URL, y al hacer clic con el botón derecho solo se descarga el archivo .gif transparente.

Cuestiones relacionadas