L'errore su target
è dovuto al codice nel gestore eventi che tenta di leggere la proprietà target
dell'oggetto Event
associata all'evento di modifica. Si potrebbe provare a passare in un faux-evento di ingannare esso:
var range= document.getElementById('range');
range.onchange({target: range});
o, se è possibile, modificare il codice del gestore da utilizzare al posto di this
event.target
.A meno che non si stia utilizzando la delega (rilevando gli eventi di cambiamento sull'oggetto figlio da un genitore, qualcosa che è problematico per gli eventi di modifica perché IE non li "bolla"), la destinazione dell'evento change sarà sempre l'elemento il gestore di eventi è stato registrato, rendendo ridondante event.target
.
Se il gestore eventi utilizza più proprietà di Event
rispetto a target
, è necessario simulare di più o passare all'interfaccia del browser "reale" agli eventi di distribuzione. Ciò sarà anche necessario se gli ascoltatori di eventi potrebbero essere in uso (addEventListener
o attachEvent
in IE) in quanto non saranno visibili sulla proprietà diretta onchange
. Questo dipende dal browser (fireEvent
per IE, dispatchEvent
per gli standard) e non è disponibile per i browser più vecchi o più oscuri.
Penso che "fireEvent()" sia una cosa solo IE. I browser conformi agli standard usano 'dispatchEvent()'. – Pointy
Ricevo un errore "Uncaught TypeError: Object # non ha alcun metodo 'fireEvent'" con questo –
Mircea
@Pointy: hai ragione, ho aggiornato - grazie –