445 votes

Comment puis-je désactiver un clic droit sur ma page web ?

Est-ce que je peux désactiver un clic droit sur ma page web sans utiliser Javascript ? Je pose cette question parce que la plupart des navigateurs permettent à l’utilisateur de désactiver Javascript.

747voto

cletus Points 276888

Vous pouvez le faire avec du Javascript et/ou un attribut HTML (qui est vraiment un gestionnaire d'événement Javascript de toute façon), comme décrit ici:

<script language="javascript">
document.onmousedown=disableclick;
status="Right Click Disabled";
Function disableclick(event)
{
  if(event.button==2)
   {
     alert(status);
     return false;    
   }
}
</script>

et

<body oncontextmenu="return false">
...
</body>

Cela étant dit: NE le faites PAS.

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

Pas sûr pourquoi vous voulez. Si il est hors de certains égarés croyance que vous pouvez protéger votre code source ou les images de cette façon, détrompez-vous: vous ne pouvez pas.

131voto

Wedge Points 11910

NE PAS

Juste, ne le font pas.

Peu importe ce que vous faites, vous ne pouvez pas empêcher les utilisateurs d'avoir un accès complet à tous les bits de données sur votre site web. Tout Javascript vous code peut être mis fin par le fait de désactiver le Javascript sur le navigateur (ou en utilisant un plugin comme NoScript). En outre, il n'y a aucun moyen de désactiver la capacité de tout utilisateur de simplement "afficher la source" ou "afficher la page info" (ou utiliser wget) pour votre site.

Il n'en vaut pas la peine. Il ne fait pas travailler. Il fera de votre site activement hostile aux utilisateurs. Ils le constater et arrêter de visiter. Il n'y a aucun avantage à le faire, seulement un gaspillage d'efforts et de perdu de la circulation.

Ne le faites pas.

Mise à jour: Il semble que ce petit sujet s'est avéré très controversée au fil du temps. De même, je m'en tiens à cette réponse à cette question. Parfois, la réponse correcte est des conseils au lieu d'une réponse directe.

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

88voto

Mr Speaker Points 860

La question initiale portait sur la façon d'arrêter de droit-cliquez sur étant donné que l'utilisateur peut désactiver JavaScript: qui son infâme et le mal (d'où les réponses négatives) - mais tous les doublons rediriger ici, même si beaucoup de doublons, demandant moins de mauvaises fins.

Comme l'utilisation de la droite-cliquez sur le bouton en HTML5 jeux, par exemple. Cela peut être fait avec la ligne de code ci-dessus, ou un peu plus à quelque chose comme ceci:

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

Mais si vous faites un jeu, alors n'oubliez pas que le droit-cliquez sur le bouton des feux de la contextmenu de l'événement, mais également de les feux de l'ordinaire mousedown et mouseup des événements trop. 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 - à noter que le en appuyant sur le bouton droit de la souris incendie de 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); 
    }
});

Ainsi, si vous utilisez gauche et droite les boutons de la souris dans un jeu, vous aurez à faire de la logique conditionnelle dans la souris gestionnaires.

26voto

Wayne Points 2391

Tout d'abord, vous ne pouvez pas obtenir sans l'aide d'un client du côté de la capacité. C'est là que le javascript s'exécute.

D'autre part, si vous essayez de contrôler ce que l'utilisateur final peut consommer à partir de votre site, alors vous avez besoin de repenser sa façon de vous afficher cette information. Une image a une url publique qui peut être récupérée via HTTP, sans la nécessité d'un navigateur.

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

Intégré filigrane dans les images peuvent prouver que l'image d'une personne en particulier/société.

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

La première règle de l'Internet, si vous ne voulez pas il pris, ne pas le rendre public!

La deuxième règle de l'Internet, si vous ne voulez pas il pris, ne le met pas sur Internet!

23voto

benophobia Points 585

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

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

À l'aide d'un lecteur flash, les utilisateurs ne peuvent pas télécharger comme 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 suffisant pour dissuader le vol occasionnel de vos images (voir ci-dessous pour un exemple), mais comme avec toutes ces techniques, est trivial de la défaite avec une connaissance de base de html.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X