Comment désactiver le clic droit sur ma page web?

Puis-je désactiver le clic droit sur ma page web sans utiliser JavaScript? Je demande cela parce que la plupart des navigateurs permettent à L'utilisateur de désactiver JavaScript.

Sinon, comment utiliser JavaScript pour désactiver le clic droit?

249
demandé sur Michał Perłakowski 2009-04-10 12:12:09

23 réponses

Vous pouvez le faire avec JavaScript en ajoutant un écouteur d'événement pour l'événement" contextmenu " et en appelant le preventDefault() Méthode:

document.addEventListener('contextmenu', event => event.preventDefault());

Cela étant dit: ne le faites pas.

Pourquoi? Parce qu'il ne réalise rien d'autre que des utilisateurs ennuyeux. De nombreux navigateurs ont également une option de sécurité pour interdire la désactivation du menu contextuel (contextuel) de toute façon.

Je ne sais pas pourquoi vous voulez. Si c'est à cause d'une croyance mal placée que vous pouvez protéger votre code source ou vos images qui façon, détrompez-vous: vous ne pouvez pas.

402
répondu cletus 2016-11-27 08:40:50

NE PAS

Juste, non.

Peu importe ce que vous faites, vous ne pouvez pas empêcher les utilisateurs d'avoir un accès complet à chaque bit de données sur votre site web. Tout code Javascript que vous codez peut être rendu sans objet en désactivant simplement Javascript sur le navigateur (ou en utilisant un plugin comme NoScript). De plus, il n'y a aucun moyen de désactiver la capacité d'un utilisateur de simplement "afficher la source" ou " afficher les informations de la page "(ou utiliser wget) pour votre site.

Ça n'en vaut pas la peine. Il ne fait pas travailler. Il rendra votre site activement hostile aux utilisateurs. Ils remarqueront cela et arrêteront de visiter. Il n'y a aucun avantage à faire cela, seulement des efforts gaspillés et du trafic perdu.

Non.

Update: il semble que ce petit sujet s'est avéré assez controversé au fil du temps. Même ainsi, je maintiens cette réponse à cette question. Parfois, la bonne réponse est un conseil au lieu d'une réponse littérale.

Les gens qui trébuchent sur cette question dans l'espoir de savoir comment créer les menus contextuels personnalisés devraient regarder ailleurs, comme ces questions:

118
répondu Wedge 2017-05-23 12:10:34

La question initiale était de savoir comment arrêter le clic droit étant donné que L'utilisateur peut désactiver JavaScript : qui sonne mal et mal (d'où les réponses négatives) - mais tous les doublons redirigent ici, même si beaucoup de doublons demandent des fins moins mauvaises.

Comme en utilisant le bouton droit de la souris dans les jeux HTML5, par exemple. Cela peut être fait avec le code en ligne ci-dessus, ou un peu plus agréable est quelque chose comme ceci:

document.addEventListener("contextmenu", function(e){
    e.preventDefault();
}, false);

, Mais si vous faites un jeu, alors rappelez-vous que le bouton droit déclenche l'événement contextmenu - mais il déclenche également les événements réguliers mousedown et mouseup. Si vous avez besoin de vérifier l'événement qui la propriété pour voir si c'était la gauche (qui === 1), moyen (qui === 2) ou de droite (qui === 3) de la souris bouton qui déclenche l'événement.

Voici un exemple dans jQuery-notez que le fait d'appuyer sur le bouton droit de la souris déclenche trois événements: l'événement mousedown, le contextmenu de l'événement, et l'événement mouseup.

// With jQuery
$(document).on({
    "contextmenu": function(e) {
        console.log("ctx menu button:", e.which); 

        // Stop the context menu
        e.preventDefault();
    },
    "mousedown": function(e) { 
        console.log("normal mouse down:", e.which); 
    },
    "mouseup": function(e) { 
        console.log("normal mouse up:", e.which); 
    }
});

Donc, si vous utilisez les boutons gauche et droit de la souris dans un jeu, vous devrez faire une logique conditionnelle dans les gestionnaires de la souris.

