window.navigator
(包括navigator.userAgent
)的情况下检测浏览器?首先澄清一下,我不需要知道渲染引擎,这不是为了自适应布局,而且请不要惊慌:我已经进行了特性检测。如果“为什么”我要求检测浏览器很重要,请评论,我将很乐意加入解释,但这可能会使问题变得非常冗长。
接下来,让我说明为什么我的问题不是重复的:
在Javascript中检测浏览器? 因为有19个答案,其中12个明确使用了
navigator.userAgent
(包括使用userAgent的jQuery.browser
,但现已被删除),4个使用navigator.appName
(在Chrome中会返回“Netscape”……),1个通过建议特征检测来回避问题,这与浏览器检测不同(我已经在使用特征检测,但为了知道它们的使用程度,我需要浏览器检测),2个并非真正的答案或只适用于IE。(尽管这个非答案实际上非常详细地解释了为什么我的问题很重要:我试图避免在某些浏览器上出现崩溃标签的痛点!)由于我的问题正在寻求一种不使用window.navigator
的答案(即使是hack?),所以它不是那个问题的重复。如何检测用户是否在使用IE浏览器? 因为有11个答案,其中10个使用
navigator.userAgent
,而另一个则使用IE技巧仅检测IE,这不足以回答我的问题(尽管它可能是发布在此处的有用解决方案的一小部分)?在Javascript中,如何确定当前浏览器是否为Firefox(计算机上)而不是其他浏览器? 因为有11个答案,其中8个使用
navigator.userAgent
,2个建议特征检测(同样不是我的问题),而1个甚至不是一个真正的答案。如何检测Chrome和Safari浏览器(WebKit)? 因为有8个答案,其中6个使用
navigator.userAgent
,而2个则是针对WebKit的。不幸的是,WebKit不一定只与Safari相关,我需要知道的是浏览器,而不是渲染引擎。
我知道还有其他方法可以做到这一点,但是我不太了解每个浏览器的内部情况。在某些浏览器中,是否有一些对象或变量始终或可靠地暴露给JavaScript呢?也许有吗?我知道一些实验性API是供应商前缀的,但这似乎不适用于商业产品,尽管如果需要,我愿意降低要求。还有其他可能性吗?