2012-10-26 110 views
0

有沒有辦法添加一個只能在兼容模式下工作的IE8的css,但是如果IE7或者IE8或者(顯然是任何其他瀏覽器)都不會這樣?CSS僅適用於兼容模式下的IE8(不支持IE8否IE7)?

我的CSS是微不足道

h1 { 
    font-size:14px; 
} 

但必須FONT-SIZE只能在IE8(兼容模式)

注意工作: 我知道如何編寫條件語句來發現IE8 ..但我不知道如何爲IE8兼容模式做到這一點。

回答

1

不幸的是沒有辦法適用於只是IE8兼容模式。但是,IE8CM將顯示完全相同的IE7,因爲它是一個IE7模擬器。你可以使用類似下面的代碼,但它也適用於IE7:

<!--IE9 compatibility mode & IE8:--> 
    <!--[if IE 8]> 
    <p>Welcome to Internet Explorer 8.</p> 
    <![endif]--> 

<!--IE8 compatibility mode & IE7:--> 
    <!--[if IE 7]> 
    <p>Welcome to Internet Explorer 7.</p> 
    <![endif]--> 

有什麼原因,它也無法適用於IE7?任何黑客,你這樣做將解決在IE8中的問題兼容模式,也應該在IE7中需要。

0

你應該低於HTML標記之前在代碼中添加代碼:

<!--if IE 8> 
<html class="IE8"> 
<[endif]--> 
<html> 
... 
</html> 

和CSS文件,這樣做:

.IE8 h1{ 
font-size:14px; 
} 

這將只工作了IE8。

+0

的問題是關於IE 8 *兼容模式*(又名Quirks模式)。 –

+0

@ mr.soroush我只關心IE8兼容模式!!! – Zo72

2

CSS破解IE8的,就像這樣:

h1{font-size:14px\0;} 
+0

你怎麼知道這會工作? – Zo72

+0

我在這裏看到過...這樣說也許對Opera還有影響,但是不確定。你可以試試.http://www.cnblogs.com/WuQiang/archive/2011/08/23/2150240.html – Aisin

+0

它也包含在iE9中的這種風格,所以這種黑客不適用於IE8 –

0

使用CSS破解:

 body{ 
     color:red;   /*every browser*/ 
     color:blue\9;  /*IE8 or below*/ 
    } 
0

兼容模式,除非有一個改性的DocType呈現爲IE 7或更小,所以如果是在兼容模式,將經常也呈現IE 7

但是,您仍然可以這樣做:如果您檢查用戶代理字符串,則可以通過這種方式進行區分。 IE 8和更新版本在用戶代理字符串中包含「Trident」這個詞,所以如果它呈現爲IE 7或更低版​​本,但Trident一詞在uagent中顯示,則它必須處於兼容模式。

雖然大多數人不會覺得這是必要的,但我確實有理由這樣做。在我之前的一個項目中,需要告訴人們使用兼容模式選項,直到我們能夠修改我們的應用程序以處理較新的瀏覽器。不是每個人都閱讀說明,所以彈出消息往往是告訴人們該做什麼的最佳方式。

劇本我寫的這個修改後的版本,並放置在文件頭的伎倆:

<script language="javascript" type="text/javascript"> 
if (!!navigator.userAgent.match(/MSIE/i)) { 
    ie__mode=' not_ie_compatibility_mode'; 
(!!navigator.userAgent.match(/Trident/i)&&document.documentMode<8)?ie__mode=' ie_compatibility_mode':''; } 
</script> 

那麼接下來的JavaScript變量ie_mode將被設置爲:「ie_compatibility_mode」或「not_ie_compatibility_mode」

如果您要添加document.documentElement。的className + = ie__mode;該腳本以便在CSS類添加到文檔本身,像這樣:

<script language="javascript" type="text/javascript"> 
if (!!navigator.userAgent.match(/MSIE/i)) { 
    ie__mode=' not_ie_compatibility_mode'; 
(!!navigator.userAgent.match(/Trident/i)&&document.documentMode<8)?ie__mode=' ie_compatibility_mode':''; 
document.documentElement.className+=ie__mode; } 
</script> 

那麼你就可以使用CSS文件中的任一模式。例如風格:

<style type="text/css"> 

    html { color:#000000; } 

    /* default settings: start with all items 'off' */ 

    .hide_element { display:none; visibility:hidden; } 

    .ie_compatibility_mode .display_compatibility_mode { visibility:visible; display:block; color:#FF9900; } 

    .not_ie_compatibility_mode .display_not_compatibility_mode { visibility:visible; display:block; color:#666666; } 

</style> 

,並在身體然後你可以這樣做:

<body> 

If you are using internet explorer there will be more here: 

<br><br> 

<script language="javascript" type="text/javascript"> 
    if (document.documentMode) document.write("which ie mode: "+document.documentElement.className); 
</script> 

<br><br> 

<div class="hide_element display_compatibility_mode"> 
    This is in compatibility mode. [this should show up in orange] 
</div> 

<div class="hide_element display_not_compatibility_mode"> 
    This is not in compatibility mode. [this should be show up in blue] 
</div> 

</body> 

這裏是所有部件的完整的工作頁面放在一起:

<!DOCTYPE html> 
<html> 
<head> 
<title>HTML Class Setting/Detect Compatibility Mode Example - Jeff Clayton</title> 

<script language="javascript" type="text/javascript"> 
if (!!navigator.userAgent.match(/MSIE/i)) { 
    ie__mode=' not_ie_compatibility_mode'; 
(!!navigator.userAgent.match(/Trident/i)&&document.documentMode<8)?ie__mode=' ie_compatibility_mode':''; 
document.documentElement.className+=ie__mode; } 
</script> 

<style type="text/css"> 

/* default settings: start with all items 'off' */ 

.hide_element { display:none; visibility:hidden; } 

.ie_compatibility_mode .display_compatibility_mode { visibility:visible; display:block; color:#FF9900; } 

.not_ie_compatibility_mode .display_not_compatibility_mode { visibility:visible; display:block; color:#0000FF; } 

</style> 

</head> 

<body> 

If you are using internet explorer there will be more here: 

<br><br> 

<script language="javascript" type="text/javascript"> 
    if (document.documentMode) document.write("which ie mode: "+document.documentElement.className); 
</script> 

<br><br> 

<div class="hide_element display_compatibility_mode"> 
    This is in compatibility mode. [this should show up in orange] 
</div> 

<div class="hide_element display_not_compatibility_mode"> 
    This is not in compatibility mode. [this should show up in blue] 
</div> 

</body> 
</html>