2011-01-20 2 views
62

Je veux savoir comment désactiver le clic droit sur les images en utilisant jQuery.Désactiver le clic droit sur les images en utilisant jquery

Je sais que ceci:

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

cela devrait fonctionner pour parfois;). Mais oubliez ça, il y a 100 autres façons de sauvegarder une image sur le web. Par ailleurs, si vous passez l'objet cliqué, alors utilisez-le! http://jsfiddle.net/VZX4A/ – meo

+3

oui je sais. Je fais cela juste pour réduire le nombre de copies d'images. C'est spécialement pour ceux qui ne savent que faire un clic droit et enregistrer, c'est-à-dire les utilisateurs stupides. –

+3

Juste ne pas. Vous ne protégez pas l'image contre la copie et vous désactivez les fonctionnalités par défaut et attendues du navigateur. –

Répondre

133

Cela fonctionne:

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

Ou pour jQuery plus récente:

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

jsFiddle example

+2

merci l'homme cela fonctionne. –

+46

la nouvelle façon est: '$ ('body'). On ('contextmenu', 'img', la fonction (e) { return false; }); "Bien que je recommanderais quelque chose de plus étroit que" corps "si vous le pouvez. – Myster

+1

jQuery avec le knockout un-deux encore une fois. <3 – Foxinni

10

quel est votre but de désactiver la clic-droit . problème avec toute technique est qu'il y a toujours un moyen de contourner eux. la console pour firefox (firebug) et chrome permettent de désengorger cet événement. ou si vous voulez que l'image soit protégée, vous pouvez toujours regarder leur cache temporaire pour les images.

Si vous voulez créer votre propre menu contextuel, preventDefault est correct. Choisissez simplement vos batailles ici. pas même une grande bibliothèque JavaScript comme tnyMCE fonctionne sur tous les navigateurs ... et ce n'est pas parce que ce n'est pas possible ;-).

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

Personnellement, je suis plus dans un Internet ouvert. Le comportement du navigateur natif ne doit pas être entravé par les interactions des pages. Je suis sûr que d'autres moyens peuvent être trouvés pour interagir qui ne sont pas le bon clic.

+2

-1. Pas une réponse à la question. – richsage

+0

changé pour mieux convenir comme clarification – yopefonic

7

Pour désactiver l'option Clic droit

<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

Les accessoires pour la version pure Javascript, mais l'OP a demandé jQuery. –

+0

Et le code ci-dessus est de la fin des années 90 – mplungjan

2

Serait-il possible de laisser la possibilité à un clic droit et télécharger juste lorsque vous avez terminé un filigrane séparé est placé sur l'image. Bien sûr, cela n'empêchera pas les captures d'écran, mais pense que cela peut être un bon compromis.

7

En chrome et firefox, les méthodes ci-dessus ne fonctionnaient pas à moins que j'utilise 'live' au lieu de 'bind'.

Cela a fonctionné pour moi:

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

Il fonctionne avec la "nouvelle façon" mentionné par @Myster –

1

Vous pouvez essayer ceci:

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

Une façon très simple est d'ajouter l'image en arrière-plan à un DIV puis charge un gif transparent vide réglé sur la même taille que le DIV au premier plan. qui garde le moins déterminé. Ils ne peuvent pas obtenir l'arrière-plan sans afficher le code et en copiant l'URL et un clic droit télécharge simplement le gif transparent.

Questions connexes