0

我想检查浏览器是 IE 还是不使用 jquery。如果浏览器是 IE 更改一些类。我尝试了类似的东西

$(document).ready(function () {
    <![if !IE]>
   ---------------
    <![endif]>
    });

但它没有满足我的需求。有人帮忙吗?

4

8 回答 8

3

您没有充分说明您的实际问题是什么,但我猜您正在尝试处理(某些版本的)IE 中缺少的功能。

我要说的主要一点是,您解决问题的方法从根本上是错误的。

首先,IE(与任何其他浏览器一样)的功能在不同版本之间差异很大。IE10 实际上相当不错,并且支持您可能想要使用的大多数现代浏览器功能。IE11 将在不久的将来发布,并提供更好的支持。您可能在使用 IE8 或更早版本时遇到问题,但大多数编写良好的代码应该可以在 IE10 上正常使用而不会出现任何问题。因此,在不检查版本的情况下对 IE 进行全面检查几乎可以肯定是个坏主意。

其次,即使您要进行 IE 检查,<![if !IE]>也是错误的,因为 IE 自 IE10 以来已不再支持此功能。他们放弃它的原因是专门阻止浏览器检测的不良做法。

检测 IE 有多种其他方法,但出于同样的原因,它们都是不好的做法:检测浏览器并让您的网站针对不同的浏览器以不同的方式工作会带来很多问题。这是一个很大的话题,所以我建议在这里阅读更多信息。

最后,该怎么做呢?答案是特征检测

简而言之:

  1. 找出您需要的旧浏览器不支持的功能
  2. 编写一个脚本来检测用户的浏览器是否支持该功能。
  3. 编写代码以应对该检查的否定答案。
    (这可能包括将缺少的功能添加到浏览器的“polyfill”脚本,或不支持的浏览器的某种替代功能)

这种技术允许您以一种处理所有浏览器的方式编写您的站点,而不管它们具有什么功能。

您应该尝试进行特征检测的一个好的库是Modernizr

ps - 如果您在 IE 中遇到特定问题,您应该提出一个单独的问题;这里的人们很有可能会帮助您使其正常工作,并且无论如何都不需要整个“我如何检测 IE”问题。

于 2013-06-03T10:35:16.517 回答
1

$.browser is deprecated and shouldn't be used.

You can use feature detection instead to check for specific things you need to render your page. See the jQuery docs here: http://api.jquery.com/jQuery.support/

于 2013-06-03T10:02:22.517 回答
1

有一篇关于此的博客文章告诉您不应该使用 userAgent。非常有趣的阅读:

http://tanalin.com/en/articles/ie-version-js/

一些代码片段:

if (document.all && !document.querySelector) {
    alert('IE7 or lower');
}
if (document.all && document.querySelector && !document.addEventListener) {
    alert('IE8');
}
if (document.all && document.documentMode && 8 === document.documentMode) {
    alert('IE8 or IE9+ in IE8 compatibility mode');
}
于 2013-06-03T10:11:16.843 回答
0

you can try this, without the need of jQuery, but with conditional comments:

<!doctype html>
<!--[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]-->
于 2013-06-03T10:01:40.033 回答
0

jQuery.browser在 jQuery 1.9 中已弃用。

您应该尝试 jQuery Migrate - https://github.com/jquery/jquery-migrate

类似的问题 -浏览器检测 jQuery 1.9 的最简单/最轻的替换?

于 2013-06-03T10:04:24.383 回答
0

我想您仍然可以使用条件注释来检查浏览器是否为 IE...请通过此处发布的博客

 <!--[if IE]> 
     This content is ignored in IE10 and other browsers.    
     In older versions of IE it renders as part of the page.    
<![endif]-->

====================================================================
    <!--[if lt IE 9]>
       <script src="jquery-1.9.1.js"></script>
    <![endif]-->
       //There is difference in the commenting style which jQuery team has used!
    <!--[if gte IE 9]><!-->
        <script src="jquery-2.0.0b2.js"></script>
    <!--<![endif]-->
于 2013-06-03T11:48:26.653 回答
0

试试这个来检查浏览器。

 if ( $.browser.msie ) {
     alert( $.browser.version );
  }

$.browser属性提供有关正在访问页面的 Web 浏览器的信息,由浏览器本身报告。它包含四个最流行的浏览器类(Internet Explorer、Mozilla、Webkit 和 Opera)中的每一个的标志以及版本信息。

可用的标志是:

  • webkit(从 jQuery 1.4 开始)
  • 野生动物园(已弃用)
  • 歌剧
  • 米西
  • Mozilla

参考

于 2013-06-03T10:09:54.887 回答
0

我的错,我没有检查,但从jQuery.browserjQuery 版本 1.9 开始已被弃用。

相反,使用 jQuery 的正确做法将涉及使用jQuery.support()进行特征检测

描述:代表不同浏览器功能或错误存在的属性集合。主要供 jQuery 内部使用;当内部不再需要特定属性以提高页面启动性能时,可能会删除它们。

于 2013-06-03T10:00:53.490 回答