[JS] script.src vervangen in Mozilla werkt half

Pagina: 1
Acties:

  • Marijn_S
  • Registratie: Februari 2001
  • Niet online
Uitgangssituatie:
Een pagina 'index.php' met:
code:
1
<script type="text/javascript" id="loader"></script>


Een link die de een functie aanroept met de volgende code erin:
code:
1
document.getElementById("loader").src = "getgroupinfo.php?id=" + id;


in 'getgroupinfo.php' wordt een functie met bepaalde parameters aangeroepen die op 'index.php' staat. Op deze manier haal ik een kleine hoeveelheid nieuwe data op die vervolgens vernieuwd wordt op de pagina dus. Zo kan ik zonder page-reload toch nieuwe info uit de database halen.

In Internet Explorer (6.0 in ieder geval) werkt dit gewoon perfect

Probleem:
In Mozilla werkt het de eerste keer wel (dan is .src nog leeg), maar de twee keer niet! Geeft geen javascript-errors ofzo en verandert op zich de .src wel maar voert de code die in het bestand zit niet uit.

Of het nu door de tweede klik is of ik handmatig de loader.src = "" zet, maakt niet uit.

In een iframe werkt dit wel gewoon goed (vanzelfsprekend), maar ik vind een script tag mooier (en het iframe zorgt er soms voor dat de loading balk onderaan Internet Explorer blijft staan). Bovendien ben ik erg benieuwd waaraan dit ligt en of het kan worden opgelost.

Is er misschien een functie waarmee je de inhoud ervan opnieuw kan uitvoeren of een attribuut van .src wat weer veranderd moet worden om de code opnieuw uit te laten voeren. Uit deze lijst werd ik in ieder geval niet veel wijzer.

Het is voor privé gebruik dus op zich maakt het me niet zoveel uit of het werkt of niet, maar was er dus wel benieuwd naar.

Iemand enig idee?

System specs - Ik word blij van knipperende lichtjes.


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

je zou het zo kunnen proberen:
JavaScript:
1
2
3
var newScript = document.createElement('script');
newSrcript.src = 'getgroupinfo.php?id=' + id;
document.body.appendChild(newScript); // mogelijk dat head ook werkt


maar persoonlijk zou ik toch eerder voor een hidden iFrame gaan, al is het alleen maar omdat continue elementen toevoegen natuurlijk wel een stijgend geheugengebruik met zich meebrengt.

Een andere optie is om je data als XML aan te bieden. Javascript biedt ook mogelijkheden om XML op te halen en te parsen, dat is in ieder geval in zowel IE als in Mozilla mogelijk (hoewel bij een online pagina de default security settings in Mozilla wel eens roet in het eten kunnen gooien)

[ Voor 27% gewijzigd door crisp op 09-09-2003 21:05 ]

Intentionally left blank


  • Marijn_S
  • Registratie: Februari 2001
  • Niet online
Ahh thanks!
Weer wat geleerd :)

Het groeiende geheugen lijkt me geen probleem als je elke keer die child weer verwijdert toch?

Dit werkt in ieder geval nu in IE en Mozilla:
Dit in de onload van de body:
JavaScript:
1
2
loader = document.createElement('script');
document.body.appendChild(loader);


En het volgende in de functie:

JavaScript:
1
2
3
4
5
    
document.body.removeChild(loader);
loader = document.createElement('script');
loader.src = "getgroupinfo.php?id=" + id;
document.body.appendChild(loader);

System specs - Ik word blij van knipperende lichtjes.


Verwijderd

Al eens gedacht aan cache :) Als je nu eens een unieke dummy parameter meestuurt alla getgroupinfo.php?id=" + id + "nocache=" + bijvoorbeeldeentijd + "";

  • Marijn_S
  • Registratie: Februari 2001
  • Niet online
Verwijderd schreef op 09 September 2003 @ 21:33:
Al eens gedacht aan cache :) Als je nu eens een unieke dummy parameter meestuurt alla getgroupinfo.php?id=" + id + "nocache=" + bijvoorbeeldeentijd + "";
Hoe bedoel je dat?
De id die meegestuurd wordt is steeds anders. Dus maakt het uit als er nog een nocache bij zit?

En ik stuur no-cache headers mee met getgroupinfo.php, wat dat ook zou tegen moeten gaan.

[ Voor 15% gewijzigd door Marijn_S op 09-09-2003 21:57 . Reden: toevoeging ]

System specs - Ik word blij van knipperende lichtjes.