[Js] Dynamisch Externe Scripten Includen - "Onload" Pas Next

Pagina: 1
Acties:
  • 125 views sinds 30-01-2008
  • Reageer

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Ok, het idee om scripts in te laden nadat de pagina geladen is, was nadrukkelijk in de search te vinden en wist ik ook wel.. dat is niet het probleem. Maar de scriptjes moeten 1 voor 1 ingeladen worden. Dus ik ben aan het prutsen gegaan met .onload en .readyState maar dat lijkt hem niet echt te worden. Hier mijn script:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{ /* In functie */

   oScript = document.getElementsByTagName("head")[0].appendChild(fAddScript(sSrc));
    
    /*while (!oScript.onload)                WERKT 
    { window.status = 'bezig'; }             NIET
    
    window.status = 'klaar';*/

    while (oScript.readyState == 'loading')
    {               // werkt ook 
    }               // NIET
    alert(oScript.readyState);
}

function fAddScript(src)
{
    var oScript = document.createElement('script');
    
    oScript.type = "text/javascript";
    oScript.src = "./test2.asp?naam=" + src
        
    return oScript;
}

Beiden laten IE crashen.. Wat doe ik fout :?

[ Voor 15% gewijzigd door r0bert op 07-09-2004 21:01 ]


Verwijderd

Het is toch niet erg slim om steeds te gaan 'pollen' of iets al klaar is, zeker als je in de tussentijd niets doet.

Zo te zien voeg je een script element toe aan een document. oScript.onload zou dan een HTML attribuut zijn? In dat geval moet je een function reference toewijzen aan oScript.onload.

Mocht het een eigen object zijn, roep dan als 'het' klaar is this.onload van dat object aan, waar je standaard een lege function inzet. Die oScript.onload kun je dan namelijk prima vervangen door een andere function reference.

[edit]
Toch nog even gecheckt: een script element heeft in elk geval geen onload attribuut, dus je moet sowieso zelf iets schrijven/geschreven hebben.

[ Voor 15% gewijzigd door Verwijderd op 07-09-2004 21:08 ]


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Mmz met telkens een functie aanroepen (met script-object als argument of in globale var) via setTimeout en de readyState checken.. is dat wel een goede manier :?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:30

crisp

Devver

Pixelated

zoiets zou ik doen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
var loaded = false;
oScript = document.getElementsByTagName("head")[0].appendChild(fAddScript(sSrc));
check_when_loaded();

function check_when_loaded() {

  if (!loaded) setTimeOut('check_when_loaded()', 100);
  else alert('loaded!');

}


en in het in te laden script onderaan:
JavaScript:
1
loaded = true;

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
Mmz volgens msdn library bestaat er wel een onload en ook een onreadystatechange.. :S snap niet waarom dat niet werkt dan..

@Crisp, zal je oplossing ook proberen..

[ Voor 4% gewijzigd door r0bert op 08-09-2004 16:16 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Simpel,

onload is bedoelt om een script uit te voeren zodra hij klaar is. Wat jij dus pollt is of er al een onload eventhandler toegevoegd is aan de scripttag.

Ik vermoed dat hetzelfde geldt voor onreadystatechange.
Pagina: 1