如何获得浏览器的名称客户端?

Vir*_*hah 28 javascript browser cross-browser

是否有任何对象/方法可以提供有关浏览器,客户端的信息?

例如,我需要检测IE浏览器.我在用:

function st_IsIE()
{
    if(navigator.appName.indexOf("Microsoft Internet Explorer") != -1)
    {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

ped*_*ram 22

JavaScript方面 - 你可以像这些方式获得浏览器名称......

if(window.navigator.appName == "") OR if(window.navigator.userAgent == "")
Run Code Online (Sandbox Code Playgroud)

  • 使用它的问题是在Firefox中执行时将返回_Netscape_.我认为更可靠的方法是`window.navigator.userAgent`. (3认同)

Ani*_*rni 18

这是纯JavaScript解决方案.这是我的要求.
我试过不同的浏览器.它工作正常.希望能帮助到你.

如何检测浏览器名称?

您可以使用navigator.appNamenavigator.userAgent属性.该userAgent属性更可靠,appName因为,例如,Firefox(和一些其他浏览器)可能返回字符串"Netscape"作为navigator.appName与Netscape Navigator兼容的值.

但请注意,这navigator.userAgent也可能是欺骗性的 - 也就是说,客户端几乎可以替换任何字符串userAgent.因此,无论我们从任何一个推论出来,appName还是userAgent应该用一粒盐.

var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserName  = navigator.appName;
var fullVersion  = ''+parseFloat(navigator.appVersion); 
var majorVersion = parseInt(navigator.appVersion,10);
var nameOffset,verOffset,ix;

// In Opera, the true version is after "Opera" or after "Version"
if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
   browserName = "Opera";
   fullVersion = nAgt.substring(verOffset+6);
   if ((verOffset=nAgt.indexOf("Version"))!=-1) 
     fullVersion = nAgt.substring(verOffset+8);
}
// In MSIE, the true version is after "MSIE" in userAgent
else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
   browserName = "Microsoft Internet Explorer";
   fullVersion = nAgt.substring(verOffset+5);
}
// In Chrome, the true version is after "Chrome" 
else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
   browserName = "Chrome";
   fullVersion = nAgt.substring(verOffset+7);
}
// In Safari, the true version is after "Safari" or after "Version" 
else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
   browserName = "Safari";
   fullVersion = nAgt.substring(verOffset+7);
   if ((verOffset=nAgt.indexOf("Version"))!=-1) 
     fullVersion = nAgt.substring(verOffset+8);
}
// In Firefox, the true version is after "Firefox" 
else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
    browserName = "Firefox";
    fullVersion = nAgt.substring(verOffset+8);
}
// In most other browsers, "name/version" is at the end of userAgent 
else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) {
    browserName = nAgt.substring(nameOffset,verOffset);
    fullVersion = nAgt.substring(verOffset+1);
    if (browserName.toLowerCase()==browserName.toUpperCase()) {
       browserName = navigator.appName;
    }
}
// trim the fullVersion string at semicolon/space if present
if ((ix=fullVersion.indexOf(";"))!=-1)
    fullVersion=fullVersion.substring(0,ix);
if ((ix=fullVersion.indexOf(" "))!=-1)
    fullVersion=fullVersion.substring(0,ix);

majorVersion = parseInt(''+fullVersion,10);
if (isNaN(majorVersion)) {
    fullVersion  = ''+parseFloat(navigator.appVersion); 
    majorVersion = parseInt(navigator.appVersion,10);
}

document.write(''
                +'Browser name  = '+browserName+'<br>'
                +'Full version  = '+fullVersion+'<br>'
                +'Major version = '+majorVersion+'<br>'
                +'navigator.appName = '+navigator.appName+'<br>'
                +'navigator.userAgent = '+navigator.userAgent+'<br>');
Run Code Online (Sandbox Code Playgroud)

来自源码javascripter.net

  • 我的IE 11在userAgent中没有MSIE (3认同)

Raa*_*aab 13

编辑:由于答案对于较新版本的jquery无效由于jQuery.browser在版本1.9中已弃用,因此请使用Jquery Migrate插件.


原始答案

jQuery.browser

jQuery.browserjQuery.browser.version

是你的方式......

  • 已弃用版本1.9 (7认同)
  • 问题不在于jQuery (5认同)
  • 但这不应该。没有人提到jQuery。 (3认同)

Shr*_*ree 6

在c#中,您的浏览器名称使用:

System.Web.HttpBrowserCapabilities browser = Request.Browser;
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅链接

http://msdn.microsoft.com/en-us/library/3yekbd5b%28v=vs.100%29.aspx

在客户方:

JQuery的:

jQuery.browser
Run Code Online (Sandbox Code Playgroud)

有关详情,请参阅链接:

http://api.jquery.com/jQuery.browser/

  • 我包含c#因为在编辑问题之前有c#标签. (3认同)

Sin*_*ias 6

我在这里找到了一个纯粹的 Javascript 解决方案它似乎适用于 PC 和 Mac 的主要浏览器。我在 BrowserStack 中针对这两个平台对其进行了测试,它的工作原理就像做梦一样。Jason D'Souza 在此线程中发布的 Javascript 解决方案非常好,因为它为您提供了许多有关浏览器的信息,但它在识别 Edge 时遇到了问题,该 Edge 看起来像 Chrome。他的代码可能会使用此解决方案进行一些修改,使其也适用于 Edge。这是我找到的代码片段:

    var browser = (function (agent) {
    switch (true) {
        case agent.indexOf("edge") > -1: return "edge";
        case agent.indexOf("edg") > -1: return "chromium based edge (dev or canary)";
        case agent.indexOf("opr") > -1 && !!window.opr: return "opera";
        case agent.indexOf("chrome") > -1 && !!window.chrome: return "chrome";
        case agent.indexOf("trident") > -1: return "ie";
        case agent.indexOf("firefox") > -1: return "firefox";
        case agent.indexOf("safari") > -1: return "safari";
        default: return "other";
    }
})(window.navigator.userAgent.toLowerCase());
console.log(window.navigator.userAgent.toLowerCase() + "\n" + browser);
Run Code Online (Sandbox Code Playgroud)


BSl*_*ink 5

我喜欢Sintrias 的答案,但我想用稍微更现代的语法进行更新。

  const userAgent = window.navigator.userAgent.toLowerCase();
  const browser =
    userAgent.indexOf('edge') > -1 ? 'edge'
      : userAgent.indexOf('edg') > -1 ? 'chromium based edge'
      : userAgent.indexOf('opr') > -1 && !!window.opr ? 'opera'
      : userAgent.indexOf('chrome') > -1 && !!window.chrome ? 'chrome'
      : userAgent.indexOf('trident') > -1 ? 'ie'
      : userAgent.indexOf('firefox') > -1 ? 'firefox'
      : userAgent.indexOf('safari') > -1 ? 'safari'
      : 'other';
  
  console.log(`${userAgent.toLowerCase()}\n${browser}`);
Run Code Online (Sandbox Code Playgroud)