Avatar billede mik28 Seniormester
25. april 2012 - 11:04 Der er 6 kommentarer og
1 løsning

navigator.userAgent

Hej Eksperter

Jeg har lagt et script ind på en side som skal excludere IE7 og IE browsere som er ældre.

<script type="text/javascript">
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
var ieversion=new Number(RegExp.$1);

if (ieversion<=7){
//IE version7 and before
}
else{
IE8+
}           
}
else{
NOT IE
}
</script>

Er ikke sikker på jeg har gjort det på den smarteste måde så jeg er åben for forslag. Nå men mit spørgsmål er i virkeligheden hvordan det kan være at jeg oplever at navigator.userAgent giver mig forskellige resultater. Jeg tester det i en IE8 men får at vide det er en 7'er. Gør jeg det samme på http://w3schools.com/js/tryit.asp?filename=try_nav_all får jeg det rigtige resultat.
Avatar billede mireigi Novice
25. april 2012 - 11:27 #1
Jeg vil anbefale at bruge dette script i stedet for:
var BrowserDetect = {
        init: function ()
        {
            this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
            this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
            this.OS = this.searchString(this.dataOS) || "an unknown OS";
        },
        searchString: function (data)
        {
            for (var i = 0; i < data.length; i++)
            {
                var dataString = data[i].string;
                var dataProp = data[i].prop;
                this.versionSearchString = data[i].versionSearch || data[i].identity;
                if (dataString)
                {
                    if (dataString.indexOf(data[i].subString) != -1)
                        return data[i].identity;
                }
                else if (dataProp)
                    return data[i].identity;
            }
        },
        searchVersion: function (dataString)
        {
            var index = dataString.indexOf(this.versionSearchString);
            if (index == -1) return;
            return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
        },
        dataBrowser: [
        {
            string: navigator.userAgent,
            subString: "Chrome",
            identity: "Chrome"
        },
        { string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
        },
        {
            prop: window.opera,
            identity: "Opera",
            versionSearch: "Version"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {        // for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        {        // for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
        dataOS: [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
            string: navigator.userAgent,
            subString: "iPhone",
            identity: "iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]

    };
    BrowserDetect.init();


Derefter kan du tjekke for gamle IE versioner med dette:

if (BrowserDetect.browser == "Explorer" && BrowserDetect.version < 8)
{
  //Do some stuff
}
else
{
  //This is not IE 7 or older
}
Avatar billede mik28 Seniormester
25. april 2012 - 11:38 #2
hvad så hvis det ikke er IE
Avatar billede mik28 Seniormester
25. april 2012 - 11:39 #3
Grunden til jeg får det forkerte resultat er fordi sitet p.t kører i quirksmode
Avatar billede mireigi Novice
25. april 2012 - 11:54 #4
Håndtering af non-IE:
if (BrowserDetect.browser == "Explorer")
{
  if(BrowserDetect.version < 8)
  {
      // This is old version of IE, do some stuff
  }
  else
  {
      // This is recent version of IE, do some stuff
  }
}
else
{
  //This is not IE, do some stuff
}


Du kan ikke teste noget i QuirksMode. Du er nødt til at teste for den DOCTYPE du ønsker at bruge. Det sikrer dig, at browseren ved, hvordan den skal tolke indholdet.
Avatar billede mik28 Seniormester
01. maj 2012 - 10:58 #5
tak for input. Lægger I nogle svar så jeg kan lukke
Avatar billede mireigi Novice
01. maj 2012 - 11:09 #6
Håber det kunne bruges :)
Avatar billede mik28 Seniormester
01. maj 2012 - 14:12 #7
Bestemt. Tak for hjælpen
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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