条件注释 - 包含基于IE版本的javascript

时间:2013-08-20 21:55:33

标签: javascript internet-explorer-8 dotnetnuke conditional-statements

我正在运行一个基于ASP.NET框架构建的DotNetNuke CMS网站。

我的页面皮肤中有一些脚本,我不想在IE8及以下版本上运行。我一直在谷歌,我发现这个IE条件声明。

<![if gt IE 8]>

根据http://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx,此snippit应包含任何大于IE8的浏览器的中间代码。我尝试以下列方式使用此条件语句:

<![if gt IE 8]>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f21643b21c50811"></script>
<![endif]-->

但是,这似乎不起作用,并且脚本不能在任何浏览器上运行。有没有更好的方法来实现这一目标?我的代码中是否存在语法错误?

感谢您的帮助! 亚历

3 个答案:

答案 0 :(得分:3)

条件评论应为:

<!--[if IE 8]>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f21643b21c50811"></script>
<![endif]-->

在感叹号之后用两个短划线。

它被称为“条件评论”,因为它实际上是一个HTML评论:

<!-- this is a comment -->.

Internet Explorer(直到IE9)发出异常并使用特殊格式

解析注释
<!--[ if ... ]
...
<![endif]-->

作为指令,但对于任何其他浏览器只是一个注释,它将被忽略。

答案 1 :(得分:1)

只是想添加一些更新的信息,从IE10及更高版本开始,不支持条件注释,因此使用类似的条件,

<!--[if gt IE 8]>
<script type="text/javascript"   src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f21643b21c50811"></script>
<![endif]-->

包含一个 gt 运算符(每个问题帖子),意味着该脚本实际上只会显示在IE9中,有效地使其与写入功能相同:

<!--[if IE 9]>
<script type="text/javascript"   src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f21643b21c50811"></script>
<![endif]-->

条件支持文章的结尾:https://msdn.microsoft.com/en-us/library/ie/hh801214%28v=vs.85%29.aspx

条件评论资源:https://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx

答案 2 :(得分:0)

只需添加信息即可为IE10 +和IE9加载不同的脚本 - 。

    <!--[if lt IE 10]>
         <script src="scripts/jquery-1.x.x.min.js" type="text/javascript"></script>
    <!--<![endif]-->
    <!--[if gte IE 10]><!-->
    <script src="jquery-2.x.x.min.js" type="text/javascript"></script>
    <!--<![endif]-->

请注意第4行的代码,这会通知IE10 +第5行的脚本标记不是注释

上述条件语句将在IE9或更低版本中加载jquery-1.x.x并为IE10 +版本加载jquery-2.x.x。