无法解释此代码段中的IE条件

时间:2013-10-03 19:13:17

标签: javascript jquery html internet-explorer google-chrome

有人可以帮我看看吗?

    <!--[if gt IE 8]><!-->
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <!--<![endif]-->

    <!--[if lte IE 8]>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <![endif]-->

据我所知,如果当前浏览器大于8,我们最终使用1.9.1,如果当前浏览器小于或等于8,我们最终得到1.7.2

我在这里有几个问题;

首先,如果浏览器甚至不是IE?例如Chrome。 上面的头代码如何包含JQuery。显然确实如此,但看不出怎么样。条件仅针对IE。不是吗?

其次,我对snytax感到困惑; <!--[if gt IE 8]><!-->部分与<!--[if lte IE 8]>部分不同。前者的额外<!-->让我困惑。

这是我从中获取片段的地方; http://bombdiggitydesign.com/crisp-2/Crisp-cool/index.html

它以某种方式为我加载JQuery(我正在使用Chrome)。 当我检查viewsource:时,我看到了这个

<!--[if gt IE 8]><!-->
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="assets/js/jquery-1.9.1.min.js"><\/script>')</script>
        <!--<![endif]-->
        <!--[if lte IE 8]>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <![endif]-->

并且在此视图中,只有http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js可在Chrome视图中点击。因此,chrome以某种方式使其通过<!--[if gt IE 8]><!-->条件。

显然,它有效,但我对如何感到困惑。

4 个答案:

答案 0 :(得分:2)

对于你的第一个问题,这是IE conditional comments的专长。

对于你的第二个问题,

<!--[if gt IE 8]><!--> //COMMENTS ENDS
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"/>    
<!--<![endif]--> //COMMENTS ENDS

这不仅仅是为了方便而进行评论(准确地说是可读性)。 但jQuery 1.9.1适用于所有浏览器

然而, jQuery 1.9.1 将被jQuery 1.7.2覆盖,仅在IE&lt; = 7个浏览器中。

仅供参考:在Internet Explorer 10中,当页面处于标准模式(文档模式10)时,不支持HTML条件注释

希望你明白。

答案 1 :(得分:1)

那些条件错了,这就是原因。到这里看看它们应该如何构建:http://www.quirksmode.org/css/condcom.html

答案 2 :(得分:1)

您使用了错误的“IE Hacks”,因此您的代码无效。 这篇文章将帮助您:

To Article

答案 3 :(得分:1)

条件注释是ms专有标记...所以只有三叉戟(即)才会读取条件注释....并且只有ie10 ...尽管你仍然可以使用条件编译。

关于其他引擎在遇到它们时如何/有什么做的确切...你说铬看到它们......我想这是有道理的...只要没有人渲染/做任何事情它,除了您使用它的目标浏览器。

你的条件陈述无效,正如其他两个男士所指出的那样。如果你更正了语法,它们就可以正常工作。