Avatar billede Slettet bruger
22. januar 2007 - 18:05 Der er 11 kommentarer

AJAX, loading på hver side

Hvordan får jeg smidt en tekst ind på hver side, som fortæller om siden er loadet eller ej.

Kunne forestille mig det var noget alá følgende:

var http = (browser == "Microsoft Internet Explorer") ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

function minFunktion()
{
    if( http.readyState == 4 )
    {
        document.getElementById("box").innerHTML = "loading";
    }
}


og så bare smide minFunktion(); ind i en onload=""
Avatar billede tsunami Nybegynder
22. januar 2007 - 19:56 #1
Vil tro at du skulle lave en recursiv setTimeout der går ind og checker hvert minut om den er færdig med at loade... og når den er stoppet holder den op...
Avatar billede madeindk Nybegynder
23. januar 2007 - 00:58 #2
Når AJAX loader er readyState == 2 :-)

function minFunktion()
{
    if( http.readyState == 2 )
    {
        document.getElementById("box").innerHTML = "loading";
    }
}
Avatar billede roenving Novice
23. januar 2007 - 06:34 #3
-- og til detect skal du bruge den konkrete funktion, for såvidt jeg ved understøtter IE7 XMLHttpRequest:

var http = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
Avatar billede Slettet bruger
23. januar 2007 - 10:12 #4
Så hvordan skal det så helt præcist se ud?

Kan ikke få det til at virke
Avatar billede madeindk Nybegynder
23. januar 2007 - 12:20 #5
Jeg synes ikke altid det AJAX forstår readyState == 2 så normalt når jeg laver en loading gør jeg det sådan her:

<body onLoad="document.getElementById('box').innerHTML = 'Loading';">

Og så når mit AJAX readyState == 4 så skifter den bare din innerHTML igen.
Avatar billede tsunami Nybegynder
23. januar 2007 - 13:06 #6
Findes der ikke en event til dette egentligt?...

xmlObject.onReadyStateChange = new function(if(xmlObject.readyState<=2){document.getElementById("box").innerHTML = "loading";}else{document.getElementById("box").innerHTML = "";}}

Nogen der kan bekræfte om dette ville virke?...

Eller som har noget viden om det...
Avatar billede tsunami Nybegynder
23. januar 2007 - 13:08 #7
Hehe.. gik vist lidt for stærkt med at få den kode ud :p

xmlObject.onReadyStateChange = new function(){if(xmlObject<=2){document.getElementById("box").innerHTML = "loading";}else{document.getElementById("box").innerHTML = "";}
Avatar billede tsunami Nybegynder
23. januar 2007 - 13:10 #8
Argh glem det... i kan vel se hvad jeg pønser på hehe...
Avatar billede roenving Novice
23. januar 2007 - 16:33 #9
-- og hvis man virkelig bevæger sig over i noget med X(HT)ML, findes innerHTML slet ikke (hvad den i øvrigt heller ikke gør i nogen standard !-)

-- så brug rene DOM-metoder, f.eks.

document.getElementById("box").appendChild(document.createTextNode("Loading ..."));

-- eller .replaceChild(document.createTextNode("Loading ...")) eller .fistChild.nodeValue = "Loading ..." !o]
Avatar billede tsunami Nybegynder
23. januar 2007 - 18:07 #10
Bare sjovt med de forsøg jeg har set hvor innerHTML har været hurtigere end createTextNode... gad vide hvorfor?... hehe
Avatar billede Slettet bruger
23. januar 2007 - 20:57 #11
Så hvordan kan et færdigt dokument se ud?
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