SELFHTML Forums-Auslese DHTML | |
Forums-Auslese |
|
Basierend auf einem Forums-Beitrag vom 06.01.1999 von:
Andreas Bierhals, bierhals@stud.uni-hannover.de
Normalerweise sind die Rollen der Maustasten im Webseitenbereich streng festgelegt: Mit der linken Maustaste können Links und Buttons angeklickt werden, während die rechte Maustaste für diverse Kontext-Menüs dem Browser vorbehalten bleibt. Manchmal - z.B. für JavaScript-gesteuerte Spiele o. Ä. - möchte man jedoch auch über die rechte Maustaste Kontrolle erlangen. In diesem Beispiel wird gezeigt, wie man einen Link definiert, der maustastensensitiv reagiert. Die hier gezeigte Methode funktioniert derzeit ausschließlich für Netscape.
Das Hauptproblem ist, dass Netscape normalerweise auf die rechte Maustaste mit einem Kontextmenü reagiert. Um das abzustellen, muss man sich der Funktion window.captureEvent(Event.MOUSEDOWN) bedienen, und das Maustastendruck-Ereignis auf eine selbstdefinierte Funktion umleiten. Dabei tritt sofort das nächste Problem auf: Hat man den Maustastendruck einmal umgeleitet, so gilt das für die ganze Seite und nicht nur für den betreffenden Link. Man muss also einen Mechanismus schaffen, der dafür sorgt, dass die rechte Maustaste außerhalb des betreffenden Links wie gewohnt funktioniert. Dafür kann man sich der event-Handler onMouseover und onMouseout des Anchor-Objektes bedienen und z.B. in einer globalen Variablen vermerken, ob sich der Mauszeiger gerade über oder außerhalb des Links befindet.
Im letzteren Fall kann man den MOUSEDOWN-Event trotzdem einfangen und dann in der selbstdefinierten Funktion den Befehl routeEvent(e) aufrufen. Damit wird der Event an die browserinterne Event-Behandlung weitergereicht, und alle Kontextmenüs usw. funktionieren wie gewohnt.
<html><head><title>Maus-Test</title> <script language="JavaScript"> <!-- var linksUrl = "http://www.spd.de", rechtsUrl = "http://www.cdu.de", linktouched = 0; function myMouseDownHandler(e) { if (linktouched==0) { routeEvent(e); return true; } switch(e.which) { case 1: window.location.href = linksUrl; break; case 3: window.location.href = rechtsUrl; } return false; } window.captureEvents(Event.MOUSEDOWN); window.onMouseDown=myMouseDownHandler; //--> </script> </head> <body> <a href="http://www.spd.de" onMouseover="linktouched=1" onMouseout="linktouched=0"> Klicken Sie ihrer Gesinnung entsprechend</a>. </body></html> |
weiter: | CGI und Perl - Web-Server und andere Server |
zurück: | Microsoft Filter und Datenanbindung |
SELFHTML Forums-Auslese DHTML |
© 2000 das Redaktionsteam