2012-08-01 77 views
0

我正在尝试为IE 8或更低版本的用户更改我的iFrame的SRC属性。对IE 8不起作用的条件注释

这里是我的代码:

<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(这是正确的)。

我的代码有什么问题?

谢谢!

回答

6

不能插入脚本标签内。它需要在外面。

<script> 
var i_am_old_ie = false; 
</script> 

<!--[if lte IE 8]> 

<script> 
i_am_old_ie = true; 
</script> 
<![endif]--> 
+0

完美,谢谢!现在正在工作。 – larin555 2012-08-01 21:06:01

0

条件HTML注释只能用于HTML。

JavaScript不是HTML。

这通常不是一个好主意,并配备检测reccomended,但如果使用jQuery你可以这样做:

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

正如其他人提到你不能使用<script>标签之间的HTML条件语句。

这应该不过的工作:

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

以上只会在IE8中运行以下

编辑:

一些很好的例子LINK

1

有不同的语法条件JavaScript内部的评论。 What does @cc_on mean in JavaScript?有详细信息。

Wikipedia's Conditional comment页面有一个使用它的版本切换示例。

<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>