contextmeny - Hur man inaktiverar högerklicksmenyn i JavaScript
Inte för att jag försöker förhindra 'Visa källa' eller något dumt sådant, men jag gör några egna snabbmenyer för vissa element.
REDIGERA: svar på svaren: Jag har försökt detta:
<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>
Svar #1
Om du inte bryr dig om att varna användaren med ett meddelande varje gång de försöker högerklicka, försök lägga till detta i din body-tag
<body oncontextmenu="return false;">
Detta kommer att blockera all åtkomst till snabbmenyn (inte bara från höger musknapp utan även från tangentbordet)
Men det finns verkligen ingen anledning att lägga till en högerklicksspärr. Vem som helst med grundläggande webbläsarkunskap kan visa källkoden och ta ut den information de behöver.
Svar #2
Fånga onContextMenu-händelsen och returnera false i händelsehanteraren.
Du kan också fånga klickhändelsen och kontrollera vilken musknapp som utlöste händelsen med event.button, åtminstone i vissa webbläsare.
Svar #3
Jag har använt detta:
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){
...
}
Sedan fångar jag egenskapen e.keyCode i de två sista funktionerna - om e.keyCode == 93, vet jag att användaren antingen släppte höger musknapp eller tryckte/släppte Contextmeny-knappen.
Hoppas det hjälper.
