How to detect my browser version and operating system using JavaScript?

后端 未结 10 905
天命终不由人
天命终不由人 2020-11-22 06:25

I have tried using the code below but it only display results in Chrome and Mozilla not working in IE6.

相关标签:
10条回答
  • 2020-11-22 07:04

    Try this one..

    // Browser with version  Detection
    navigator.sayswho= (function(){
        var N= navigator.appName, ua= navigator.userAgent, tem;
        var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
        if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
        M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
        return M;
    })();
    
    var browser_version          = navigator.sayswho;
    alert("Welcome to " + browser_version);
    

    check out the working fiddle ( here )

    0 讨论(0)
  • 2020-11-22 07:06

    I'm sad to say: We are sh*t out of luck on this one.

    I'd like to refer you to the author of WhichBrowser: Everybody lies.

    Basically, no browser is being honest. No matter if you use Chrome or IE, they both will tell you that they are "Mozilla Netscape" with Gecko and Safari support. Try it yourself on any of the fiddles flying around in this thread:

    hims056's fiddle

    Hariharan's fiddle

    or any other... Try it with Chrome (which might still succeed), then try it with a recent version of IE, and you will cry. Of course, there are heuristics, to get it all right, but it will be tedious to grasp all the edge cases, and they will very likely not work anymore in a year's time.

    Take your code, for example:

    <div id="example"></div>
    <script type="text/javascript">
    txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>";
    txt+= "<p>Browser Name: " + navigator.appName + "</p>";
    txt+= "<p>Browser Version: " + navigator.appVersion + "</p>";
    txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
    txt+= "<p>Platform: " + navigator.platform + "</p>";
    txt+= "<p>User-agent header: " + navigator.userAgent + "</p>";
    document.getElementById("example").innerHTML=txt;
    </script>
    

    Chrome says:

    Browser CodeName: Mozilla

    Browser Name: Netscape

    Browser Version: 5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36

    Cookies Enabled: true

    Platform: Win32

    User-agent header: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36

    IE says:

    Browser CodeName: Mozilla

    Browser Name: Netscape

    Browser Version: 5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; rv:11.0) like Gecko

    Cookies Enabled: true

    Platform: Win32

    User-agent header: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; rv:11.0) like Gecko

    At least Chrome still has a string that contains "Chrome" with the exact version number. But, for IE you must extrapolate from the things it supports to actually figure it out (who else would boast that they support .NET or Media Center :P), and then match it against the rv: at the very end to get the version number. Of course, even such sophisticated heuristics might very likely fail as soon as IE 12 (or whatever they want to call it) comes out.

    0 讨论(0)
  • 2020-11-22 07:06

    For Firefox, Chrome, Opera, Internet Explorer and Safari

    var ua="Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)";
    //ua = navigator.userAgent;
    var b;
    var browser;
    if(ua.indexOf("Opera")!=-1) {
    
        b=browser="Opera";
    }
    if(ua.indexOf("Firefox")!=-1 && ua.indexOf("Opera")==-1) {
        b=browser="Firefox";
        // Opera may also contains Firefox
    }
    if(ua.indexOf("Chrome")!=-1) {
        b=browser="Chrome";
    }
    if(ua.indexOf("Safari")!=-1 && ua.indexOf("Chrome")==-1) {
        b=browser="Safari";
        // Chrome always contains Safari
    }
    
    if(ua.indexOf("MSIE")!=-1 && (ua.indexOf("Opera")==-1 && ua.indexOf("Trident")==-1)) {
        b="MSIE";
        browser="Internet Explorer";
        //user agent with MSIE and Opera or MSIE and Trident may exist.
    }
    
    if(ua.indexOf("Trident")!=-1) {
        b="Trident";
        browser="Internet Explorer";
    }
    
    // now for version
    
    
    var version=ua.match(b+"[ /]+[0-9]+(.[0-9]+)*")[0];
    
    console.log("broswer",browser);
    console.log("version",version);
    
    0 讨论(0)
  • 2020-11-22 07:10

    PPK's script is THE authority for this kind of things, as @Jalpesh said, this might point you in the right way

    var wn = window.navigator,
            platform = wn.platform.toString().toLowerCase(),
            userAgent = wn.userAgent.toLowerCase(),
            storedName;
    
    // ie
        if (userAgent.indexOf('msie',0) !== -1) {
            browserName = 'ie';
            os = 'win';
            storedName = userAgent.match(/msie[ ]\d{1}/).toString();
            version = storedName.replace(/msie[ ]/,'');
    
            browserOsVersion = browserName + version;
        }
    

    Taken from https://github.com/leopic/jquery.detectBrowser.js/blob/sans-jquery/jquery.detectBrowser.sansjQuery.js

    0 讨论(0)
  • 2020-11-22 07:13

    To get the new Microsoft Edge based on a Mozilla core add:

    else if ((verOffset=nAgt.indexOf("Edg"))!=-1) {
     browserName = "Microsoft Edge";
     fullVersion = nAgt.substring(verOffset+5);
    }
    

    before

    // In Chrome, the true version is after "Chrome" 
    else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
     browserName = "Chrome";
     fullVersion = nAgt.substring(verOffset+7);
    }
    
    0 讨论(0)
  • 2020-11-22 07:16

    I wasn't able to get some of the other answers to work on Chrome, Firefox, IE11, and Edge with the same code. I came up with the below and it appears to work for those browsers listed above. I also wanted to see what OS the user was on. I haven't tested this against a browser with user overridden User-Agent settings, so mileage may vary. The order of the IFs is important for this to work correctly.

    let os, osStore, bStore, appVersion, browser;
    // Chrome
    if(navigator.vendor === "Google Inc."){
        appVersion = navigator.appVersion.split(" ");
        os = [appVersion[1],appVersion[2],appVersion[3],appVersion[4],appVersion[5]].join(" ");
        os = os.split("(")[1].split(")")[0]
        browser = appVersion[appVersion.length-2].split("/").join(" ");
        console.log("Browser:",browser,"- OS:",os);
    }
    
    // Safari
    else if(navigator.vendor === "Apple Computer, Inc."){
        appVersion = navigator.appVersion.split(" ");
        os = [appVersion[1],appVersion[2],appVersion[3],appVersion[4],appVersion[5]].join(" ");
        os = os.split("(")[1].split(")")[0];
        browser = appVersion[appVersion.length-1].split("/").join(" ");
        console.log("Browser:",browser,"- OS:",os);
    }
    
    // Firefox is seems the only browser with oscpu
    else if(navigator.oscpu){
        bStore = navigator.userAgent.split("; ").join("-").split(" ");
        browser = bStore[bStore.length-1].replace("/"," ");
        osStore = [bStore[1],bStore[2],bStore[3]].join(" ");
        osStore = osStore.split("-");
        osStore.pop(osStore.lastIndexOf)
        osStore = osStore.join(" ").split("(");
        os = osStore[1];
        console.log("Browser:",browser,"- OS:",os);
    }
    
    // IE is seems the only browser with cpuClass
    // MSIE 11:10 Mode
    else if(navigator.appName === "Microsoft Internet Explorer"){
        bStore = navigator.appVersion.split("; ");
        browser = bStore[1]+" / "+bStore[4].replace("/"," ");
        os = [bStore[2],bStore[3]].join(" ");
        console.log("Browser:",browser,"- OS:",os);
    }
    
    // MSIE 11
    else if(navigator.cpuClass){
        bStore = navigator.appVersion.split("; ");
        osStore = [bStore[0],bStore[1]].join(" ");
        os = osStore.split("(")[1];
        browser = "MSIE 11 "+bStore[2].split("/").join(" ");
        console.log("Browser:",browser,"- OS:",os);
    }
    
    // Edge
    else if(navigator.appVersion){
        browser = navigator.appVersion.split(" ");
        browser = browser[browser.length -1].split("/").join(" ");
        os = navigator.appVersion.split(")")[0].split("(")[1];
        console.log("Browser:",browser,"- OS:",os);
    }
    
    // Other browser
    else {
        console.log(JSON.stringify(navigator));
    }
    
    0 讨论(0)
提交回复
热议问题