/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Udsæt funktion til efter side er loadet fæ~
Fra : Ace


Dato : 03-09-08 16:13

Hejsa

For ikke så længe siden redede Birger min røv med dette fine
script, der loader indhold fra andre sider ind i forskellige
div's:
<html>
<head>
<script type="text/javascript">
function makeAjax(){
var xmlHttp;
try {
xmlHttp = new XMLHttpRequest();
}
catch (e){
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("No AJAX!?");
xmlHttp = null;
}
}
}
return xmlHttp;
}

function HentX( x) {
var side = '';
var divId = '';
switch ( x) {
case 1 :
side = 'http://side1.html';
divId = 'div1';
break;
case 2 :
side = 'http://side2.html';
divId = 'div2';
break;
case 3 :
side = 'http://side3.html';
divId = 'div3';
break;
//... indsæt selv så mange du har brug for
default :
side = '';
}
if ( side != ''){
var xmlHttp = makeAjax();
if ( xmlHttp != null) {
xmlHttp.open( "GET", side, true);
xmlHttp.onreadystatechange = function() {
if ( xmlHttp.readyState == 4) {
if ( xmlHttp.status == 200) {
document.getElementById( divId).innerHTML=xmlHttp.responseText;
}
setTimeout( function() { HentX( x); }, 1000);
}
}
xmlHttp.send(null);
}
}
}
setTimeout( function() { HentX( 1); }, 1000);
setTimeout( function() { HentX( 2); }, 1000);
setTimeout( function() { HentX( 3); }, 1000);
//... indsæt selv flere som nødvendigt
</script>
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
</body>
</html>

Dette har dog imidlertig vist sig, at sænke load-tiden af selve
siden hvori div'erne er, så jeg tænkte på om det er muligt, at
udsætte denne funktion til efter siden er loadet helt færdig?

Vh
Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Birger Sørensen (03-09-2008)
Kommentar
Fra : Birger Sørensen


Dato : 03-09-08 16:31

Ace udtrykte præcist:
> Hejsa
>
> For ikke så længe siden redede Birger min røv med dette fine
> script, der loader indhold fra andre sider ind i forskellige
> div's:
> <html>
> <head>
> <script type="text/javascript">
> function makeAjax(){
> var xmlHttp;
> try {
> xmlHttp = new XMLHttpRequest();
> }
> catch (e){
> try {
> xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
> }
> catch (e) {
> try {
> xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
> }
> catch (e) {
> alert("No AJAX!?");
> xmlHttp = null;
> }
> }
> }
> return xmlHttp;
> }
>
> function HentX( x) {
> var side = '';
> var divId = '';
> switch ( x) {
> case 1 :
> side = 'http://side1.html';
> divId = 'div1';
> break;
> case 2 :
> side = 'http://side2.html';
> divId = 'div2';
> break;
> case 3 :
> side = 'http://side3.html';
> divId = 'div3';
> break;
> //... indsæt selv så mange du har brug for
> default :
> side = '';
> }
> if ( side != ''){
> var xmlHttp = makeAjax();
> if ( xmlHttp != null) {
> xmlHttp.open( "GET", side, true);
> xmlHttp.onreadystatechange = function() {
> if ( xmlHttp.readyState == 4) {
> if ( xmlHttp.status == 200) {
> document.getElementById( divId).innerHTML=xmlHttp.responseText;
> }
> setTimeout( function() { HentX( x); }, 1000);
> }
> }
> xmlHttp.send(null);
> }
> }
> }
> setTimeout( function() { HentX( 1); }, 1000);
> setTimeout( function() { HentX( 2); }, 1000);
> setTimeout( function() { HentX( 3); }, 1000);
> //... indsæt selv flere som nødvendigt
> </script>
> </head>
> <body>
> <div id="div1"></div>
> <div id="div2"></div>
> <div id="div3"></div>
> </body>
> </html>
>
> Dette har dog imidlertig vist sig, at sænke load-tiden af selve
> siden hvori div'erne er, så jeg tænkte på om det er muligt, at
> udsætte denne funktion til efter siden er loadet helt færdig?
>
> Vh
> Ace

Det er næppe scriptet der sinker...
Men der ingenting at vise, får de første timeout aktiverer noget
indhold.
prøv
Hent( 1);
Hent( 2);
Hent( 3);
i slutningen, i stedet for at bruge timere...

Alternativet er at sætte dem i en onload - men jeg kan ikke se det
skulle være nødvendigt.
Hvis selve siden af en eller anden årsag er længe om at loade (hvis der
er mere indhold end det ovenstående), så den første ajax henter
indholdet inden siden er færdig, vil du få en fejl om at den div
indholdet skal indsætte i ikke findes.
Så måske er det under alle omstændigheder en god idé..

