Event-Problem im IE
I Carsten
- javascript
Hallo Forum!
Ich habe ein Problem mit einem Skript. Es läuft super im FF, Opera und Safari. Nur der IE will natürlich nicht.
Dummerweise gibt mir der IE (hier v.7) nicht einmal einen Fehler.
Ich konnte den Fehler nun aber auf ein kleines Stück Code eingrenzen.
Es scheint wohl so, als ob der IE die Event-Handler onmousedown und onmouseup nicht richtig verarbeitet.
Hier der Code, zum Testen schön eingebettet in XHTML:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>Unbenanntes Dokument</title>
<script type="text/javascript">
window.onmousedown = function(e){
document.getElementById('foo').innerHTML = 'blub';
}
</script>
</head>
<body>
<div id="foo">bla</div>
</body>
</html>
Was sollte also passieren?
Beim Klick auf "bla" soll aus "bla" "blub" werden.
Was passiert stattdessen?
Nichts. Kein Fehler, keine Warnung, nichts.
Wo liegt denn nur mein Fehler?
Ich hab jetzt mehrere Stunden gesucht und probiert aber ich komm einfach nicht darauf.
Jetzt bin ich frustriert :(
Wär wirklich schön wenn mir jemand bei diesem Problem helfen könnte.
I Carsten
Ich konnte den Fehler nun aber auf ein kleines Stück Code eingrenzen.
Es scheint wohl so, als ob der IE die Event-Handler onmousedown und onmouseup nicht richtig verarbeitet.
Ja, er möchte diese Events an window.document registriert haben.
Struppi.
Hallo Struppi!
Ja, er möchte diese Events an window.document registriert haben.
Ach du meine Güte...
Also meine erste Idee war jetzt
window.onmousedown=window.document.onmousedown=function(e){
// Funktionsinhalt
}
Dabei feuert mir der FF jetzt aber 2 mal. Opera und Safari nicht getestet.
Wenn ich eine Abfrage einbaue, meldet mir die Fehlerkonsole des FF einen Syntaxfehler:
if(window.onmousedown || window.document.onmousedown) function(e){
// Funktionsinhalt
}
Wie muss ich die Abfrage jetzt schreiben damit der FF nur 1 Event registriert?
Oder soll ich einfach window.onmousedown
entfernen? Der FF spielt dann noch mit, aber ist das noch Regelkonform?
I Carsten
Hi,
Wenn ich eine Abfrage einbaue, meldet mir die Fehlerkonsole des FF einen Syntaxfehler:
if(window.onmousedown || window.document.onmousedown) function(e){
// Funktionsinhalt
}
Von Fehlern zu sprechen, ohne die exakte Meldung zu benennen, ist blöd.
Die Abfrage ist sinnfrei - Eventhandler-Attribute haben keinen Wert, so lange man ihnen keinen zuweist.
> Oder soll ich einfach `window.onmousedown`{:.language-javascript} entfernen? Der FF spielt dann noch mit, aber ist das noch Regelkonform?
Klicks als das Dokument betreffend anzusehen, ist der Normalfall.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Hallo ChrisB!
Oder soll ich einfach
window.onmousedown
entfernen? Der FF spielt dann noch mit, aber ist das noch Regelkonform?Klicks als das Dokument betreffend anzusehen, ist der Normalfall.
Zugegeben fand ich window.event auch sehr großzügig vom Firefox.
Dann ist ja jetzt alles bestens :)
Danke, I Carsten