我需要一些函数返回一个布尔值来检查浏览器是否是Chrome。

我如何创建这样的功能?


当前回答

用户可以更改用户代理。尝试在body元素的样式对象中测试webkit的前缀属性

if ("webkitAppearance" in document.body.style) {
  // do stuff
}

其他回答

console.log(JSON.stringify({ isAndroid: /Android/.test(navigator.userAgent), isCordova: !!window.cordova, isEdge: /Edge/.test(navigator.userAgent), isFirefox: /Firefox/.test(navigator.userAgent), isChrome: /Google Inc/.test(navigator.vendor), isChromeIOS: /CriOS/.test(navigator.userAgent), isChromiumBased: !!window.chrome && !/Edge/.test(navigator.userAgent), isIE: /Trident/.test(navigator.userAgent), isIOS: /(iPhone|iPad|iPod)/.test(navigator.platform), isOpera: /OPR/.test(navigator.userAgent), isSafari: /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent), isTouchScreen: ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch, isWebComponentsSupported: 'registerElement' in document && 'import' in document.createElement('link') && 'content' in document.createElement('template') }, null, ' '));

所有答案都是错的。“Opera”和“Chrome”在所有情况下都是相同的。

(编辑)

下面是正确答案

if (window.chrome && window.chrome.webstore) {
    // this is Chrome
}
var is_chrome = browseris.chrome

或者查看浏览器:

browseris.firefox
browseris.ie
browseris.safari

此外,你可以像browseris一样检查版本。Chrome7up等等。

检查browseris对象中的所有现有信息

在Mac上的Chrome上为我工作。似乎比上面所有的都更简单或更可靠(如果userAgent字符串测试)。

        var isChrome = false;
        if (window.chrome && !window.opr){
            isChrome = true;
        }
        console.log(isChrome);

更新:请参阅Jonathan的回答,了解处理这个问题的最新方法。下面的答案可能仍然有效,但在其他浏览器中可能会引发一些误报。

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);

然而,正如前面提到的,用户代理可能会被欺骗,所以在处理这些问题时,最好使用特征检测(例如Modernizer),正如其他答案所提到的。