【发布时间】:2014-01-03 17:54:14
【问题描述】:
我使用 jquery v1.9.1。我知道 jquery.browser 在 1.9 中已删除,但我必须使用它。我使用迁移插件来获取浏览器类型。它工作正常,但对于 IE(11) 和 firefox(25+) ,jquery.browser 显示相同的值(“Mozilla”)。如何在 $.browser 中检测 IE?
【问题讨论】:
标签: jquery asp.net jquery-migrate
我使用 jquery v1.9.1。我知道 jquery.browser 在 1.9 中已删除,但我必须使用它。我使用迁移插件来获取浏览器类型。它工作正常,但对于 IE(11) 和 firefox(25+) ,jquery.browser 显示相同的值(“Mozilla”)。如何在 $.browser 中检测 IE?
【问题讨论】:
标签: jquery asp.net jquery-migrate
请参阅Stackoverflow 的 Synthy 回答
var matched, browser;
// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
jQuery.uaMatch = function( ua ) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
matched = jQuery.uaMatch( navigator.userAgent );
browser = {};
if ( matched.browser ) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
browser.webkit = true;
} else if ( browser.webkit ) {
browser.safari = true;
}
jQuery.browser = browser;
【讨论】:
这是因为 IE11 使用了与以前版本不同的 User-Agent 字符串,而旧的 jQuery.browser 并没有意识到这一点。实际上它比以前更多:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
您可以使用更可靠的工具,例如WhichBrowser。
【讨论】:
【讨论】: