针对IE 8及以下版本进行优化?

5

我有一段脚本在IE 9+和其他浏览器中运行良好。但在IE 8或更低版本中会出现视觉错误。为了解决这个问题,我需要在页面上放置两个脚本。一个用于IE 9+、Firefox、Chrome、Safari,另一个用于IE 8及以下版本。我可以通过改变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及以下版本吗?


2
请查看我在这个问题上的回答:http://stackoverflow.com/questions/10383220/creating-layout-for-a-specific-browser/10383277#10383277 - Dan Barzilay
非IE浏览器的条件注释是完全无用的,因为只有IE可以解释这些内容 ;) 此外,您的注释格式不正确。<!--[if lt IE 9]>...<![endif]--> - Andreas
@Andreas - 那是一个打字错误,我已经修复了,谢谢你发现了这个问题。至于非IE浏览器的条件注释,它并不适用于那些浏览器。根据我的理解,<!--[if !IE]><!--> <!--<![endif]-->的作用是告诉IE:“这段代码是给真正的浏览器用的,而不是给我(IE)用的。” - L84
1个回答

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) {
  ...
}

虽然如果您使用的是IE8,您需要这个https://dev59.com/1Ws05IYBdhLWcg3wJ-uQ - patrickzdb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接