3Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
178
178
EMPFEHLEN
-
Hallo in die Runde,
weiß jemand, wie man den keyCode 27 (Escape) beim Internet-Explorer einfängt?
Firefox, Opera ist kein Problem, aber im IE muss der Anwender explizit einen Button betätigen, weil es mir nicht gelingt, dass die Escapetaste zieht.
Habe mir schon diversen Rat geholt wie hier und hier, komme aber nicht weiter.
Grüße
Idi
-
Code wäre ganz sinnvoll

Im IE bekommst du kein Event Objekt übergeben, sondern musst auf window.event zugreifen. Und dann heißt es auch nicht keyCode sondern which.
-
Hai CPoly,
habe mir schon so etwas gedacht.
Allerdings sollte doch zumindest der Event ziehen, war mein Gedanke, schließlich ist er ja registiert - hoffe ich jedenfalls...
Denn es kommt keine Fehlermeldung bei der Registrierung, noch eine beim Löschen, allerings wird auch der Event nicht ausgelöst.
Muss ich den onkeypress-Event evtl. anders registrieren?
Momentan mache ich das so:
Code :1 2 3 4 5 6 7 8
function addEvent (node,evt,fnc) { if (node.addEventListener) node.addEventListener(evt,fnc,false); else if (node.attachEvent) node.attachEvent('on'+evt,fnc); else... addEvent (window, 'keypress', meineKeyPressFunction);
Die Funktion "meineKeyPressFunction" wird nicht angelaufen.
Löschen dann mit removeEvent.
Grüße
IdiGeändert von Netzwerkidi (04.10.11 um 12:10 Uhr)
-
Nimm besser "document" anstatt "window". Außerdem ist "keypress" eher für Zeichen-Eingaben gedacht. Nimm also lieber "keydown" oder "keyup".
HTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Escape key</title> </head> <body> <script type="text/javascript"> /* <![CDATA[ */ function meineKeyPressFunction(e) { e = e || window.event; alert(e.keyCode || e.which); } function addEvent (node, evt, fnc) { if (node.addEventListener) node.addEventListener(evt, fnc, false); else if (node.attachEvent) node.attachEvent('on' + evt, fnc); } addEvent (document, 'keydown', meineKeyPressFunction); /* ]]> */ </script> </body> </html>
-
Merci, CPoly. Aber bedeutet das, dass man die Escape im IE nicht nutzen kann? Das wäre wirklich dumm, weil die Escape-Taste die Taste schlechthin für den Abbruch von irgendetwas ist.
Aber wo Du gerade da bist, ich habe noch eine weitere, wahrscheinlich nur klitzekleine Herausforderung für Dich.
Wie schreibt man einen Callback?
Ich will, dass in der folgenden Funktion erst dann die Meldung kommt, wenn der Loop endgültig fertig ist.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<html> <body> <h1 id="head1">Header 1</h1> <script type="text/javascript"> function loop (obj,n) { obj.style.fontSize=n+"px"; n++; if (n<50) { setTimeout(function () {loop(obj,n);},10); } } var o = document.getElementById('head1'); loop(o,10); document.write('Fertigmeldung - zu früh******!'); </script> </body> </html>
-
Doch, kannst du. Bei mir gibt der oben gezeigte Code in IE 6 und 8 "27" aus, wenn ich die ESC Taste drücke. Das wird ja in anderen JavaScript Projekten wie z.B. dem jQuery UI Dialog zum schließen benutzt. Also eigentlich sollte das kein Problem sein.
Um callbacks zu verstehen, muss man wissen, dass Funktionen nichts anderes sind als Instanzen der Klasse "Function" (ja, man kann Funktionen auch mittels Konstruktor erzeugen). Deshalb kannst du die wie jedes andere Objekt einfach übergeben.
In dem Fall ist es eine Anonyme Funktion. Aber du kannst auch irgendwo im Code "function foo()" geklarieren und als Parameter nur noch "foo" übergeben (OHNE die Klammer hintendran! Dadurch würde sie ja ausgeführt).HTML-Code:<html> <body> <h1 id="head1">Header 1</h1> <script type="text/javascript"> function loop (obj, n, fn) { obj.style.fontSize=n+"px"; n++; if (n<50) { setTimeout(function () {loop(obj,n,fn);},10); } else { fn(); } } var o = document.getElementById('head1'); loop(o, 10, function() { alert('Fertigmeldung - zu früh******!'); }); </script> </body> </html>
Übrigens solltest du kein "document.write" benutzen, sondern eher getElementById (und ähnliche) und innerHTML.
-
Ach, jetzt, wo ich den Esc-/KeyDown-Code von dir teste, merke ich erst, was du eigentlich gemeint hast.
Für KeyDown einen Event registrieren, aber dann trotzdem Esc nutzen.
Wobei, liebt wohl am Bezug: document statt window. Aber egal. Klappt nun so, wie ich das wollte.
Hast mir definitiv den Tag gerettet, CPoly!
Ähnliche Themen
-
verschiedene php versionen auf apache konfigurieren
Von free123 im Forum PHPAntworten: 7Letzter Beitrag: 20.08.08, 22:56 -
Hintergrund zieht im FF nicht mit
Von kiesha im Forum CSSAntworten: 2Letzter Beitrag: 17.09.07, 10:50 -
KeyCode-Script läuft nicht im FF
Von juliusk im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 11.08.07, 14:26 -
Die 13 ½ Leben des Käpt´n Blaubär - verschiedene Hörbuch Versionen
Von Jan-Frederik Stieler im Forum LiteraturAntworten: 3Letzter Beitrag: 31.10.05, 11:31 -
firefox + keycode in <input> = geht nicht
Von bled im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 20.03.05, 13:36





Zitieren


Login





