2012-08-01 79 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>