加载jQuery的条件注释替代方案

时间:2014-03-07 13:22:05

标签: javascript jquery internet-explorer

因为jQuery 2+不支持IE 8,所以我需要使用以前的版本:jQuery 1.9。

在使用IE>时使用IE< = 8和jQuery 2+时是否有一种方法可以包含jQuery 1.9 8。 我用条件评论试了一下:

<!--[if lt IE 9]><!--><script> .. googleapis jquery 1.9 .. </script><!--<![endif]-->
<!--[if gte IE 9]><!--><script> .. googleapis jquery 2+ .. </script><!--<![endif]-->

问题是它无法正常工作,我发现有些信息不再受支持了:http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

还有其他办法吗?

4 个答案:

答案 0 :(得分:6)

您希望IE8版本位于注释掉的块中,但非IE9版本不是:

<!--[if lt IE 9]> <script> .. googleapis jquery 1.9 .. </script> <![endif]-->
<![if !IE|gte IE 9]> <script> .. googleapis jquery 2+ .. </script> <![endif]>

Live Example with alerts

IE8识别条件评论,但其他浏览器不识别(包括较新的IE)。

你也可能希望在第二个中有!IE,只是为了完整性,如上所述。

答案 1 :(得分:1)

这将为Internet Explorer版本6-8提供不同版本的jQuery:

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--<![endif]-->

或稍微容易阅读(但功能相同):

<!--[if lt IE 9]>  
    <script src="jquery-1.9.0.js"></script>  
<![endif]-->  
<!--[if (gte IE 9) | (!IE)]><!-->  
    <script src="jquery-2.0.0.js"></script>  
<!--<![endif]--> 

答案 2 :(得分:0)

Bravo to T.J.克劳德(上图)为他的回答。这个问题困扰着我,我遇到了一些麻烦,因为IE8有时会加载两个JQuery文件,或者由于文档的加载方式,我编写的脚本不允许JQuery随后启动。除了上面的答案之外,我实际上不得不颠倒两个条件的顺序,以确保在IE8中没有加载多个JQuery副本。

<![if !IE|gte IE 9]> <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> <![endif]> <!--[if lt IE 9]> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <![endif]-->

答案 3 :(得分:-3)

您可以检查服务器代码上的UserAgentString,并根据它包含一个或另一个。 以下是Internet Explorer用户代理列表:http://www.useragentstring.com/pages/Internet%20Explorer/