63
répondu Mr Speaker 2012-08-10 13:37:09

Si vous ne vous souciez pas d'alerter l'utilisateur avec un message chaque fois qu'il essaie de faire un clic droit, essayez d'ajouter ceci à votre balise body

<body oncontextmenu="return false;">

Cela bloquera tout accès au menu contextuel (pas seulement à partir du bouton droit de la souris, mais aussi à partir du clavier).

Cependant, comme mentionné dans les autres réponses, il est vraiment inutile d'ajouter un désactivateur de clic droit. Toute personne ayant des connaissances de base sur le navigateur peut afficher la source et extraire les informations dont elle a besoin.

29
répondu by0 2013-06-07 15:17:26

Si vous êtes un fan de jquery, utilisez ceci

    $(function() {
        $(this).bind("contextmenu", function(e) {
            e.preventDefault();
        });
    }); 
26
répondu Vishnu Vikraman 2014-01-29 06:10:03

Si votre but est d'empêcher les gens de pouvoir télécharger vos images, comme la plupart des gens l'ont dit, désactiver le clic droit est à peu près inefficace.

En Supposant que vous essayez de protéger les images les méthodes alternatives sont -

En utilisant un lecteur flash, les utilisateurs ne peuvent pas les télécharger en tant que tels, mais ils pourraient facilement faire une capture d'écran.

Si vous voulez être plus akward, l'image de fond, un div contenant une image transparente, à-la -

<div style="background-image: url(YourImage.jpg);">
   <img src="transparent.gif"/>
</div>

Sera assez pour dissuader le vol occasionnel de vos images (Voir ci-dessous pour un exemple), mais comme avec toutes ces techniques, est trivial à vaincre avec une compréhension de base du html.

20
répondu benophobia 2012-11-02 12:28:22

Tout d'abord, vous ne pouvez pas y parvenir sans utiliser une fonctionnalité côté client. C'est là que le javascript s'exécute.

Deuxièmement, si vous essayez de contrôler ce qu'un utilisateur final peut consommer à partir de votre site, vous devez repenser la façon dont vous affichez ces informations. Une image a une url publique qui peut être récupérée via HTTP sans avoir besoin d'un navigateur.

L'authentification peut contrôler qui a accès à quelles ressources.

Le filigrane intégré dans les images peut prouver que l'image a partir d'une personne en particulier/société.

À la fin de la journée, la gestion des ressources est vraiment la gestion utilisateur/invité.

La première règle de L'Internet, si vous ne voulez pas qu'il soit pris, ne le rendez pas public!

La deuxième règle de L'Internet, si vous ne voulez pas qu'il soit pris, ne le mettez pas sur Internet!

15
répondu Wayne 2009-04-10 08:24:03

Vous ne pouvez pas accomplir ce que vous demandez sans utiliser Javascript. Toute autre technologie que vous pouvez choisir d'utiliser ne peut aider à composer la page web côté serveur à envoyer au navigateur.

Il n'y a tout simplement pas de bonne solution, et il n'y a pas de période de solution sans Javascript.

14
répondu Anthony 2009-04-10 08:13:37

Si votre objectif est d'interdire aux utilisateurs d'enregistrer simplement vos images, vous pouvez également vérifier si la cible cliquée est une image, désactivez uniquement le clic droit dans ce cas. Donc, le clic droit peut être utilisé à d'autres fins. Tiré du code ci-dessus:

document.addEventListener("contextmenu", function(e){
    if (e.target.nodeName === "IMG") {
        e.preventDefault();
    }
}, false);

C'est juste pour enlever la façon la plus simple d'enregistrer vos images, mais cela peut toujours être fait.

12
répondu Andrew 2014-02-01 11:30:11
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script>
<script type='text/javascript'>//<![CDATA[ 
$(function(){
$('img').bind('contextmenu', function(e){
return false;
}); 
});//]]>  
</script>
</head>
<body>
    <img src="http://www.winergyinc.com/wp-content/uploads/2010/12/ajax.jpg"/>