function Init() {
Hent( 1);
Hent( 2);
Hent( 3);
}
og
<body onload="Init();">
go så skal de tre linier selvfølgelig ikke også være der...

Håber det er forståeligt

Birger



Ace (03-09-2008)
Kommentar
Fra : Ace


Dato : 03-09-08 18:59

Birger Sørensen bidrog med:
> prøv
> Hent( 1);
> Hent( 2);
> Hent( 3);
> i slutningen, i stedet for at bruge timere...
>
> Alternativet er at sætte dem i en onload - men jeg kan ikke se det
> skulle være nødvendigt.
> Hvis selve siden af en eller anden årsag er længe om at loade (hvis der
> er mere indhold end det ovenstående), så den første ajax henter
> indholdet inden siden er færdig, vil du få en fejl om at den div
> indholdet skal indsætte i ikke findes.
> Så måske er det under alle omstændigheder en god idé..

Ja der er pænt meget mere på min side end hvad der var inkluderet i
script-eksemplet, men load-tiden er langsomt blevet forøget i takt med
hvert nyt div jeg har tilføjet hvori indholdet loades via Ajax-scriptet.
Det skal måske lige nævnes at jeg i alt har 9 div's af denne slags.

> function Init() {
> Hent( 1);
> Hent( 2);
> Hent( 3);
> }
> og
> <body onload="Init();">
> go så skal de tre linier selvfølgelig ikke også være der...

Kan se du er helt med på hvad jeg mener

De tre "linier" som også skal med, går jeg ud fra du mener er de tre div's,
<div id="div1"></div> etc., som kommer længere nede på siden, ikk'?

Har nu prøvet både med onLoad="Init()" i body-tag'et og window.onload =
Init; i slutningen af scriptet, hvilket desværre resulterer i, at div'erne
ikke får noget indhold loadet. http://clubace.dk/test.html

Får fejlmeddelelsen:
Linje: 62
Tegn: 1
Fejl: Et objekt var ventet
Kode: 0

Håber selvfølgelig ikke, at det bare er mig der har klokket i det.. men har
du en idé om hvad der kan være årsagen til at det ikke virker?

Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (03-09-2008)
Kommentar
Fra : Stig Johansen


Dato : 03-09-08 19:13

Ace wrote:

> Får fejlmeddelelsen:
> Linje: 62
> Tegn: 1
> Fejl: Et objekt var ventet
> Kode: 0
>
> Håber selvfølgelig ikke, at det bare er mig der har klokket i det.. men
> har du en idé om hvad der kan være årsagen til at det ikke virker?

Nu hedder jeg ikke Birger, men har du kigget på linie 62 ?
62: Hent( 1);

og sammenholdt det med din erklæring af funktionen:
26: function HentX( x) {

prøv at rette funktionserklæringen til Hent eller ret kaldene til HentX.

--
Med venlig hilsen
Stig Johansen

Birger Sørensen (03-09-2008)
Kommentar
Fra : Birger Sørensen


Dato : 03-09-08 19:43

Stig Johansen frembragte:
> Ace wrote:
>
>> Får fejlmeddelelsen:
>> Linje: 62
>> Tegn: 1
>> Fejl: Et objekt var ventet
>> Kode: 0
>>
>> Håber selvfølgelig ikke, at det bare er mig der har klokket i det.. men
>> har du en idé om hvad der kan være årsagen til at det ikke virker?
>
> Nu hedder jeg ikke Birger, men har du kigget på linie 62 ?
> 62: Hent( 1);
>
> og sammenholdt det med din erklæring af funktionen:
> 26: function HentX( x) {
>
> prøv at rette funktionserklæringen til Hent eller ret kaldene til HentX.

lol
Der skal selvfølgelig stå HentX(1) osv...

Og det jeg mente med de tre linier, var, at når du opretter funktionen
Init(), skal du *ikke* også kalde HentX() direkte i script tagget. Så
får du startet alting 2 gange.

Om du anvender den ene eller den anden måde at starte på, er
ligegyldigt - det er to forskellige måder at angive det samme.

Birger



Ace (03-09-2008)
Kommentar
Fra : Ace


Dato : 03-09-08 19:48

Stig Johansen åbenbarede:
> Nu hedder jeg ikke Birger, men har du kigget på linie 62 ?
> 62: Hent( 1);
>
> og sammenholdt det med din erklæring af funktionen:
> 26: function HentX( x) {
>
> prøv at rette funktionserklæringen til Hent eller ret kaldene til HentX.

DOH! tak ska' du ha'

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408927
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste