Avatar billede steen_hansen Forsker
20. september 2006 - 00:11 Der er 12 kommentarer og
1 løsning

Dynamisk CSS

Jeg har haft store problemer gennem længere tid med højde/bredde i hhv. MSIE, Opera, FF og Mozilla. Derfor vil jeg v.hj.a. et script finde ud af hvilken browsertype der benyttes, så det kan bestemmes hvilken klasse, der skal benyttes fra mit CSS.

Istedet for at lave noget i denne stil:

<td class="<% If IE = TRUE Then %>tdbannerie<% ElseIf Opera = TRUE Then %>tdbanneropera<% ElseIf NS = TRUE Then %>tdbannerns<% Else %>tdbanner<% End If %>">&nbsp;</td>

kunne det måske være mest hensigtsmæssigt med Select Case, så det kunne se således ud istedet:

<%
    Dim strUserAgent
    strUserAgent = UCase(CStr(Request.ServerVariables("HTTP_USER_AGENT")))

    Select Case ...
        Case IE ...
            vClass = "tdbannerie"
        Case Opera ...
            vClass = "tdbanneropera"
        Case NS ...
            vClass = "tdbannerns"
        Case OtherBrowser ...
            vClass = "tdbannerother"
    End Select
%>

<td class="<%=vClass%>">&nbsp;</td>

Du får hele scriptet her:

<%
Dim strUserAgent
Dim IE5Plus, IE55Plus, css2compatible
Dim NS, NS4, NS6, IE, IE4, IE5, IE6
Dim Opera, Opera5
Dim OtherBrowser

strUserAgent = UCase(CStr(Request.ServerVariables("HTTP_USER_AGENT")))

IE = False
IE4 = False
IE5 = False
IE6 = False
If InStr(strUserAgent, "MSIE") Then
    IE = TRUE
End If
If InStr(strUserAgent, "MSIE 4") Then
    IE4 = TRUE
ElseIf InStr(strUserAgent, "MSIE 5") Then
    IE5 = TRUE
ElseIf InStr(strUserAgent, "MSIE 6") Then
    IE6 = TRUE
End If

Opera = False
Opera5 = False
If InStr(strUserAgent, "Opera") Then
    Opera = TRUE
End If
If InStr(strUserAgent, "Opera 5") Or InStr(strUserAgent, "Opera/5") Then
    Opera5 = TRUE
End If

NS = FALSE
NS4 = FALSE
NS6 = FALSE
If InStr(strUserAgent, "Netscape6") Then
    NS6 = TRUE
ElseIf InStr(strUserAgent, "Mozilla/4") AND Not (IE OR Opera) Then
    NS4 = TRUE
End If

If NS6 OR NS4 OR (InStr(strUserAgent, "Mozilla") AND Not (IE OR Opera)) Then
    NS = TRUE
End If

If Opera5 Or IE6 Or NS6 Then
    css2compatible = TRUE
Else
    css2compatible = FALSE
End If

OtherBrowser = FALSE
If Not (IE OR NS4 OR NS6 OR Opera) Then
    OtherBrowser = TRUE
End If

If InStr(strUserAgent, "MSIE 5") Or InStr(strUserAgent, "MSIE 6") Then
    IE5Plus = TRUE
Else
    IE5Plus = FALSE
End If

Select Case
...........................
End Select
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>
<title></title>
</head>

<body>

<table>
    <tr>
        <td class="vClass">&nbsp;</td>
    </tr>
</table>

</body>

</html>
Avatar billede ellebaek Nybegynder
20. september 2006 - 01:14 #1
du kan ikke rigtig lave en select case på den måde, da det en case normalt gør er at du laver en forespørgsel på en variabel, og så spørger du om variablen har en bestemt værdi...

men var det ikke en ide i stedet at lave en række forskellige css filer som hver indeholder info til den aktuelle browser, og så ellers loade det i starten af siden...

Eller i stedet have en include fil der gør det for dig...

så skal du blot benytte den if som du selv skriver i starten til at finde ud af hvilken fil der skal åbnes...
Avatar billede sjh Nybegynder
20. september 2006 - 08:10 #2
Jo.. skal bare bruge True ved Select Case..

