Evighetsloop

JavaScript

6 svar · 249 visningar · startad av Tim

Medlem sedan jan. 2002115 inlägg
Trådstart#1

Följande mycket enkla script, fungerar inte. Webbläsaren ser ut att hamna i en evighetsloop när sidan körs.

Som synes är det ett modifierat script hämtat från Jojo's hemsida(originalet fungerade inte heller):

<script type="text/javascript">
/* Detta script finns att hämta på http://www.jojoxx.net och
får användas fritt så länge som dessa rader står kvar. */

if (navigator.appName == "Netscape"){
location.href="section4r.htm";
} else {
location.href="section4.htm";
}</script>

Sidan jag kör heter section4.htm.

Medlem sedan nov. 200013 890 inlägg
#2

Det är väl inte så konstigt. Det enda scriptet gör är ju att det laddar om sida. Efter att den laddat om sidan så gör den det en gång till...och en gång till...och en gång till...

Vill då få nåt vettigt att hända så får du byta ut värdet på location.href

/r Såg lite fel: Går du in på sidan med Netscape så skall det funka - då kommer du till sidan section4r.htm

Medlem sedan juni 20004 308 inlägg
#3

Jupp, det är alltså section4.htm du skall byta ut, alltså sidan du kommer till ifall du inte använder Netscape.

Medlem sedan jan. 2002115 inlägg
#4

Jag tog helt enkelt bort else-satsen.

Mitt egentliga mål är att alla med Netscape och IE 5 eller lägre ska till en sida, resten till en annan. Men då vart det lite problem:

<script type="text/javascript">
/* Detta script finns att hämta på http://www.jojoxx.net och
får användas fritt så länge som dessa rader står kvar. */

if (navigator.appName == "Netscape"){
self.location.href="section4r.htm";
} else if(navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion <="5") {

self.location.href="section4r.htm";

}
</script>

Detta gör att jag kommer till section4r.htm oavsett om jag har IE6 eller inte. Detta skript körs från section4.htm.

Medlem sedan juni 20004 308 inlägg
#5

navigator.appVersion är en lång text-sträng och kan därför inte jämföras med ett numeriskt värde. Det är inte heller första numret i strängen som är intressant eftersom det inte är versionen av webbläsare, så det blir så här (det är även onödigt med en else-sats);

if (navigator.appName=="Netscape" &#0124;&#0124; navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion.substring(navigator.appVersion.indexOf('MSIE')+5,navigator.appVersion.length))<=5){
location.href="section4r.htm";
}

(if-satsen fram till "{" är en enda lång rad.)

Medlem sedan jan. 2002115 inlägg
#6

Allt bra är komplicerat, så är det bara.

Tack för hjälpen!!

För resten, finns det inget enklare sätt att göra det på?

Medlem sedan juni 20004 308 inlägg
#7

Det kanske ser komplicerat ut för att det är en lång rad, men det är inte speciellt komplicerat, och det gör precis det du frågar efter -- kollar namnet på webbläsaren (även om detta går att ändra) och version av IE.

Däremot finns det säkert bättre sätt att lösa det på beroende av vilken anledning du vill skilja webbläsarna åt. Är det ex. objektmodellsproblem kan du skilja på Netscapes gamla objektmodell med document.layers, IE's gamla med document.all och DOM med document.getElementById, osv.

383 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
125 ms — deklarationer (db)
126 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)