Avatar billede koldstar Nybegynder
27. oktober 2005 - 12:15 Der er 14 kommentarer og
1 løsning

Hent ekstern javascript EFTER side er indlæst

Hej eksperter

jeg har en side hvor jeg i øjeblikket henter nogle oplysninger fra andre servere, som jeg indsætter på mit site i stil med dette (indholdet placeres altid i en "div")

<div>
<script type="text/javascript" src="http://www.enandenserver.dk/test.asp"></script>
</div>

Mit problem er at, hvis den anden server er lang tid om at svare bliver min side også lang tid om at svare... Er det muligt på en eller anden måde at lade min side loade først og lade indholdet "poppe op" efterhånden som de andre servere svarer? F.eks ved at lave en tom div, som indholdet kan skrives i når indholdet er hentet?

Håber der er nogen der kan hjælpe :)
Avatar billede softspot Forsker
27. oktober 2005 - 12:20 #1
Det kan muligvis klares ved at sætte defer på dit script-tag.

<script type="text/javascript" src="http://www.enandenserver.dk/test.asp" defer></script>

Det betyder at udførslen af scriptet udsættes til senere og kan bevirke at siden loader hurtigere. Dog skal du være opmærksom på at der ikke må være noget i scriptet som skal bruges under opbygningen af siden, ellers vil du jo nok få en fejl...
Avatar billede koldstar Nybegynder
27. oktober 2005 - 12:29 #2
Tak.. det giver mig desværre et andet mystisk problem..

Nu viser den kun indholdet af scriptsene på den anden server.... De  eksterne scripts indeholder en masse document.write("TEXT");, så de overskriver det andet indhold. Kan jeg gøre noget for at modvirke dette? Evt. bruge en anden kommando i de eksterne scripts end document.write??
Avatar billede koldstar Nybegynder
27. oktober 2005 - 12:31 #3
jeg tænker på noget stil med at give mine div'er et navn og så kunne skrive til den nogett lignende dette:

div1.write("Hej med dig");

Kan det lade sig gøre??
Avatar billede softspot Forsker
27. oktober 2005 - 12:32 #4
Ja, det var det jeg advarede mod... :)

Det lader til at dine eksterne scripts enten skal laves på en anden måde eller at det ikke kan lade sig gøre at lade dem indlæse senere end du gør nu.

Prøv evt. at uddybe funktionaliteten af det eksterne script. Det kan være der er andre muligheder i din specifikke situation.
Avatar billede softspot Forsker
27. oktober 2005 - 12:33 #5
...og min kommentar fra 27/10-2005 12:32:56 var rettet mod din fra 27/10-2005 12:29:03... :)
Avatar billede softspot Forsker
27. oktober 2005 - 12:34 #6
Men igen - prøv at beskrive hvad din udfordring går ud på... :)
Avatar billede koldstar Nybegynder
27. oktober 2005 - 12:51 #7
okay,

Jeg læser nogle nyheder ind fra forskellige nyhedssider via nogle RSS-feeds. Dette gør jeg via et asp script, som generer en masse document.write-linier med nyheder. Disse vil jeg så gerne have udskrevet på en bestemt side. Jeg har tidligere bare inluderet min asp-side, men det giver desværre nogle gange nogle ret lange indlæsningstider. Jeg kunne derfor godt tænke mig at resten af min side blev læst ind først og nyhederne så kunen dumpe ind når det passede dem :)

Dette kan selvfølgelig også gøres ved at lade nyhederne optræde i iframes. Dette vil så bare give nogle andre problemer mht. størrelsen på iframen og min fobi for iframes :)





Problemet er at nogle gange er nyhedssiderne rimlig lang tid om at svare og så kører min side også langsom.
Derfor tænkte jeg det kunne være smart at Istedet for bare at inkludere siden med
Avatar billede koldstar Nybegynder
27. oktober 2005 - 12:52 #8
hov, det sidste afsnit skulle ikke have været med :)
Avatar billede softspot Forsker
27. oktober 2005 - 13:00 #9
Har du ikke mulighed for at generere funktioner som returnerer en streng af HTML-data. Dem kan du så f.eks. kalde på window.onload og indsætte dem i nogle div-elementer som du selv var inde på...

Eksempel:

<!-- DENNE SCRIPTBLOK KUNNE VÆRE LOADED MED DEFER -->
<script type="text/javascript">
function getNewsfeedA() {
  var txt = "<p>Dette er en nyhed...</p>";
  return txt;
}
</script>

<script type="text/javascript">
var reties = 0;
function updateNews() {
  if(getNewsfeedA) {
    var newslist = document.getElementById("newslist");
    if(newslist) {
      newslist.innerHTML = getNewsfeedA();
    }
  }
  else
    if(retries++ < 10) // prøv at opdatere nyheder i 5 sekunder
      setTimeout("updateNews()", 500);
}

window.onload = function() {
  updateNews();
}
</script>

<div id="newslist"></div>
Avatar billede koldstar Nybegynder
27. oktober 2005 - 13:04 #10
jo, det vil jeg da lige prøve...
Avatar billede koldstar Nybegynder
27. oktober 2005 - 13:32 #11
wauuu, det virker..... Så skal jeg bare lige have lavet det lidt dynamisk.... Tak for hjælpen.. læg et svar for point :)
Avatar billede koldstar Nybegynder
27. oktober 2005 - 13:33 #12
er det muligt at få den til at udskrive noget imens man venter?.. feks. vent venligst imens vi henter nyehder fra XXX
Avatar billede koldstar Nybegynder
27. oktober 2005 - 13:34 #13
okay, dumt spørgsmål... jeg skriver det jo bare i div'en...
Avatar billede softspot Forsker
27. oktober 2005 - 13:37 #14
Ja, det er da en mulighed :)

Velbekomme.
Avatar billede softspot Forsker
27. oktober 2005 - 13:43 #15
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester