Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery.support检测IE7和更低版本?_Javascript_Jquery_Jquery.support - Fatal编程技术网

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

Javascript 如何使用jQuery.support检测IE7和更低版本?,javascript,jquery,jquery.support,Javascript,Jquery,Jquery.support,目前我正在使用jQuery.browser检测IE7和更低版本 if ($.browser.msie && parseInt($.browser.version) <= 7) { //codes } if($.browser.msie&&parseInt($.browser.version)jQuery.Support不提供浏览器。从jQuery 1.9开始,$.browser函数已被弃用。如果您的快速操作是最简单的方法,则使用浏览器本机导航器对象 //check

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

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

if($.browser.msie&&parseInt($.browser.version)jQuery.Support不提供浏览器。从jQuery 1.9开始,$.browser函数已被弃用。如果您的快速操作是最简单的方法,则使用浏览器本机导航器对象

//check for IE7
if(navigator.appVersion.indexOf("MSIE 7.")!=-1)
使用现代化

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

但是,不建议这样做,因为浏览器可以轻松“欺骗”此对象。使用库(如Moderizer)进行功能检测是一种现代方法。有关更多详细信息,请参阅:

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

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

例如,如果您想使用ajax特性, 您应该通过jQuery.support.ajax检查XMLHttpRequest对象是否存在

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

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

而且还说

由于$.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...

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


无论怎样,这种方法都不能被欺骗。另请参见:Paul Irish。

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

也就是说,检测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;

}());
var ie=(函数(){
var undef,
v=3,
div=document.createElement('div'),
all=div.getElementsByTagName('i');
当(
div.innerHTML=“”,
全部[0]
);
返回v>4?v:未定义;
}());

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

此小功能将告诉您按钮代码是否损坏:

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

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

    return b.value === '12';
}

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

<button type="submit" name="whatever" value="Click me 0">Click me 0</button>
单击我0
现在,每个浏览器都将以
&where=单击+me+0
的形式提交该按钮。我没有IE7可供测试,但从您发布的内容来看,应该可以使用

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


当然,最简单的方法是使用输入类型submit,但您可能无法做到这一点。

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

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

建议您不要检测浏览器,而是检测您需要的功能,或者检测(缺少功能)@Lee Taylor此检测用于修复IE7和更低版本中的某些错误行为,没有涉及功能的错误行为无法被功能检测到?最好询问如何解决缺少的功能或错误行为。在IE7和更高版本中,有一种错误行为,点击按钮不会导致其表单提交t
为您工作?哇,感谢杰克在IE7中很好地解决了检测按钮提交问题。感谢RobG,将尝试此方法,是的,由于某些样式原因,无法使用输入类型提交>注意,IE 10中已删除了条件注释,因此此方法无法用于检测IE版本10或更高版本。
<button type="submit" name="whatever" value="Click me 0">Click me 0</button>
if (!$.support.leadingWhitespace) {
    //IE7 stuff
}