SELFHTML

Forums-Auslese
Das Event Objekt (Netscape)

Diese Seite ist ein Dokument mit Informationstext

nach unten Neuer Beitrag in der Forums-Auslese Netscape: Rechte Maustaste zweckentfremden

nach unten 

Netscape: Rechte Maustaste zweckentfremden

Basierend auf einem Forums-Beitrag vom 06.01.1999 von:
E-Mail 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.

Die drei Schritte zum zweckentfremden der rechten Maustaste

Beispiel: Ein link mit zwei Bedeutungen.

<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>

nach oben
weiter:Weiter Seite CGI und Perl - Web-Server und andere Server
zurück:Zurück Seite Microsoft Filter und Datenanbindung
 

© 2000 Seite das Redaktionsteam