针对IE 8及以下版本?

时间:2012-08-19 08:29:48

标签: javascript internet-explorer internet-explorer-8

我有一个在IE 9+和所有其他浏览器中运行良好的脚本。但是在IE 8或更低版本中存在视觉错误。我可以通过更改IE 8及更低版本的一些动画效果来修复此视觉错误。要做到这一点,我需要在我的页面上有两个脚本。一个用于IE 9 +,Firefox,Chrome,Safari,另一个用于IE 8及更低版本。

以下是我的尝试:

// First the Script that runs for non-IE browsers. 
<!--[if !IE]>
<script type="text/javascript">
// Script that runs
</script>
<![endif]-->

// Now for the Script for IE 8
<!--[if lt IE 9]>
<script type="text/javascript">
// Script that runs
</script>
<![endif]-->

第一个问题,主要问题是在尝试时它似乎不起作用。 IE开始表现得很疯狂,脚本根本不起作用。如果我删除第一个脚本并离开第二个脚本它没有问题。似乎<!--[if !IE]><!-->无法正常工作。

第二个问题:使用<!--[if !IE]><!-->我可以只定位IE 8及以下吗?

1 个答案:

答案 0 :(得分:5)

尝试HTML5 Boilerplate方式。然后在JS和CSS中按类定位IE版本。

使用以下内容替换您的开场<html>标记。根据您的需求调整:

<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

在JavaScript中:

var isIE8 = document.getElementsByClassName('lt-ie9').length;
var isIE7 = document.getElementsByClassName('lt-ie8').length;

if (isIE8) {
  ...
}

if (isIE7) {
  ...
}