Toon posts:

[Javascript] Pauzeren tot script geladen is

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik gebruik ergens op een site een functie om scripts toe te voegen op het moment dat ze nodig zijn. hu vertegenwoordigt een getal.
code:
1
2
3
4
5
6
7
8
function addScript(src){
if(document.getElementsByTagName && document.createElement){
var newScript = document.createElement("script");
newScript.type = "text/javascript";
newScript.src = src;
document.getElementsByTagName("head")[0].appendChild(newScript);
}
}


code:
1
2
3
4
{
woord=hu+".js";
addScript(woord); 
}


Dit gedeelte staat in een andere functie.
In XP (online) en de browser (offline) werkt het een en ander wel.
Waarschijnlijk doordat ze sneller zijn.

In win98 (online) lijkt het erop dat alles verder loopt, zonder dat het nieuw script volledig is geladen. Het programma loopt vast. Een vertraging inbouwen helpt niet, en zou dan bovendien afhankelijk worden van de grootte van de te laden scripts.
Wanneer ik een alert inbouw bij addScript dan werkt hij wel. Maar dat is niet zo functioneel. Wanneer ik de alert vervang door een vertraging werkt het weer niet.

Wat kan de oorzaak zijn, en hoe is dit probleem op te lossen ?

Ik gebruik IE6

  • André
  • Registratie: Maart 2002
  • Laatst online: 01-09 14:07

André

Analytics dude

Kun je het script niet in de onload kwijt ipv met een timeout/vertraging?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

een try-catch clause, met in de catch{} een setTimeout om nog een keer te proberen

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Ben al tijden bezig met muziek en video site. Ik had een heel groot script, waarbij ook nog allerlei arrays geladen werden. Die Arrays worden nu pas geladen wanneer ik ze nodig heb, en dat gaat dus verkeerd. Wanneer ik ze weer in de onload zet of in het hoofdscript wordt de laadtijd veel te lang. En ja, ik weet dat het allemaal veel efficienter kan via serviside. Maar wil dit nu juist bereiken met javascripts. Ik weet niet precies hoe de sturing is van een alert, maar dat is blijkbaar anders als een timeout. Denk dat alert tijdelijk alles even platlegt, terwijl een timeout slechts geldt voor de functie waar je dit voor vraagt. Zou dus eigenlijk een functie moeten hebben die tijdens het laden van het script alles wat loopt even bevriest.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

dan zul je dat zelf moeten fabriceren :) Een array bijhouden met 'lopende dingen', en in die 'dingen' dus stopzetten, (whatever je er mee bedoelt ;))

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Wanneer je gebruik maakt van de gegevens van een muziek file, zoals looptijd, starttijd, eind van de file, stop je die niet met een timeout. Zelfde geldt wanneer je ergens anders timeouts gebruikt of intervals.

Verwijderd

Wordt de functies in het externe scrippie wel geladen? Ik bedoel, je krijgt wel een alert in je addScript functie, maar probeer eens een document.write('bla'); in je externe script en bekijk dat eens. Dan weet je zeker of die inderdaad wel wordt geladen.

Verwijderd

Topicstarter
Dat heb ik getest, script wordt wel geladen. Ik gebruik die alert ook niet om te kijken of het script geladen wordt, maar als een soort pauze knop. En dat is juist het vreemde. Want als ik die alert vervang door een vertraging dan werkt het niet meer. Dan lopen andere functies vast. Is denk ik een timing probleem, dat (deels) opgelost wordt doordat een alert andere dingen doet dan een timeout.

  • Grom
  • Registratie: Juli 2002
  • Laatst online: 25-11-2024

Grom

lief hè!

Ik snap je nog niet helemaal maar kijk eens naar wat onload en return:false/true voor je kan doen.

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
function addScript(src)
{
    if(document.getElementsByTagName && document.createElement)
    {
        var newScript = document.createElement("script");
        newScript.type = "text/javascript";
        newScript.src = src;
        newScript.onload=function() { alert('hoi'); };
        document.getElementsByTagName("head")[0].appendChild(newScript);
    }
}

In Mozilla/1.1 werkt de onload event, in IE5.2/Mac niet helaas. Windows heb ik niet geprobeerd .
/me Doekman heeft geen zin z'n w2k-bak aan te zetten; maakt te veel herrie ;)

Wellicht kun je die onload gebruiken om functies te enable-en?

Als het niet werkt, je kunt natuurlijk ook in het te laden script een call-back functie maken...
Pagina: 1