27.3 Mausklick verhindern
Mit JavaScript lassen sich Fenster ohne Menüleiste erstellen (siehe Kapitel 8). Die naheliegendste Variante, auf den Quelltext zuzugreifen, besteht dann in der Verwendung des Kontextmenüs. Dazu muss die rechte Maustaste betätigt werden. Diesen Mausklick kann man bei Browsern ab Version 4 abfangen:
|
Für den Internet Explorer muss aufgrund des dortigen Event-Handlings beim Eintreten der Ereignisse mousedown und mouseup die entsprechende Behandlungsfunktion aufgerufen werden: |
if (document.all) {
document.onmouseup = kein_kontext;
window.onmouseup = kein_kontext;
}
|
Für Mozilla-Browser muss die Funktion ebenfalls mit den Event-Handlern verknüpft werden; zusätzlich jedoch wird die Funktion captureEvents() benötigt: |
if (document.getElementById) {
window.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
window.onmousedown = kein_kontext;
window.onmouseup = kein_kontext;
}
|
Die Funktion kein_kontext() fragt zunächst ab, ob Maustaste 2 oder 3 gedrückt worden ist (je nach Browser hat die rechte Maustaste eine andere Nummer). Falls ja, wird eine Warnmeldung ausgegeben und die Funktion mit return false verlassen. So wird sichergestellt, dass das Ereignis nicht an den Browser weitergereicht wird, der dann das Kontextmenü öffnen würde. |
function kein_kontext(e) {
if (document.all) {
if (event.button >= 2) {
alert("Kein Rechtsklick!");
return false;
}
} else if (document.getElementById) {
if (e.which >= 2) {
alert("Kein Rechtsklick!");
return false;
}
} else {
return true;
}
}
Nachfolgend finden Sie das gesamte Skript, wieder in einer Funktion gekapselt, zum einfachen Einbau in Ihre HTML-Seiten:
function codeschutz_kontext(){
if (document.all) {
document.onmouseup = kein_kontext;
window.onmouseup = kein_kontext;
} else if (document.getElementById) {
window.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
window.onmousedown = kein_kontext;
window.onmouseup = kein_kontext;
}
}
function kein_kontext(e) {
if (document.all) {
if (event.button >= 2) {
alert("Kein Rechtsklick!");
return false;
}
} else if (document.getElementById) {
if (e.which >= 2) {
alert("Kein Rechtsklick!");
return false;
}
} else {
return true;
}
}
Der Einbau in ein HTML-Dokument gestaltet sich sehr einfach. Die Funktion muss nur eingebunden und aufgerufen werden:
<html>
<head>
<title>Codeschutz</title>
<script language="JavaScript" src="codeschutz.js"></script>
<script language="JavaScript"><!--
codeschutz_kontext();
//--></script>
</head>
<body oncontextmenu="return false;">
</body>
</html>
Hier klicken, um das Bild zu Vergrößern
Abbildung 27.5 Die »Fehlermeldung« bei einem Rechtsklick
Der Event-Handler oncontextmenu ist ein Feature ab Internet Explorer 5.0. Dieser Event-Handler wird aktiv, sobald das Kontextmenü aufgerufen wird. Durch return false; kann dies sinnvoll unterbunden werden – in halbwegs aktuellen Versionen des Internet Explorers, wohlgemerkt.
Gegen das oben vorgestellte Skript gibt es die folgenden Gegenmittel:
|
Deaktivierung von JavaScript |
|
Menübefehl (Ansicht N Quelltext anzeigen beim Internet Explorer, Ansicht N Seitenquelltext bzw. View N Page Source im Mozilla) |
|
Tastenkürzel ((Strg)+(U) im Netscape) |
|
Verwendung einer speziellen Taste auf Windows-Tastaturen (außer beim Internet Explorer mit oncontextmenu="return false;") |
|
Durchsuchen des Browser-Caches |
|