正如标题所述,我有兴趣找到一个基于安全功能(即不使用navigator.appName或navigator.appVersion)的方式来检测谷歌浏览器.
基于特征我的意思是,例如:
if(window.ActiveXObject) { // internet explorer! }
编辑:正如已经指出的那样,问题没有多大意义(显然,如果你想实现一个功能,你要测试它,如果你想检测一个特定的浏览器,你检查用户代理),对不起,这是凌晨5点;)让我这样说:Chrome是否有任何javascript对象和/或功能...
isChrome = function() { return Boolean(window.chrome); }
这个答案已经过时了,但在石器时代它非常相关.
我认为特征检测比navigator.userAgent解析更有用,因为我在这里搜索了Opera的模糊性.没人能知道IE16是否会解析/ MSIE 16.0;/regexp - 但我们可以肯定的是,会有document.all支持.在现实生活中,这些功能通常是浏览器的同义词,例如:"没有XMLHttpRequest?它是f ...... d IE6!" 没有nonIE浏览器支持document.all,但是像Maxthon这样的浏览器可以加扰userAgent.(当然脚本可以出于某种原因在Firefox中定义document.all,但它很容易控制.)因此我建议这个解决方案.
编辑 在这里我找到了完整的资源
编辑2我已经测试了该文档.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) { ... }