6

目前我正在使用 jQuery.browser 来检测 IE7 及更低版本

if ($.browser.msie && parseInt($.browser.version) <= 7) {
    //codes
}

但是 jQuery.browser 在 jQuery 1.3 中被弃用并在 jQuery 1.9 中被删除,我从 jQuery 网站上读到我们应该使用特征检测来代替(jQuery.support)。

那么,如何使用 jQuery.support 检测 IE7 及更低版本?

4

7 回答 7

10

最好的方法是使用条件注释并使用 jQuery 的hasClass().

<!--[if lt IE 7]>      <html class="ie6"> <![endif]-->
<!--[if IE 7]>         <html class="ie7"> <![endif]-->
<!--[if IE 8]>         <html class="ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html>         <!--<![endif]-->

在您的 jQuery 中,检查 IE 7:

// Check IE 7
if ($('html').hasClass('ie7');

这种方法无论如何都不能被欺骗。另请参阅:Paul Irish 的条件样式表。

于 2013-04-02T04:18:43.337 回答
2

这个小功能会告诉你按钮代码是否损坏:

function isButtonBroken()
{
    var b = document.createElement('button');

    b.value = 1;
    b.appendChild(document.createTextNode('2'));

    return b.value === '12';
}
于 2013-04-02T04:39:38.997 回答
1

jQuery.Support 不给你浏览器。从 jQuery 1.9 开始,不推荐使用 $.browser 函数。如果您快速完成后最简单的方法是使用浏览器本机导航器对象。

//check for IE7
if(navigator.appVersion.indexOf("MSIE 7.")!=-1)

使用 Modernizr

//check for IE7 or less
if ($('html').hasClass('lt-ie7');

但是不推荐这样做,因为浏览器很容易“欺骗”这个对象。使用诸如 Moderizer 之类的库来进行特征检测是现代方法。有关更多详细信息,请参阅:使用 JAVASCRIPT/JQUERY 检查 IE 版本的 5 种以上方法

于 2013-04-02T03:56:34.663 回答
1

正如其他人所说,尝试检测浏览器版本是一个坏主意,您应该依赖功能检测。

也就是说,检测IE 浏览器渲染引擎的唯一可靠方法是使用条件注释。您可以使用这个小片段为您获取它:

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());

请记住,这仅适用于支持条件注释的 IE 版本不适用于 IE10 或更高版本。

于 2013-04-02T04:19:13.417 回答
0

无脚本解决方案可以基于为按钮提供一种提交类型和一个名称,即您要提交的值。然后,在服务器上,使操作依赖于 name 属性的值,而不是值,例如

<button type="submit" name="whatever" value="Click me 0">Click me 0</button>

现在每个浏览器都会将按钮提交为&whatever=Click+me+0. 我没有 IE 7 可以测试,但从你发布的内容来看,应该可以。

如果表单中有多个按钮,只有点击提交表单的那个会成功,所以只会提交那个按钮的名称和值。

当然最简单的是使用输入类型提交,但也许你不能这样做。

于 2013-04-02T08:40:23.473 回答
0

U 可以使用以下条件进行检测。

if (!$.support.leadingWhitespace) {
    //IE7 stuff
}
于 2014-12-31T09:21:24.950 回答
-1

您无法使用 jQuery.support 检测浏览器。

与其检查浏览器,不如检查要使用的浏览器的功能。

例如,如果你想使用 ajax 功能,你可以通过 jQuery.support.ajax 检查 XMLHttpRequest 对象的存在

var ajaxEnabled = $.support.ajax;
if (ajaxEnabled) {
  // do something
}

jQuery.browser 文档

jQuery.browser 可能会在 jQuery 的未来版本中移动到插件中。

并且还说

因为 $.browser 使用 navigator.userAgent 来确定平台,所以它很容易受到用户的欺骗或浏览器本身的虚假陈述。在可能的情况下,最好完全避免使用特定于浏览器的代码。$.support 属性可用于检测对特定功能的支持,而不是依赖于 $.browser。


您可以制作自己的浏览器检测代码。见下文。但请记住,正如 jQuery 文档所说,这段代码很容易受到欺骗。

var ua = navigator.userAgent.toLowerCase();

var isOpera : (ua.indexOf('opera') >= 0) ? true : false;
var isFirefox : (ua.indexOf('firefox') >= 0) ? true : false;
var isMSIE : (ua.indexOf('msie') >= 0) ? true : false;
var isMSIE6 : (ua.indexOf('msie 6.0') >= 0) ? true : false;
var isMSIE7 : (ua.indexOf('msie 7.0') >= 0) ? true : false;
var isMSIE8 : (ua.indexOf('msie 8.0') >= 0) ? true : false;
var isMSIE9 : (ua.indexOf('msie 9.0') >= 0) ? true : false;
// and other browsers...
于 2013-04-02T04:01:42.747 回答