Eventlistener funktioniert nicht im Firefox
Michi
- javascript
0 Felix Riesterer0 Axel Richter0 Struppi1 Axel Richter0 MudGuard
Hallo,
bei folgendem Code funktioniert der Eventlistener im IE aber nicht im FF und ich komme nicht dahinter, warum:
var wh;
wh = document.createElement("IMG");
wh.src = "pics/wh.gif";
wh.id = whID;
wh.alt = "Wiederherstellen";
if (wh.attachEvent) wh.attachEvent("onclick", wiederherstellen);
if (wh.addEventListener) wh.addEventListener('click', wiederherstellen, false);
var whs = wh.style;
whs.clear = "left";
whs.width = "16px";
whs.margin = "0 0 0 5px";
whs.styleFloat = "left";
whs.cssFloat = "left";
document.getElementById("blabla").insertBefore(wh, was);
Wenn ich im IE das Bild klicke wird die Funktion aufgerufen, im FF jedoch passiert gar nichts. Es werden auch keine Fehler geworfen.
Danke und Grüße
Michi
Lieber Michi,
ich erkenne keinen offensichtlichen Fehler.
// IE-Syntax
if (wh.attachEvent) wh.attachEvent("onclick", wiederherstellen);
// Mozilla-Syntax
if (wh.addEventListener) wh.addEventListener('click', wiederherstellen, false);
Soweit alles klar...
Wenn ich im IE das Bild klicke wird die Funktion aufgerufen, im FF jedoch passiert gar nichts. Es werden auch keine Fehler geworfen.
Konntest Du mit einem testweisen alert unzweifelhaft feststellen, dass die Funktion "wiederherstellen" tatsächlich nicht aufgerufen wurde?
Ich verwende inzwischen meine eigene Funktion zum Zuweisen von Eventhandlern:
// Funktion zum Setzen eines Eventhandlers
addEvent : function (ev, obj, handle) {
if (document.body.addEventListener) {
obj.addEventListener(ev, handle, false);
obj.addEventListener(ev, handle, false);
} else {
obj.attachEvent("on" + ev, handle);
obj.attachEvent("on" + ev, handle);
}
},
// Funktion zum Löschen eines Eventhandlers
removeEvent : function (ev, obj, handle) {
if (document.body.removeEventListener) {
obj.removeEventListener(ev, handle, false);
obj.removeEventListener(ev, handle, false);
} else {
obj.detachEvent("on" + ev, handle);
obj.detachEvent("on" + ev, handle);
}
},
Vielleicht hilft Dir das weiter?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo,
Konntest Du mit einem testweisen alert unzweifelhaft feststellen, dass die Funktion "wiederherstellen" tatsächlich nicht aufgerufen wurde?
Ja. Wird definitiv nicht aufgerufen.
Kann es evtl. sein, dass es irgendwie mit dem nachträglichen einhängen des Knotens, oder einem der Styles ein Problem gibt?
Greets
Michi
Hi,
if (document.body.addEventListener) {
obj.addEventListener(ev, handle, false);
obj.addEventListener(ev, handle, false);
} else {
obj.attachEvent("on" + ev, handle);
obj.attachEvent("on" + ev, handle);
}
Doppelt hält besser? Oder warum machst Du jeweils zwei identische Aufrufe?
obj.removeEventListener(ev, handle, false);
obj.removeEventListener(ev, handle, false);
s.o.
obj.detachEvent("on" + ev, handle);
obj.detachEvent("on" + ev, handle);
s.o.
cu,
Andreas
Lieber Andreas,
Doppelt hält besser? Oder warum machst Du jeweils zwei identische Aufrufe?
das ist mir tatsächlich noch nie aufgefallen... Sehr seltsam!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo Felix.
Doppelt hält besser? Oder warum machst Du jeweils zwei identische Aufrufe?
das ist mir tatsächlich noch nie aufgefallen... Sehr seltsam!
Das heißt, du siehst im Alltag sowieso alles doppelt?
Einen schönen Mittwoch noch.
Gruß, Ashura
Hallo,
bei folgendem Code funktioniert der Eventlistener im IE aber nicht im FF und ich komme nicht dahinter, warum:
var wh;
wh = document.createElement("IMG");
wh.src = "pics/wh.gif";
wh.id = whID;
^wo kommt whID her?
wh.alt = "Wiederherstellen";
if (wh.attachEvent) wh.attachEvent("onclick", wiederherstellen);
if (wh.addEventListener) wh.addEventListener('click', wiederherstellen, false);
var whs = wh.style;
whs.clear = "left";
whs.width = "16px";
whs.margin = "0 0 0 5px";
whs.styleFloat = "left";
whs.cssFloat = "left";
document.getElementById("blabla").insertBefore(wh, was);
^ wo kommt was her?
Wenn ich im IE das Bild klicke wird die Funktion aufgerufen, im FF jedoch passiert gar nichts. Es werden auch keine Fehler geworfen.
Bei mir funktioniert ein einfacher Test mit beiden Browsern.
Du kannst aber auch einfach
wh.onclick = wiederherstellen;
schreiben. Das sollte in allen Browsern funktionieren.
viele Grüße
Axel
var wh;
wh = document.createElement("IMG");
wh.src = "pics/wh.gif";
wh.id = whID;
wh.alt = "Wiederherstellen";
if (wh.attachEvent) wh.attachEvent("onclick", wiederherstellen);
if (wh.addEventListener) wh.addEventListener('click', wiederherstellen, false);
Wenn du dem klick Event nur eine Funktion zuweisen willst, reicht durchaus:
wh.onclick = wiederherstellen;
Das funktioniert dann auf jeden Fall in allen Browsern.
whs.styleFloat = "left";
whs.cssFloat = "left";
Was ist das, kenn ich gar nicht?
Was spricht gegen: whs.float = "left";
Struppi.
Hallo,
whs.styleFloat = "left";
whs.cssFloat = "left";Was ist das, kenn ich gar nicht?
Was spricht gegen: whs.float = "left";
Es spricht dagegen, dass es nicht existiert, siehe: http://de.selfhtml.org/javascript/objekte/style.htm#style_eigenschaften, im Gegensatz zu cssFloat und styleFloat für den IE.
viele Grüße
Axel
Hi,
whs.styleFloat = "left";
whs.cssFloat = "left";Was ist das, kenn ich gar nicht?
Was spricht gegen: whs.float = "left";
Es spricht dagegen, dass es nicht existiert, siehe: http://de.selfhtml.org/javascript/objekte/style.htm#style_eigenschaften, im Gegensatz zu cssFloat und styleFloat für den IE.
Und der Grund, warum es nicht existieren darf, ist hier nachzulesen: http://de.selfhtml.org/javascript/sprache/reserviert.htm
cu,
Andreas