ASPTipsBrowserkontroll
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunder Input/output VBScript Databaser Tips Exempel

Browserkontroll

Enklaste sättet att kontrollera browsern är med hjälp av kod liknande nedanstående. (Den kontrollerar inte alla browsertyper, men verkar vara tillräckligt noga)

<%
' Funktionen returnerar IE4 eller IE3 för Internet Explorer
' NS5, NS4 eller NS3 för Netscape
' OTHERx där x är versionsnummer för övriga
Function detectApp()
    Dim app
    app = Ucase( Request.ServerVariables( "HTTP_USER_AGENT" ) )
    if Instr( app, "MSIE" ) Then
        detectApp = "IE" & Mid( app, InStr( app, "/" ) + 1, 1 )
    Else
        If InStr( app, "MOZILLA" ) And InStr( app, "COMPATIBLE" ) = 0 Then
            detectApp = "NS" & Mid(app, InStr(app, "/") + 1, 1)
        Else
            detectApp = "OTHER" & Mid(app, InStr(app, "/") + 1, 1)
        End If
    End If
End Function
%>

Denna kan då användas på detta sätt


<% If detectApp = "IE4" then %>
Gör det som skall göras om det är Internet Explorer
<% End If %>

Man kan även spara bara funktionskoden i en separat fil. Om denna fil heter whatbrowser.asp kan man då använda den på följande sätt


<!--#include file="whatbrowser.asp" -->

<% If detectApp = "IE4" then %>
Gör det som skall göras om det är Internet Explorer
<% End If %>

En annan variant

<%
' Funktionen returnerar IE för Internet Explorer
' NS för Netscape
' OTHER där övriga
Function appName()
    Dim app
    app = Ucase( Request.ServerVariables( "HTTP_USER_AGENT" ) )
    if Instr( app, "MSIE" ) Then
        appName = "IE"
    Else
        If InStr( app, "MOZILLA" ) And InStr( app, "COMPATIBLE" ) = 0 Then
            appName = "NS"
        Else
            appName = "OTHER"
        End If
    End If
End Function

' Funktionen returnerar versionsnumret
Function appVersion()
    Dim app
    app = Ucase( Request.ServerVariables( "HTTP_USER_AGENT" ) )
    appVersion = Mid( app, InStr( app, "/" ) + 1, 1 )
End Function
%>

Man kan även använda nedanstående metod men den kräver en FÄRSK browcap.ini för att fungera eftersom den inte klarar av nyare browsers som inte finns i filen

Ibland kan det vara intressant att veta lite mera om klientens browser. Om denna inte stöder JavaScript eller frames kommer detta att inverka på vad vi kan sända åt klienten.

I ASP finns en möjlighet att kontrollera lite basfakta om klienten.

Detta kan ske med en Browser Capabilities Component

OBS! Denna komponent förutsätter att det finns en fil med namnet browscap.ini, samt en fil med namet browscap.dll i
<NT's hemkatalog>\system32\inetsrv\ASP\Cmpnts

Var den finns i Win95 vet jag inte men gör en sökning efter browscap.ini och se var den finns.

Ini filen måste uppdateras vartefter det kommer nya browsers. En rätt färsk fil finns att få här

Exempel på detta:


<%   Set bc = Server.CreateObject("MSWC.BrowserType") %>  
<table border=1>
<tr><td>Browser</td><td> <%= bc.browser %>  
<tr><td>Version</td><td> <%= bc.version %>   </td></TR>
<tr><td>Majorver</td><td> <%= bc.majorver %>   </td></TR>
<tr><td>Minorver</td><td> <%= bc.minorver %>   </td></TR>
<tr><td>Frames</td><td>
<%   if (bc.frames = TRUE) then %>   Ja
<%   else %>   Nej
<%   end if %>  </td></TR>
<tr><td>Tabeller</td><td>
<%   if (bc.tables = TRUE) then %>   Ja
<%   else %>  Nej
<%   end if %>  </td></TR>
<tr><td>Bakgrundsljud</td><td>
<%   if (bc.BackgroundSounds = TRUE) then %>   Ja
<%   else %>  nej
<%   end if %>  </td></TR>
<tr><td>VBScript</td><td>
<%   if (bc.vbscript = TRUE) then %>   Ja
<%   else %>  Nej
<%   end if %>  </td></TR>
<tr><td>JScript</td><td>
<%   if (bc.javascript = TRUE) then %>   Ja
<%   else %>  Nej
<%   end if %>  </td></TR>
<tr><td>Java</td><td>
<%   if (bc.javaapplets = TRUE) then %>   Ja
<%   else %>  Nej
<%   end if %>  </td></TR>
<tr><td>ActiveX</td><td>
<%   if (bc.ActiveXControls = TRUE) then %>   Ja
<%   else %>  Nej
<%   end if %>  </td></TR>
</table>


Som resulterar i följande: (Vad som kan kollas beror på ini filen)
Browser Default
Version 0.0
Majorver 0
Minorver 0
Frames Nej
Tabeller Ja
Bakgrundsljud nej
VBScript Nej
JScript Nej
Java Nej
ActiveX Nej

I praktiken används denna funktion på detta sätt:


<% Set bc = Server.CreateObject("MSWC.BrowserType")
if (bc.ActiveXControls = TRUE) then %>

  Här kan vi således sätta in en ActiveX kontroll
<% else
  if (bc.javaapplets = TRUE) then %>

    Vi använder en Java kontroll istället
  <% else %>
    Måste använda någon annan metod
<% end if %>

Om man ofta måste kontrollera vilken browser som används kan det löna sig att utföra detta en gång i global.asa:


<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
  Set bc = Server.CreateObject("MSWC.BrowserType")
  If bc.browser = "Unknown" then
    Session("ActiveXControls") = 0
    Session("javaapplets") = 0
    Session("javascript") = 0
    Session("majorver") = 1
    Session("frames") = 0
    Session("browser") = "Unknown"
  else
    Session("ActiveXControls") = bc.ActiveXControls
    Session("javaapplets") = bc.javaapplets
    Session("javascript") = bc.javascript
    Session("majorver") = bc.majorver
    Session("frames") = bc.frames
    Session("browser") = bc.browser
  end if
End Sub

Vi kan då använda följande kod istället:


<%
if (Session("ActiveXControls") = TRUE) then %>

  Här kan vi således sätta in en ActiveX kontroll
<% else
  if (Session("javaapplets") = TRUE) then %>

    Vi använder en Java kontroll istället
  <% else %>
    Måste använda någon annan metod
<% end if %>
  Kompletterande saker till layoutmetodenExempel
Tips
Använd include!
Mångspråkiga sidor
Skapa länkarna dynamiskt
Ett förslag till layoutmetod
Konvertera ASP till HTML
Kompletterande saker till layoutmetoden
Browserkontroll


Top
< Kompletterande saker till layoutmetoden Exempel>
© Anders Enges, Vörå 2002  | 10.10.01 10:36 Visa asp koden