[js] onreadystatechange eventhandler toewijzen in IE

Pagina: 1
Acties:

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 16-12-2025
ik ben bezig een eigen "AJAX" object te schrijven in javascript. omdat ieder object vrij inzetbaar moet zijn wil ik aan ieder object een andere onreadystatechange eventhandler toe kunnen wijzen. dit doe ik door de functienaam als een parameter aan de constructor mee te geven, die dan op zijn beurt de eventhandler zet.
JavaScript:
1
2
//constructor
this.HTTPRequest.onreadystatechange = functienaam;

in FF gaf dit allemaal geen problemen, maar IE deed weer eens moeilijk. na een middag nonstop debuggen ben ik erachter gekomen dat IE een directe verwijzing naar een functie niet pikt. Je krijgt geen foutmeldingen, alleen je object wordt niet geinstantieerd. doe je het echter op de volgende manier dan werkt het feilloos.
JavaScript:
1
2
3
4
//constructor
this.HTTPRequest.onreadystatechange = function() {
  functienaam();
}

Nou is mijn vraag waarom IE zo moeilijk doet en niet gewoon een directe verwijzing naar een functie pakt.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

De antwoord op je vraag staat toch in je sig :?

IE is een onderdeel van windows :Y)

[ Voor 29% gewijzigd door SchizoDuckie op 01-09-2006 18:10 ]

Stop uploading passwords to Github!


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Het hoort wel te werken hoor, definieer je die functie misschien nadat die code uitgevoerd wordt?

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 16-12-2025
nou breekt mijn klomp helemaal :p. ik had mijn document eerst als volgt opgebouwd:
- object declaratie
- functie declaratie
- object instantiatie en aanroepen

dit resulteerde dus in mijn zojuist beschreven probleem. op verzoek van Erkens heb ik even mijn functie declaratie boven mijn object declaratie gezet, en voila het werkt. enerzijds verbaast me dit, anderszijds niet. ten eerste, waarom slikte FF mijn "fout" wel en IE niet. ten tweede, wat doet hier de volgorde van declareren ertoe. het daadwerkelijk aanmaken van het object geschied helemaal als laatste, en tegen die tijd zijn alle functies al bekend. heeft dit te maken met het feit dat javascript prototyped based is ipv class based, en dat je dus in feite al een object maakt bovenin? en waarom werkt de directe verwijzing dan niet, en de call naar de functie in questie binnen een nieuw gedeclareerde functie wel?
ik zou hier graag wat opheldering over willen hebben O-)

[ Voor 7% gewijzigd door tombo_inc op 01-09-2006 18:59 ]

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition