Movatterモバイル変換


[0]ホーム

URL:


Rheinwerk Computing< openbook >Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Webbrowser
3 JavaScript einbauen
4 Programmieren mit JavaScript
5 Datum
6 Zufall
7 Browserinformationen
8 Fenster
9 Formulare
10 Frames und Iframes
11 Grafiken
12 Cookies
13 Objekte und Arrays
14 Ereignisbehandlung
15 Fehlerbehandlung
16 DOM
17 DHTML und CSS
18 AJAX
19 XML
20 Web Services
21 AJAX-Frameworks
22 Plugins
23 Multimedia
24 Java
25 Serverseitige Technologien
26 JavaScript goes .NET
27 Code schützen
28 Top Secret: Passwortschutz
29 Signierte Skripte
30 JavaScript und Sicherheit
31 Navigation
32 Warenkorb
33 JavaScript-Bibliotheken
34 Referenz
35 Quellen im Web
36 Die Zukunft von JavaScript
Index
Ihre Meinung?

 <<   zurück
JavaScript und AJAX von Christian Wenz
Das umfassende Handbuch
Buch: JavaScript und AJAX

JavaScript und AJAX
839 S., mit DVD, 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-859-1
gpKapitel14 Ereignisbehandlung
 gp14.1 Events mit dem Netscape Navigator
  gp14.1.1 Neue Ereignisse
  gp14.1.2 Ereignisse als Objekteigenschaften
  gp14.1.3 Ereignisse abfangen
  gp14.1.4 Ereignisbehandlung
  gp14.1.5 Ereignisse umleiten
  gp14.1.6 Ereignisse durchleiten
  gp14.1.7 Tastatureingaben
 gp14.2 Events mit dem Internet Explorer
  gp14.2.1 Neue Ereignisse
  gp14.2.2 Ereignisse als Objekteigenschaften
  gp14.2.3 Spezielle Skripten
  gp14.2.4 Ereignisse abfangen
  gp14.2.5 Bubbling
  gp14.2.6 Das Event-Objekt
 gp14.3 Events mit beiden Browsern
  gp14.3.1 Browserunabhängigkeit
  gp14.3.2 Benutzereingaben
 gp14.4 Andere (und moderne) Browser


Rheinwerk Computing

14.3 Events mit beiden Browsern downtop

In diesem Abschnitt werden noch kurz Strategien vorgestellt, wie Sie Ihre Skripten auf beiden Browsern ohne Fehler benutzen können – vielleicht auf älteren Browsern nicht mit der vollen Funktionalität, aber immerhin ohne Fehlermeldungen. Außerdem werden kurz die Unterschiede bei der Abfrage von gedrückten Tastatur- und Maustasten bei den beiden »großen« Browsern beleuchtet.


Rheinwerk Computing

14.3.1 Browserunabhängigkeit downtop

Im Folgenden sollen einige allgemeine Konzepte vorgestellt werden, die bei der fortgeschrittenen, browserunabhängigen Ereignisbehandlung von Nutzen sein können.

Netscape oder nicht?

In Sachen Ereignis fällt es ziemlich leicht, den Netscape Navigator vom Internet Explorer zu unterscheiden. Sie verwenden dazu die Objektüberprüfung:

if (window.Event) {   //Code für den Netscape} else {   //Code für den Internet Explorer}

Ereignisse abfangen

Wie ich bereits erwähnt habe, kennt der Internet Explorer die MethodecaptureEvents() nicht; durch das Bubbling-Prinzip ist sie ja auch nicht nötig, da Ereignisse nach oben weitergereicht werden. Soll etwa ein Mausklick abgefangen werden, so kann man sich mit folgendem Code behelfen:

function mclick() {   window.status += "[Mausklick]";}if (window.Event) {   document.captureEvents(Event.MOUSEUP);}document.onclick = mclick;

Denken Sie daran, dass der Internet Explorer beimdocument-Objekt aufhört und nicht mehr weiter nach oben gehen kann; Folgendes wäre also falsch:

if (window.Event) {   window.captureEvents(Event.MOUSEUP);}window.onclick = mclick;

Ereigniseigenschaften

Wie bereits angedeutet wurde, gibt es bei der Abfrage von Ereignissen Unterschiede zwischen den beiden Browsern: angefangen bei der Übergabe als Parameter bis hin zur Schreibweise. Auch hier kann man sich wieder mit einer Objektüberprüfung behelfen:

function mclick(e) {   var ev = (window.Event) ? e : window.event;   window.status += "[" + ev.type + "]";}if (window.Event) {   document.captureEvents(Event.MOUSEUP);}document.onclick = mclick;

Beim Netscape Navigator wird auf den Parametere zugegriffen, beim Internet Explorer aufwindow.event (oderevent). Die Eigenschafttype ist bei beiden Browsern identisch, kann also problemlos verwendet werden. Bei dem Ziel des Ereignisses ist das etwas aufwändiger. Man benötigt eine eigene Anweisung:

function mclick(e) {   var ev = (window.Event) ? e : window.event;   var ziel = (window.Event) ? ev.target : ev.srcElement;   window.status += "[" + ev.type + "@" + ziel.name + "]";}if (window.Event) {   document.captureEvents(Event.MOUSEUP);}document.onclick = mclick;

Rheinwerk Computing

14.3.2 Benutzereingaben toptop

In den vorherigen Abschnitten wurden Tastatureingaben und Mausklicks eher stiefmütterlich behandelt; beispielsweise wurden Sondertasten wie etwa (Alt) und (Strg) nicht erwähnt. Das soll sich an dieser Stelle ändern. Zwar unterscheiden sich auch hier die beiden Browser, aber inzwischen sollten Sie so abgehärtet sein, dafür eine Lösung zu finden.

Mausklicks

PC-Mäuse haben zwei oder drei Tasten. Da ist es doch interessant herauszufinden, welche dieser Tasten gedrückt worden ist. Bevor Sie sich irrwitzige Anwendungsmöglichkeiten ausdenken, eine kleine Warnung: Beispielsweise ruft die rechte Maustaste ein Kontextmenü auf; das Ereignis tritt (für den Browser) also gar nicht ein. Viele Maustreiber belegen die mittlere Maustaste mit einem Doppelklick, und damit ist die Taste für den differenzierten Einsatz auch nicht sonderlich geeignet.

Beim Netscape Navigator erhält man die Nummer der gedrückten Maustaste aus derwhich-Eigenschaft des aufgetretenen Ereignisses. Beim Internet Explorer dagegen gibt es hierfür eine gesonderte Eigenschaft, und zwar die Eigenschaftbutton des Ereignisses.

<html><head><title>Maustasten</title><script type="text/javascript"><!--function taste(e) {   if (window.Event) {      var maustaste = e.which;   } else {      var maustaste = e.button;   }   window.status += "[geklickt:" + maustaste + "]";}//--></script></head><body onload="document.forms[0].elements[0].onclick=taste; window.status='';"><h1>Maustasten</h1><form><input type="button" name="Button1" value="Klick mich" /></form></body></html>

Tasten

Wie Sie bereits gesehen haben, erhält man den ASCII-Code beim Netscape Navigator aus derwhich-Eigenschaft des Ereignisses; beim Internet Explorer gibt es wieder eine eigene Eigenschaft, nämlichkeyCode.Bei verschiedenen Plattformen gibt es hin und wieder Bugs in der Umsetzung, die aber mit der MethodeString.fromCharCode()zusammenhängen. Bei manchen Internet Explorer-Versionen für den Macintosh werden einige seltenere Zeichen falsch zurückgegeben. Verlassen Sie sich im Zweifel also auf den ASCII-Code; im Produktionsbetrieb können Sie dennoch immer auffromCharCode() zurückgreifen.

<html><head><title>Tastatur</title><script type="text/javascript"><!--function taste(e) {   if (window.Event) {      var tastatur = e.which;   } else {      var tastatur = e.keyCode;   }   window.status += "[getippt:" +      String.from CharCode(tastatur) + "]";//--></script></head><body onload="document.forms[0].elements[0].onclick=taste; window.status='';"><h1>Tastatur</h1><form><input type="text" name="text1" /></form></body></html>

Sondertasten

Mit den Sondertasten verhält es sich vom Prinzip her ähnlich wie mit Tastatureingaben und Mausklicks. Während beim Netscape Navigator möglichst viel in eine Eigenschaft oder Variable gepackt worden ist (ressourcensparend), kann man beim Internet Explorer explizit auf eine bestimmte Eigenschaft pro Sondertaste zugreifen (benutzerfreundlich). Eine Einschränkung gibt es jedoch: Beim Netscape Navigator können die Tasten (Alt), (Strg), (Ş) und (€) abgefragt werden, beim Internet Explorer lediglich (Alt), (Strg) und (Ş). Die (Ctrl)-Taste, das Macintosh-Äquivalent zur (Strg)-Taste, kann beim Macintosh-IE ebenfalls nicht abgefragt werden.

Anstelle von langen Erklärungen folgt ein selbsterklärendes Beispiel. Während beim Internet Explorer einzelne Eigenschaften abgefragt werden, muss man beim Netscape wieder eine bitweise Operation, diesmal UND (&), verwenden.

<html><head><title>Sondertasten</title><script type="text/javascript"><!--function taste(e) {   window.status += "[";   if (window.Event && parseInt(navigator.appVersion)==4) {      //Netscape 4.x      if (e.modifiers & Event.ALT_MASK) {         window.status += "{Alt}";      }      if (e.modifiers & Event.CONTROL_MASK) {         window.status += "{Strg}";      }      if (e.modifiers & Event.SHIFT_MASK) {         window.status += "{Umschalt}";      }      if (e.modifiers & Event.META_MASK) {         window.status += "{Meta}";      }  } else { //IE      if (!e) {         e = window.event;      }      if (e.altKey) {         window.status += "{Alt}";      }      if (e.ctrlKey) {         window.status += "{Strg}";      }      if (e.shiftKey) {         window.status += "{Umschalt}";      }   }   window.status += "]";}//--></script></head><body onload="document.forms[0].elements[0].onclick=taste; window.status='';"><h1>Sondertasten</h1><form><input type="button" name="Button1" value="Klick mich an!" /></form></body></html>

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 14.5    Auch gedrückte Sondertasten können abgefragt werden.

Testen Sie dieses Programm, indem Sie ein paar der Sondertasten gedrückt halten und dann mit der Maus auf die Schaltfläche klicken.

 <<   zurück
  
 Zum Rheinwerk-Shop
Neuauflage: JavaScript
Neuauflage: JavaScript
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Einstieg in JavaScript






 Einstieg in JavaScript


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen |Datenschutz |Impressum

Rheinwerk Verlag, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77,service@rheinwerk-verlag.de

Cookie-Einstellungen ändern



[8]ページ先頭

©2009-2025 Movatter.jp