Problem med If-sats

ASP

8 svar · 272 visningar · startad av Method

Medlem sedan apr. 2001357 inlägg
Trådstart#1

varför fungerar inte denna if-satsen?

<% If not INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "MSIE 5.5") > 0 Or INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "Mozilla/5") > 0 Or INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "MSIE 6") > 0 Then Response.Write "onload=""init()""" End If%>

Den funkar bara när man kommer med MSIE 5.5 inte de andra MSIE 6 och Mozilla/5

Sen en annan fråga finns det något lättare sätt att göra det på, för att få ner kodmängden?

Tack på förhand

Medlem sedan dec. 19996 721 inlägg
#2

Vad ska hända?

Medlem sedan juli 2001514 inlägg
#3

IE6 verifieras inte den som NS4 ? så var det i varje fall för mej tills jag uppdaterade browscap.ini.

Medlem sedan apr. 2001357 inlägg
#4

Vad ska hända?

Så här vill jag egentligen att det skall hända:

Jag kör denna kod

<% 
		userAgent = Request.ServerVariables( "HTTP_USER_AGENT" ) 
		IF INSTR( userAgent, "MSIE 5.5" ) > 0 THEN 
		Server.Execute("exclude/css_meny/meny_inc.txt")
		
		ELSEIF INSTR( userAgent, "Mozilla/5" ) > 0 THEN 
		Server.Execute("exclude/css_meny/meny_inc.txt")
		
		ELSEIF INSTR( userAgent, "MSIE 6" ) > 0 THEN 
		Server.Execute("exclude/css_meny/meny_inc.txt")
		
		ELSE 
		Response.Write "<script language=""JavaScript"" src=""exclude/jslib/menu/dhtmllib.js""></script><script language=""JavaScript"" src=""exclude/jslib/menu/navbar.js""></script><script language=""JavaScript"" src=""exclude/jslib/menu/menu.js""></script>" 

		END IF 
		%>

Den ovanstående koden känner av vilken webbläsare man kommer med, för javascript menyn fungerar inte med NN 6 och MSIE 6 därför gör jag på detta sätt för den nya menyn funkar inte i gamla webbläsare.

till javascriptet behövs denna kodsnutten i BODY-taggen

onload="init()"

Och det ända sättet jag kom fram till var den kod jag har här

<% If not INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "MSIE 5.5") > 0 Or INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "Mozilla/5") > 0 Or INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "MSIE 6") > 0 Then Response.Write "onload=""init()""" End If%>

och det är för att skriva ut den kodsnutten onload="init()"

För jag får ett felmedelande när den nya menyn visas när onload="init()" ligger i body-taggen

Och min fråga var varför det bara funkar med MSIE 5.5 och inte de andra?

För den överst If-satsen funkar med menyväljaren.

Och om det går att göra på något bättre sätt.

IE6 verifieras inte den som NS4 ? så var det i varje fall för mej tills jag uppdaterade browscap.ini.

Har jag inte märkt av

Hoppas jag har gjort mig förstående vad jag vill ha ;)

Tack på förhand

Jonas

Medlem sedan juni 200032 967 inlägg
#5

IE6 verifieras inte den som NS4 ? så var det i varje fall för mej tills jag uppdaterade browscap.ini.

Nej, absolut inte. Om man inte använder komponenten browscap förstås. Om du analyserar en sträng på detta sätt så har browscap.ini inte med saken att göra.

Method: varför din if-sats inte gör sitt jobb ordentligt kan jag inte svara på. Jag hade dock börjat med att kolla kontrollustkrifter med Netscape 6 / IE6.

Response.write "User agent: " & request.servervariables ("http_user_agent") & "<br>" 
Response.write INSTR(Request.Servervariables("http_user_agent"), "MSIE 6") & "<br>"
Response.write INSTR(Request.Servervariables("http_user_agent"), "Mozilla/5")

Mvh,

Medlem sedan apr. 2001357 inlägg
#6

det är inget fel på denna

<% 
userAgent = Request.ServerVariables( "HTTP_USER_AGENT" ) 
IF INSTR( userAgent, "MSIE 5.5" ) > 0 THEN 
Server.Execute("exclude/css_meny/meny_inc.txt")

ELSEIF INSTR( userAgent, "Mozilla/5" ) > 0 THEN 
Server.Execute("exclude/css_meny/meny_inc.txt")

ELSEIF INSTR( userAgent, "MSIE 6" ) > 0 THEN 
Server.Execute("exclude/css_meny/meny_inc.txt")

ELSE 
Response.Write "<script language=""JavaScript"" src=""exclude/jslib/menu/dhtmllib.js""></script><script language=""JavaScript"" src=""exclude/jslib/menu/navbar.js""></script><script language=""JavaScript"" src=""exclude/jslib/menu/menu.js""></script>" 
END IF 
%>

Det är denna if-satsen det är fel på

<% If not INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "MSIE 5.5") > 0 Or INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "Mozilla/5") > 0 Or INSTR(Request.ServerVariables( "HTTP_USER_AGENT" ), "MSIE 6") > 0 Then Response.Write "onload=""init()""" End If%>

Så jag vet att den känner av rätt webbläsare på den första koden jag har

Medlem sedan juni 200032 967 inlägg
#7

Ska du verkligen ha en not först?

Medlem sedan juni 200032 967 inlägg
#8

Du borde inte få ha en end if på den raden heller, eftersom hela alltet står på en rad.

Du kan ju också prova detta, sätt en kontrollvariabel, så behöver du bara göra kollen en gång.

<% 
userAgent = Request.ServerVariables( "HTTP_USER_AGENT" ) 
doInit = false
IF INSTR( userAgent, "MSIE 5.5" ) > 0 THEN 
	Server.Execute("exclude/css_meny/meny_inc.txt")
	doInit = true
ELSEIF INSTR( userAgent, "Mozilla/5" ) > 0 THEN 
	Server.Execute("exclude/css_meny/meny_inc.txt")
	doInit = true
ELSEIF INSTR( userAgent, "MSIE 6" ) > 0 THEN 
	Server.Execute("exclude/css_meny/meny_inc.txt")
	doInit = true
ELSE 
Response.Write "<script language=""JavaScript"" src=""exclude/jslib/menu/dhtmllib.js""></script><script language=""JavaScript"" src=""exclude/jslib/menu/navbar.js""></script><script language=""JavaScript"" src=""exclude/jslib/menu/menu.js""></script>" 
END IF 
%>
if doInit Then Response.Write "onload=""init()"""

Mvh,

Medlem sedan apr. 2001357 inlägg
#9

Jippie tack anders ännu engång har du räddat mig.....;)

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