window.event.keyCode und firefox2.0
Marian Wischkony
- javascript
Hallo,
ich habe folgendes Problem. Ich will wenn ein Benutzer die Tastatur betätigt den keyCode erfassen um damit die Seite weiter steuern zu können. Folgenden Code kennt wahrscheinlich jeder aus Selfhtml:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<script type="text/javascript">
function Tastendruck (Ereignis) {
if (!Ereignis)
{
Ereignis = window.event;
alert(Ereignis.keyCode);
}
}
document.onkeyup = Tastendruck;
</script>
</head><body>
<p><a href="../event.htm#key_code">zurück</a></p>
</body>
</html>
Wenn ich diesen Code Teste und fröhlich auf der Tastatur rumtippe passiert nichts(Firefox2.0). Im IE geht das Wunderbar.
Hat jemand die gleichen Erfahrungen gemacht?
Hab es einfach mal nur um es zu testen auch mit window.wich probiert...ging auch nicht.
Ne idee was ich übersehen haben könnte.
Der Code ist aus Selfhtml , deswegen behaupte ich das dieser Fehlerfrei ist ;) .
Marian
Ne idee was ich übersehen haben könnte.
du hast die Erklärung des Codes nicht gelesen.
Struppi.
Ne idee was ich übersehen haben könnte.
du hast die Erklärung des Codes nicht gelesen.
Struppi.
Doch doch das habe ich...habe schon längst das keypress mit einem keyup ersetzt. Das müsste auch im code stehen den ich hier reingesetzt habe.
Natürlich kann es sein das ich irgendwas falsch verstanden habe...nur was???
Der Text aus selfhtml:
Mozilla Firefox 1.0 kennt die Eigenschaft keyCode zwar, sie enthält jedoch nur bei den Ereignissen keyup und keydown sinnvolle Werte. Bei keypress-Ereignissen hat die Eigenschaft bei normalen Tasten, z.B. Buchstaben, immer den Wert 0.
Sow ie ich das verstehe müsste keycode(in verbindung mit onkeyup oder onkeydown) dann anwendbar sein.
Hoffentlich ist das verständlich...trotzdem danke für die antwort.
Marian
Natürlich kann es sein das ich irgendwas falsch verstanden habe...nur was???
Der Text aus selfhtml:
Mozilla Firefox 1.0 kennt die Eigenschaft keyCode zwar, sie enthält jedoch nur bei den Ereignissen keyup und keydown sinnvolle Werte. Bei keypress-Ereignissen hat die Eigenschaft bei normalen Tasten, z.B. Buchstaben, immer den Wert 0.
OK stimmt, du müßtest das komplette Kapitel durchlesen um dein Problem zu verstehen.
Um den Tastencode Browserübergreifend zu erhalten geht sowas:
function Tastendruck (Ereignis) {
if (!Ereignis) Ereignis = window.event
var key = Ereignis.keyCode || Ereignis.which;
alert(key);
}
document.onkeyup = Tastendruck;
Struppi.
Mit dem wich geht es eben doch, Danke für eure Zeit.
Marian
Hallo erst mal :),
habe mich jetzt weiter damit beschäftigt und festgestellt das der Firefox mit window.event.wich gut arbeitet.
So, habe aber jetzt das Problem, daß dieses Beispiel Dokumentweit eingesetzt wurde. Hier der Code(das hier funktioniert und ist zum großteil aus Selfhtml):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<script type="text/javascript">
function Position (Ereignis) {
alert("Keyboardtaste: " + Ereignis.which);
}
document.onkeyup = Position;
</script>
</head><body>
<p>blub</p>
</body>
</html>
Jetzt wollte ich dieses event aber nur für ein Element abfangen und schon ging es nicht mehr :(.
Hier der Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<script type="text/javascript">
function Position () {
var Ereignis=window.event;
alert("Keyboardtaste: " + Ereignis.which);
}
</script>
</head><body>
<input onkeyup="Position()"></input>
<p>blub</p>
</body>
</html>
Ich sollte dazu sagen das ich gleiches mit keyCode unter dem IE ausprobiert habe. Da ging dieses Vorgehen. Stehe gerade voll auf der Leitung und finde den Fehler einfach nicht:(.
Vielleicht jemand eine Idee?
Marian
hi,
function Position (Ereignis) {
alert("Keyboardtaste: " + Ereignis.which);
}
document.onkeyup = Position;
Durch diese Zuweisung des Eventhandlers wird das event-Objekt automatisch als erster Parameter an die Funktion übergeben.
<input onkeyup="Position()"></input>
Wenn du den Eventhandler aber derart direkt im Code notierst, musst du es noch explizit als Parameter übergeben.
gruß,
wahsaga
habe mich jetzt weiter damit beschäftigt und festgestellt das der Firefox mit window.event.wich gut arbeitet.
nein, tut er nicht. FF kennt kein Objekt window.event
So, habe aber jetzt das Problem, daß dieses Beispiel Dokumentweit eingesetzt wurde. Hier der Code(das hier funktioniert und ist zum großteil aus Selfhtml):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
<script type="text/javascript">
function Position (Ereignis) {
alert("Keyboardtaste: " + Ereignis.which);
}
document.onkeyup = Position;
Was stört dich an der Version, die ich dir gezeigt hatte?
Die Funktioniert in allen Browsern
Jetzt wollte ich dieses event aber nur für ein Element abfangen und schon ging es nicht mehr :(.
dort musst du das event explizit übergeben.
<input onkeyup="Position()"></input>
<input onkeyup="Position(event)"></input>
Struppi.
habe mich jetzt weiter damit beschäftigt und festgestellt das der Firefox mit window.event.wich gut arbeitet.
nein, tut er nicht. FF kennt kein Objekt window.event
dort musst du das event explizit übergeben.
<input onkeyup="Position()"></input>
<input onkeyup="Position(event)"></input>
Struppi.
Jetzt verstehe ich meinen Denkfehler. Ich dachte weil es einen window.event im IE gibt das dies dann auch im FF existiert.
Mit der Übergabe wußte ich auch nicht, das es sofort als event objekt betrachtet wird. Ihr wart mir eine riesen Hilfe.
Meine falschen Annahmen hätten mich ja noch ewig aufgehalten.
Übrigens...deine Version hat mich nicht gestört, ich bin nur am lernen, deswegen diese rumprobiererei :).
DAAAAANKE an euch beide...aeh drei...
Ah ein Frage...wo kann ich den herausfinden welche Browser welche Objekte kennen...ist das wirklich alles in SELFHTML zu finden?????
Bisher nicht drüber gestolpert...jedenfalls nichts in Form einer Liste gesehen.
Marian
Hallo Marian,
Ereignis = window.event;
alert(Ereignis.keyCode);
du meinst dieses Beispiel: KeyCode
Hast du dir angesehen welche Browser window.event.keyCode unterstützen, und das was unter "Beachten Sie" steht?
Grüße,
Jochen