-->

jQuery的检测IE6使用jQuery.support不jQuery.browser(jQuery

2019-07-01 20:14发布

我没有发现任何明确的方式使用jquery.support代替它不再支持jquery.browser检测IE6。 此外,我需要考虑到怪癖模式,唉!

我见过一对夫妇的职位上堆栈,但他们都指jquery.browser和jquery.support的文档是有点含糊。

任何帮助将是巨大的进步和感谢。

Answer 1:

我认为jQuery开发的简单的作者不希望开发者检查其浏览器中运行的应用/网站了。 相反,他们希望我们检查不同的浏览器功能,并决定基于什么做的。 如果是IE6,IE8,Firefox或不要紧, 一些新的浏览器 。 作为应用程序开发者,你应该知道不同特性的浏览器支持如何影响用户与应用程序的工作能力,你应该采取相应的行动。

$ .browser依赖于浏览器中使用嗅探用户代理字符串可能是不可靠的,特别是因为它很容易让用户欺骗用户代理他们的浏览器,而不是我会担心它布局的目的-如果他们改变了他们的用户代理那么这是他们的错,他们的IE6把自己表现IE7无法正确渲染页面。 ;)

您可以仍然使用$ .browser,尽管它已经过时或尝试编写你自己的东西。 也许有一个jQuery插件已经? 我知道,我最后一次检查IE6我使用的方法...



Answer 2:

我没有发现任何明确的方式来检测IE6使用jquery.support

不,当然不是 - 这是整点。

教条是检测特定功能的支持,并围绕他们缺乏编码,是保持比试图跟踪存在和它所支持的每个浏览器的跨浏览器兼容的更好的方法。

虽然你可以向后从jquery.support工作猜测浏览器正在运行,然后使用不同的代码,它依赖于一个完全不同的功能,这将是完全有害的。 你会采取假设浏览器“X”支持功能“Y”本已脆弱的做法,并使其更加脆弱,加入嗅探可以拿起错了浏览器功能无关的另一层。

因此,教条的答案是,永远不要检测IE6,或任何其他特定的浏览器。 使用功能嗅解决方案,如jquery.support直接看到哪些功能可以使用,但是不要以为有“Y”的存在或不存在意味着你可以或不可以使用相关联的不同功能“Z”用相同的浏览器“X”。 因为这将永远出问题赋予了新的或模糊的浏览器/版本你有没有遇到过。

而教条的答案是,的确,通常是正确的。 然而,在现实中有无法通过特征嗅探进行检测,需要具体的解决方法的一些浏览器的bug。 当然还有一个浏览器这几乎总是有效,是IE6。

目前还不清楚是否在这些情形之一,因为在你的问题没有细节,但是当你真的需要一个浏览器一个可怕的黑客攻击,约最好的解决办法仍然是有条件的意见 ,投进的JavaScript或HTML。



Answer 3:

布拉德·克勒有想法 。 使用如下的IE条件语句

<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --> 
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html lang="en" class="no-js"><!--<![endif]-->

然后用javascript和一点的jQuery您就可以做到这一点..

$(document).ready(function () { 
    if ($('html').is('.ie6')) {
       alert('You are running IE6!');
    } else if($('html').is('.ie7')) {
    alert("You are running IE7!");
    } else {
       // Browsers other than IE6 and 7.
    }
});

该编辑器拆我的代码第一节所以这里的链接到它- http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/



Answer 4:

我已经做了一些测试的东西有点脏了就在刚才,不想使用已弃用的.browser但没有阅读和理解。支持。

我最喜欢的,使用条件样式表样式IE6。 我已经简单地添加一个id =“IE6”来表示,然后检测与jQuery的ID。

jQuery.fn.exists = function(){return jQuery(this).length>0;}
          if ($('#IE6').exists()) {
           //do something
          }

这似乎工作得很好,我试图在那里发射的警报,只得到了它在IE6中,我试图验证页面,并将它传递的HTML5,我不知道是否有什么我做了,但一个深层次的问题似乎没那么远。



Answer 5:

你可以这样做:

    var ie6to8 = jQuery.support.leadingWhitespace;
    var ie7to8 = jQuery.support.objectAll;
    if((ie6to8 && !ie7to8) || (!ie6to8 && ie7to8)) { //simulating a XOR
       // is ie6
    }

该文件告诉jQuery.support.leadingWhitespace上的IE 6,7和8虚假它也说,objectAll是IE的7和8。我认为,这是对其他浏览器的真实,这些值做了XOR操作错误。 这样,当leadingWhitespace值为objectAll的,只发生在IE6不同的只会是真实的。

你可以看到更多在这里: http://docs.jquery.com/Utilities/jQuery.support

更新:在jQuery 1.3浏览器嗅探是不长的建议,但仍然可以做旧的方式(使用$ .browser.msie和.browser.version $)。 看它这里: http://docs.jquery.com/Release:jQuery_1.3



Answer 6:

我知道这不适合您的“要求”,但据我所知,没有单独使用特征检测的可靠方法。

这是唯一可靠的,我发现来检测IE6。 这是我在SimpleModal使用,它似乎运作良好:

var ie6 = $.browser.msie && parseInt($.browser.version) === 6 && typeof window['XMLHttpRequest'] !== "object";


文章来源: jQuery detect IE6 using jQuery.support NOT jQuery.browser