IE 8的条件注释不起作用

Conditional comment for IE 8 not working

本文关键字:注释 不起作用 条件 IE      更新时间:2024-06-16

我正在尝试为IE 8或更低版本的用户更改iFrame的SRC属性。

这是我的代码:

  <script>
var i_am_old_ie = false;
<!--[if lte IE 8]>
i_am_old_ie = true;
<![endif]-->
</script>
    <script type="text/javascript">
    $(document).ready(function() {
if(i_am_old_ie) {
   $("#shop").attr("src","shopping_cart/browser_support.html"); 
} else {
    $("#shop").attr("src","shopping_cart/index.html"); 
}      
});
</script>

它检测到它是IE…,但仍然将所有IE用户发送到shopping_cart/browser_support.html。即使我使用IE 9,它也会把我送到那里。7岁或8岁也是如此。

但它将所有其他未使用IE的用户发送到shopping_cart/index.html(这是正确的)。

我的代码出了什么问题?

谢谢!

您不能在脚本标记中插入。它需要在外面。

<script>
var i_am_old_ie = false;
</script>
<!--[if lte IE 8]>
<script>
i_am_old_ie = true;
</script>
<![endif]-->

正如前面提到的,您不能在<script>标记之间使用HTML条件语句。

然而,这应该有效:

if (document.all && !document.getElementsByClassName) {
    i_am_old_ie = true;
}

以上仅在IE8或低于的版本中运行

编辑:

一些不错的例子链接

JavaScript中的条件注释有不同的语法。@cc_on在JavaScript中是什么意思?有详细信息。

维基百科的条件性评论页面有一个使用它进行版本切换的例子

<script>
/*@cc_on
  @if (@_jscript_version == 10)
    document.write("You are using IE10");
  @elif (@_jscript_version == 9)
    document.write("You are using IE9");
  @elif (@_jscript_version == 5.8)
    document.write("You are using IE8");
  @elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
    document.write("You are using IE7");
  @elif (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
    document.write("You are using IE6");
  @elif (@_jscript_version == 5.5)
    document.write("You are using IE5.5");
  @else
    document.write("You are using IE5 or older");
  @end
@*/
</script>

条件HTML注释仅适用于HTML。

JavaScript不是HTML。

这通常不是一个好主意,特征检测是值得考虑的,但如果使用jQuery,你可以做到:

var i_am_old_ie = $.browser.msie && ($.browser.version <= 8);