</body>

9
répondu aravind3 2012-09-21 12:27:18

Faites-le comme ci-dessous (cela fonctionne aussi sur firefox):

$(document).on("contextmenu",function(e){

     if( e.button == 2 ) {
         e.preventDefault();
          callYourownFucntionOrCodeHere();
     }
return true;
});
6
répondu nntona 2015-08-06 04:19:28

Bien sûr, comme tous les autres commentaires ici, cela ne fonctionne tout simplement pas.

J'ai une fois construit une simple applet java pour un client qui a forcé toute capture d'une image à se faire via la capture d'écran et vous pourriez envisager une technique similaire. Cela a fonctionné, dans les limites, mais je pense toujours que c'était une perte de temps.

4
répondu Cruachan 2009-04-10 08:52:11

Mettez ce code dans votre balise <head> de votre page.

<script type="text/javascript"> 
function disableselect(e){  
return false  
}  

function reEnable(){  
return true  
}  

//if IE4+  
document.onselectstart=new Function ("return false")  
document.oncontextmenu=new Function ("return false")  
//if NS6  
if (window.sidebar){  
document.onmousedown=disableselect  
document.onclick=reEnable  
}
</script>

Cela désactivera le clic droit sur l'ensemble de votre page web, mais uniquement lorsque JavaScript est activé.

4
répondu tejas 2013-05-05 04:16:58

Désactiver le clic droit dans le site :

<body oncontextmenu="return false">

Ou la méthode suivante est:

<style>
body {
-webkit-user-select: none; /* Chrome all / Safari all */
-o-user-select: none;
user-select: none;
-webkit-touch-callout:none;
}
</style>
4
répondu pradip kor 2017-07-05 08:46:35
    <script>
        window.oncontextmenu = function () {
            console.log("Right Click Disabled");
            return false;
        }
    </script>
3
répondu Anbu 2015-12-29 06:33:05

Essayez Cette

<script language=JavaScript>
//Disable right mouse click Script

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>
3
répondu Dipesh 2016-10-19 10:43:45

Désactiver le clic droit sur votre page web est simple. Il y a juste quelques lignes de code JavaScript qui feront ce travail. Voici le code JavaScript:

$("html").on("contextmenu",function(e){
   return false;
});

Dans le code ci-dessus, j'ai sélectionné la balise. Après avoir ajouté seulement trois lignes de code, il désactivera le clic droit sur votre page web.

Source: désactiver le clic droit, copier, couper sur la page web en utilisant jQuery

3
répondu Faruque Ahamed Mollick 2017-10-17 17:00:47
 $(document).ready(function () {
            document.oncontextmenu = document.body.oncontextmenu = function () { return false; }
        });
2
répondu soheil bijavar 2013-12-11 13:03:24

Je sais que je suis en retard, mais je veux créer des hypothèses et des explications pour la réponse que je vais fournir.

Puis-je désactiver le clic droit

Puis-je désactiver le clic droit sur ma page web sans utiliser Javascript?

Oui, en utilisant JavaScript, vous pouvez désactiver tout événement qui se produit et vous pouvez le faire principalement uniquement par javaScript. Comment, tout ce dont vous avez besoin est:

  1. Un matériel de travail

  2. Un site web ou quelque part à partir de laquelle vous peut en apprendre davantage sur les keycodes. Parce que vous allez avoir besoin d'eux.

Maintenant, disons que vous voulez bloquer la touche entrée appuyez sur voici le code:

function prevententer () {
 if(event.keyCode == 13) {
  return false;
 }
}

Pour le clic droit, utilisez ceci:

event.button == 2

À la place de event.keyCode. Et tu vas le bloquer.

Je veux demander cela parce que la plupart des navigateurs permettent aux utilisateurs de le désactiver par Javascript.

, Vous avez raison, les navigateurs vous permettent d'utiliser JavaScript et javascript fait tout le travail pour vous. Vous donot besoin d'installation n'importe quoi, juste besoin de l'attribut de script dans la tête.

Pourquoi ne pas le désactiver?

