webForumDet fria alternativet

Evighetsloop

6 svar · 244 visningar · startad av Tim

TimMedlem sedan jan. 2002120 inlägg
#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.

Web-TorMedlem sedan nov. 200011 794 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

------------------
/Tor
www.tor.nu

[Redigerat av Web-Tor den 06 feb 2002]

JojoxxMedlem sedan juni 20004 306 inlägg
#3

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

------------------
/ J

TimMedlem sedan jan. 2002120 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.

JojoxxMedlem sedan juni 20004 306 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.)

------------------
/ J

TimMedlem sedan jan. 2002120 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å?

JojoxxMedlem sedan juni 20004 306 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.

------------------
webForum stängt 15-17 feb. Läs mer.

/ Jojoxx
moderator wF

Genererad på 512 ms · cache AV · v20260730165559-full.f96bc7eb