如何使用jQuery.support检测IE7和更低?

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

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

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

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

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

       

在你的jQuery中,检查IE 7:

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

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

这个小函数会告诉你按钮代码是否坏了:

 function isButtonBroken() { var b = document.createElement('button'); b.value = 1; b.appendChild(document.createTextNode('2')); return b.value === '12'; } 

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种方法

正如其他人所说,试图检测浏览器版本是一个坏主意,你应该依靠function检测。

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

 var ie = (function(){ var undef, v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( div.innerHTML = '', all[0] ); return v > 4 ? v : undef; }()); 

请记住,这仅适用于支持条件注释的IE版本,并且在IE10或更高 版本中 无效

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

  

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

如果表单中有多个按钮,则只有单击提交表单的按钮才会成功,因此只会提交该按钮的名称和值。

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

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

 if (!$.support.leadingWhitespace) { //IE7 stuff } 

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

您应该检查要使用的浏览器的function ,而不是检查浏览器。

例如,如果要使用ajaxfunction,则可以通过jQuery.support.ajax检查XMLHttpRequest对象的存在。

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

jQuery.browser文档说

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

并且也说

因为$ .browser使用navigator.userAgent来确定平台,所以很容易被用户欺骗或浏览器本身误传。 最好尽可能完全避免特定于浏览器的代码。 $ .support属性可用于检测对特定function的支持,而不是依赖于$ .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...