La réponse principale et rapide à cela serait, les utilisateurs ne l'aimeront pas . Tout le monde a besoin de liberté, personne je veux dire personne ne veut être Bloqué ou désactivé, il y a quelques minutes, j'étais sur un site, qui m'avait bloqué de cliquer avec le bouton droit de la souris et j'ai senti pourquoi? Avez-vous besoin de sécuriser votre code source? Alors ici ctrl+shift+J j'ai ouvert le Console et maintenant je peux aller à l'onglet HTML-code. Aller de l'avant et de m'en empêcher. Ce n'ajoutera aucune couche de sécurité à votre application.

Il y a beaucoup de menus userful dans le clic droit, comme copier, coller, Rechercher Google pour " texte "(dans Chrome) et beaucoup plus. Si l'utilisateur souhaite obtenir la facilité d'accès au lieu de se rappeler beaucoup de raccourcis clavier. Tout le monde peut toujours copier le contexte, enregistrer l'image ou faire ce qu'il veut.

Les Navigateurs utilisent Navigation à la Souris: Certains navigateurs tels que Opéra utilise la navigation à la souris, donc si vous le désactivez, l'utilisateur je détesterais certainement votre Interface utilisateur et les scripts.

Donc c'était la base, j'allais écrire un peu plus sur l'enregistrement du code source hehehe mais, que ce soit la réponse à votre question.

Référence aux keycodes:

Clé et bouton de la souris code:

Http://www.w3schools.com/jsref/event_button.asp

Https://developer.mozilla.org/en-US/docs/Web/API/event.button (serait apprécié par les utilisateurs trop).

Pourquoi ne pas désactiver le clic droit:

Http://www.sitepoint.com/dont-disable-right-click/

2
répondu Afzaal Ahmad Zeeshan 2015-03-07 04:36:45

Si vous utilisez jquery, vous pouvez essayer ce code:

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

Vérifiez ceci: http://www.landcoder.com/4-dynamic-interactive-code-snippets-jquery-705#disablerightclick

1
répondu zms 2017-01-30 01:55:03

Javascript:

document.getElementsByTagName("html")[0].setAttribute("oncontextmenu", "return false"); 
1
répondu زياد 2017-05-10 12:19:06

Remarque Importante:, Il dépend de navigateur et OS afin de permettre la prévention ou pas!

Tu devrais le faire? Pas de. Parce que cela n'empêchera pas l'utilisateur, mais cela ne fera que l'agacer.

Tu peux l'utiliser? Oui. Exemples: dans certaines applications web où vous souhaitez avoir un menu contextuel personnalisé, dans le jeu où les utilisateurs peuvent être ennuyés lorsqu'ils font un clic droit par erreur, et dans d'autres cas.

Chrome (v65) dans Ubuntu 16.04 = vous Pouvez Désactiver le clic droit.

Chrome (v65 ) dans Mac OS 10.11 = vous ne pouvez pas Désactiver le clic droit.

Chrome (v65 ) dans Windows 7 = vous ne pouvez pas Désactiver le clic droit.

Firefox (v41) sous Mac OS 10.11 = vous Pouvez Désactiver le clic droit.

Firefox (v43 ) dans Windows 7 = vous Pouvez Désactiver le clic droit.

// JS way
document.addEventListener('contextmenu', function(e){
    e.preventDefault();
});

// jQuery way
$(document).bind('contextmenu', function(e) {
    e.preventDefault();
});
0
répondu evilReiko 2018-04-13 05:46:55

J'avais utilisé ce code pour désactiver le clic droit dans n'importe quelle page web, cela fonctionne bien. Vous pouvez utiliser ce code

jQuery(document).ready(function(){
  jQuery(function() {
        jQuery(this).bind("contextmenu", function(event) {
            event.preventDefault();
            alert('Right click disable in this site!!')
        });
    });
});
<html>
  <head>
    <title>Right click disable in web page</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  </head>
  <body>
    You write your own code
  </body>
</html>
0
répondu arvinda kumar 2018-08-30 06:57:22