Dim strUserAgent
Dim IE5Plus, IE55Plus, css2compatible
Dim NS, NS4, NS6, IE, IE4, IE5, IE6
Dim Opera, Opera5
Dim OtherBrowser

  strUserAgent = UCase(CStr(Request.ServerVariables("HTTP_USER_AGENT")))

  IE = False
  IE4 = False
  IE5 = False
  IE6 = False
  If InStr(strUserAgent, "MSIE") Then
    IE = True
  End If
  If InStr(strUserAgent, "MSIE 4") Then
    IE4 = True
  ElseIf InStr(strUserAgent, "MSIE 5") Then
    IE5 = True
  ElseIf InStr(strUserAgent, "MSIE 6") Then
    IE6 = True
  End If

  Opera = False
  Opera5 = False
  If InStr(strUserAgent, "Opera") Then
    Opera = True
  End If
  If InStr(strUserAgent, "Opera 5") Or InStr(strUserAgent, "Opera/5") Then
    Opera5 = True
  End If

  NS = False
  NS4 = False
  NS6 = False
  If InStr(strUserAgent, "Netscape6") Then
    NS6 = True
  ElseIf InStr(strUserAgent, "Mozilla/4") And Not (IE Or Opera) Then
    NS4 = True
  End If

  If NS6 Or NS4 Or (InStr(strUserAgent, "Mozilla") And Not (IE Or Opera)) Then
    NS = True
  End If

  If Opera5 Or IE6 Or NS6 Then
    css2compatible = True
  Else
    css2compatible = False
  End If

  OtherBrowser = False
  If Not (IE Or NS4 Or NS6 Or Opera) Then
    OtherBrowser = True
  End If

  If InStr(strUserAgent, "MSIE 5") Or InStr(strUserAgent, "MSIE 6") Then
    IE5Plus = True
  Else
    IE5Plus = False
  End If

  Select Case True
        Case IE, IE4, IE5, IE6, IE5Plus ' Internet Explorer..
        '--
        Case Opera, Opera5 ' Opera..
        '--
        Case NS, NS4, NS6 ' Netscape..
        '--
        Case Else
        '-- andre browser..
  End Select
Avatar billede sjh Nybegynder
20. september 2006 - 08:20 #3
altså..

...
....
.....
  Select Case True
        Case IE, IE4, IE5, IE6, IE5Plus ' Internet Explorer..
          vClass = "tdbannerie"
        Case Opera, Opera5 ' Opera..
          vClass = "tdbanneropera"
        Case NS, NS4, NS6 ' Netscape..
          vClass = "tdbannerns"
        Case Else
          vClass = "tdbannerother"
  End Select
%>
Avatar billede steen_hansen Forsker
20. september 2006 - 08:47 #4
Fedest, det ser ud til at virke. Nu skal jeg tjekke på, om browseren hedder Opera. Hvis den gør det, er class tdbanneropera. Ved alle andre browsere skal den blot hedde tdbanner. Men det virker ikke i Opera? Der står bare tdbanner i opera, det burde jo være tdbanneropera.

    Select Case True
        'Case IE, IE4, IE5, IE6, IE5Plus
        '    vClass = "tdbanner"
        Case Opera, Opera5
            vClass = "tdbanneropera"
        Case Else
            vClass = "tdbanner"
    End Select
Avatar billede steen_hansen Forsker
20. september 2006 - 08:48 #5
Uden det unødvendige fyld:

<%
    Select Case True
        Case Opera, Opera5
            vClass = "tdbanneropera"
        Case Else
            vClass = "tdbanner"
    End Select
%>
Avatar billede steen_hansen Forsker
20. september 2006 - 09:02 #6
Ellebaek, du mener en If ElseIf Then:

<% If browser = IE Then %>
    <link rel="stylesheet" type="text/css" href="/includes/ie.css">
<% ElseIf browser = Opera Then %>
    <link rel="stylesheet" type="text/css" href="/includes/opera.css">
<% ElseIf browser = NS Then %>
    <link rel="stylesheet" type="text/css" href="/includes/ns.css">
<% End If %>

Jeg ser lige, om sjh har flere guldkorn.
Avatar billede sjh Nybegynder
20. september 2006 - 09:16 #7
Ja du kan vel bare gøre sådan så..

<%
  vClass = "ie.css"
  Select Case True
      Case Opera, Opera5
          vClass = "opera.css"
      Case Else
          vClass = "ns.css"
  End Select
%>

<link rel="stylesheet" type="text/css" href="/includes/<%=vClass%>">
Avatar billede sjh Nybegynder
20. september 2006 - 09:18 #8
Sådan..

<%
  vClass = "ie.css"
  Select Case True
      Case Opera, Opera5
          vClass = "opera.css"
      Case NS, NS4, NS6
          vClass = "ns.css"
  End Select
%>
Avatar billede steen_hansen Forsker
20. september 2006 - 09:22 #9
sjh, jeg har dog et problem med at kunne genkende Opera (har ikke tjekket på andre ud over MSIE og Opera). Jeg vil gerne kunne angive klassen på elementet i en Select Case, for det er ikke så mange ændringer, der skal laves. Bredden passer i alle browsere, men ikke højden. Det er derfor der skal laves de småjusteringer.

Jeg har sat point op, håber du/I kan hjælpe.
Avatar billede sjh Nybegynder
20. september 2006 - 09:25 #10
Ja klart du bruger jo UCase() det giver STORE bugstaver..

  strUserAgent = UCase(CStr(Request.ServerVariables("HTTP_USER_AGENT")))
  If InStr(strUserAgent, "OPERA") Then
  ...
Avatar billede steen_hansen Forsker
20. september 2006 - 09:32 #11
DOH! Smid et svar - og 70985730429 tak for hjælpen :o)
Avatar billede sjh Nybegynder
20. september 2006 - 09:33 #12
ha ha.. selv tak ;)
Avatar billede steen_hansen Forsker
20. september 2006 - 09:34 #13
Bedste ven! :o)

Også tak for hjælpen til ellebaek :o)
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
Kurser inden for grundlæggende programmering

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