如何使用JavaScript确定确切的浏览器和版本?


当前回答

通常最好尽可能避免使用特定于浏览器的代码。JQuery $。属性可用于检测对特定特性的支持,而不是依赖于浏览器名称和版本。

以Opera为例,你可以伪造internet explorer或firefox实例。

JQuery的详细描述。支持可以在这里找到:http://api.jquery.com/jQuery.support/

现在根据jQuery弃用。

我们强烈建议使用外部库,如Modernizr 而不是依赖于jQuery.support中的属性。

在编写网站代码时,我总是确保,像导航这样的基本功能对非js用户也是可以访问的。这可能是讨论的对象,如果主页是针对特殊受众,可以忽略。

其他回答

虽然不是你想要的,但也很接近:

var jscriptVersion = /*@cc_on @if(@_jscript) @_jscript_version @else @*/ false /*@end @*/;
var geckoVersion = navigator.product === 'Gecko' && navigator.productSub;
var operaVersion = 'opera' in window && 'version' in opera && opera.version();

变量将包含适当的版本,如果不可用则为false。

如果有人使用Chrome浏览器可以发现你是否可以使用window,我会很感激。Chrome与window.opera类似。

通常最好尽可能避免使用特定于浏览器的代码。JQuery $。属性可用于检测对特定特性的支持,而不是依赖于浏览器名称和版本。

以Opera为例,你可以伪造internet explorer或firefox实例。

JQuery的详细描述。支持可以在这里找到:http://api.jquery.com/jQuery.support/

现在根据jQuery弃用。

我们强烈建议使用外部库,如Modernizr 而不是依赖于jQuery.support中的属性。

在编写网站代码时,我总是确保,像导航这样的基本功能对非js用户也是可以访问的。这可能是讨论的对象,如果主页是针对特殊受众,可以忽略。

你可以扫描用户代理来查找浏览器名称,而不是硬编码web浏览器:

navigator.userAgent.split(')').reverse()[0].match(/(?!Gecko|Version|[A-Za-z]+?Web[Kk]it)[A-Z][a-z]+/g)[0]

我已经在Safari、Chrome和Firefox上进行了测试。如果您发现这在浏览器上不起作用,请告诉我。

Safari:“旅行” 铬:“铬” Firefox:“火狐”

如果需要,您甚至可以修改它以获得浏览器版本。请注意,有更好的方法来获得浏览器版本

navigator.userAgent.split(')').reverse()[0].match(/(?!Gecko|Version|[A-Za-z]+?Web[Kk]it)[A-Z][a-z]+\/[\d.]+/g)[0].split('/')

样例输出:

Firefox/39.0    

这个小图书馆可能对你有帮助。但是请注意,浏览器检测并不总是解决方案。

您可以使用jQuery库来检测浏览器版本。

例子:

jQuery.browser.version

然而,这只有在你同时使用jQuery的其他函数时才有意义。对我来说,仅仅为了检测浏览器而添加整个库似乎有点小题大做。

更多信息: http://api.jquery.com/jQuery.browser/

(你需要向下滚动一点)