有没有办法添加一个仅适用于兼容模式下的 IE8 的 CSS,但如果 IE7 或 IE8 或(显然是任何其他浏览器)则不会?
我的 CSS 很简单
h1 {
font-size:14px;
}
但这必须 font-size 只能在 IE8 上工作(兼容模式)
注意:我知道如何编写一个条件语句来识别 IE8……但我不知道如何为 IE8 兼容模式执行此操作。
有没有办法添加一个仅适用于兼容模式下的 IE8 的 CSS,但如果 IE7 或 IE8 或(显然是任何其他浏览器)则不会?
我的 CSS 很简单
h1 {
font-size:14px;
}
但这必须 font-size 只能在 IE8 上工作(兼容模式)
注意:我知道如何编写一个条件语句来识别 IE8……但我不知道如何为 IE8 兼容模式执行此操作。
IE8 的 CSS hack,如下所示:
h1{font-size:14px\0;}
不幸的是,没有办法仅适用于 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 吗?在 IE7 中也应该需要您正在执行的任何可以修复 IE8 中的问题兼容模式的 hack。
您应该在代码中的 html 标记之前添加以下代码:
<!--if IE 8>
<html class="IE8">
<[endif]-->
<html>
...
</html>
在 CSS 文件中,执行以下操作:
.IE8 h1{
font-size:14px;
}
这仅适用于 IE8。
使用 css 破解:
body{
color:red; /*every browser*/
color:blue\9; /*IE8 or below*/
}
兼容模式除非有修改的 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>