使用Javascript检测Google Chrome的安全功能的方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

正如标题所述,我有兴趣找到一种安全的基于功能的方式(即,不使用navigator.appName或navigator.appVersion)来检测Google Chrome。

我的意思是基于特征的,例如:

if(window.ActiveXObject) {
    // internet explorer!
}

正如已经指出的那样,这个问题没有多大意义(显然,如果你想实现一个功能,你测试它,如果你想检测一个特定的浏览器,你检查用户代理),抱歉,这是凌晨5点;)让我说这样的话:是否有任何JavaScript对象和/或功能是唯一的Chrome ...

提问于
用户回答回答于
isChrome = function() {
    return Boolean(window.chrome);
}
用户回答回答于

我认为功能检测比navigator.userAgent解析更有用,正如我在这里搜索Opera ambiguosity一样。没有人可以知道IE16是否会解析/ MSIE 16.0; / regexp - 但我们可以肯定,会有document.all支持。在现实生活中,这些功能通常是浏览器的同义词,例如:“没有XMLHttpRequest?它是IE6!”。 没有nonIE浏览器支持document.all,但像Maxthon这样的浏览器可以加扰userAgent。(当然由于某些原因,脚本可以在Firefox中定义document.all,但它很容易控制。)因此,我建议这个解决方案。

在这里我找到了完整的资源

我已测试过document.all,Opera也支持!

var is = {
  ff: window.globalStorage,
  ie: document.all && !window.opera,
  ie6: !window.XMLHttpRequest,
  ie7: document.all && window.XMLHttpRequest && !XDomainRequest && !window.opera,
  ie8: document.documentMode==8,
  opera: Boolean(window.opera),
  chrome: Boolean(window.chrome),
  safari: window.getComputedStyle && !window.globalStorage && !window.opera
}

使用很简单:

if(is.ie6) { ... }

我还没有测试Safari探测,有人可以帮忙吗?

扫码关注云+社区