2

我想根據瀏覽器是否爲IE7更改我的JavaScript代碼行。這裏是任何其他瀏覽器的代碼:Javascript:根據IE7是否更改

function showHint(myId) 
{ 
    document.getElementById(myId).style.display = "inline-block"; 
} 

對於IE7,我希望display =「inline」。

我做了在條件編譯嘗試(this告訴我如何檢測瀏覽器),但沒有奏效:

function showHint(myId) 
     { 
      document.getElementById(myId).style.display = "inline-block"; 
      /*@cc_on 
       @if(navigator.appVersion.indexOf(「MSIE 7.」)!=-1) 
       { 
        document.getElementById(myId).style.display = "inline"; 
       } 
      @*/ 
     } 

任何幫助,不勝感激!

編輯:我沒有使用JQuery。

+0

爲什麼你需要這個?用戶代理嗅探是一種不好的方法,如果你真的是**功能檢測** http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting – 2010-05-26 19:54:24

+0

是你的問題「爲什麼需要顯示」inline「而不是」inline-block「?因爲在IE7中,」inline-block「顯示元素下方的一行,而」inline「不顯示。 – dmr 2010-05-26 19:57:10

+0

什麼是文檔類型?頁面在標準模式或quirksmode中呈現?您是否在http://validator.w3.org/中驗證了它? – 2010-05-26 20:02:16

回答

7

設置一個全局通過IE的 conditional comment解析的行爲決定:

<!--[if IE 7]><script> var isIE7 = true; </script><![endif]--> 
+0

非常感謝! – dmr 2010-05-26 20:05:16

0

有一個JQuery插件檢測瀏覽器版本。我不知道確切的鏈接...

2

您需要檢查navigator.userAgent

如果你使用jQuery,你可以簡單地寫

if ($.browser.msie && $.browser.version === 7) 
1

我想你可以使用正則表達式來確定MSIE 7 :

if(/MSIE 7/.test(navigator.appVersion)) { /* msie7 related code */ } 
0

條件編譯應該工作。看起來你的錯誤是你使用花哨的引號來分隔一個字符串(「MSIE 7.」),或者你試圖將顯示分配給IE未知的東西,並且它對它有一個適應並拋出一個錯誤。這裏是一個更簡潔的函數版本,它不會重複自身並解決此問題:

function showHint(myId) 
{ 
    document.getElementById(myId).style.display = "inline" //@cc_on; 
    + "-block"; 
}