Der Fehler über target
liegt daran, dass im Ereignishandler Code vorhanden ist, der versucht, die target
-Eigenschaft des Objekts Event
zu lesen, das dem Änderungsereignis zugeordnet ist. Sie könnten versuchen, in einem faux-Ereignis vorbei, es zu täuschen:
var range= document.getElementById('range');
range.onchange({target: range});
oder, wenn Sie können, den Handler-Code ändern this
statt event.target
zu verwenden.Wenn Sie keine Delegierung verwenden (Änderungsereignisse für untergeordnetes Objekt von einem übergeordneten Element abfangen, was für Änderungsereignisse problematisch ist, weil der IE sie nicht "sprudelt"), ist das Ziel des Änderungsereignisses immer das Element des Ereignisbehandlers wurde registriert und macht event.target
überflüssig.
Wenn der Event-Handler mehr Eigenschaften von Event
als nur target
verwendet, müssten Sie mehr fälschen, oder gehen Sie für die "echte" Browser-Schnittstelle zum Versenden von Ereignissen. Dies ist auch erforderlich, wenn Event-Listener möglicherweise verwendet werden (addEventListener
oder attachEvent
in IE), da sie auf der direkten onchange
-Eigenschaft nicht sichtbar sind. Dies ist Browser-abhängig (fireEvent
für IE, dispatchEvent
für Standards) und nicht für ältere oder obskure Browser verfügbar.
Ich denke, 'fireEvent()' ist ein IE-nur Sache. Standardkonforme Browser verwenden 'dispatchEvent()'. – Pointy
Ich bekomme ein "Uncaught TypeError: Objekt # hat keine Methode 'FireEvent'" Fehler mit dieser –
Mircea
@ Pointie: Sie haben Recht, ich aktualisiert - danke –