Non pas que j'essaie d'empêcher 'View Source' ou quelque chose d'aussi idiot, mais je crée des menus contextuels personnalisés pour certains éléments.
EDIT: réponse aux réponses: j'ai essayé ceci:
<a id="moo" href=''> </a>
<script type="text/javascript">
var moo = document.getElementById('moo');
function handler(event) {
event = event || window.event;
if (event.stopPropagation)
event.stopPropagation();
event.cancelBubble = true;
return false;
}
moo.innerHTML = 'right-click here';
moo.onclick = handler;
moo.onmousedown = handler;
moo.onmouseup = handler;
</script>
Capturez l'événement onContextMenu
et renvoyez false dans le gestionnaire d'événements.
Vous pouvez également capturer l'événement click et vérifier quel bouton de la souris a déclenché l'événement avec event.button
, dans certains navigateurs en tout cas.
Si vous ne souhaitez pas alerter l'utilisateur avec un message chaque fois qu'il essaie de cliquer avec le bouton droit de la souris, essayez de l'ajouter à votre balise body.
<body oncontextmenu="return false;">
Ceci bloquera tout accès au menu contextuel (pas seulement avec le bouton droit de la souris mais aussi avec le clavier)
Cependant, il est inutile d'ajouter un clic droit. Toute personne possédant des connaissances de base en navigation peut consulter la source et extraire les informations dont elle a besoin.
J'ai utilisé ceci:
document.onkeydown = keyboardDown;
document.onkeyup = keyboardUp;
document.oncontextmenu = function(e){
var evt = new Object({keyCode:93});
stopEvent(e);
keyboardUp(evt);
}
function stopEvent(event){
if(event.preventDefault != undefined)
event.preventDefault();
if(event.stopPropagation != undefined)
event.stopPropagation();
}
function keyboardDown(e){
...
}
function keyboardUp(e){
...
}
Ensuite, j'attrape la propriété e.keyCode dans ces deux dernières fonctions - si e.keyCode == 93, je sais que l'utilisateur a relâché le bouton droit de la souris ou a appuyé/relâché la touche du menu contextuel.
J'espère que ça aide.
Si votre page repose vraiment sur le fait que les gens ne pourront pas voir ce menu, sachez que les navigateurs modernes (par exemple Firefox) permettent à l'utilisateur de décider s'il souhaite vraiment le désactiver ou non. Vous n’avez donc aucune garantie que le menu serait vraiment désactivé.
Vous ne pouvez pas compter sur les menus contextuels, car l'utilisateur peut le désactiver. La plupart des sites Web veulent utiliser cette fonctionnalité pour ennuyer le visiteur.