一个问题,老师抛给我们的,就是:如何让IE8-兼容这些标签?(需要设计JS中的DOM)
虽然今天刚讲的内容,但是,还是需要去了解下。
复制代码代码如下:
<span style="font-size:14px;color:#FF6666;"> <!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5新增元素在旧浏览器的兼容-HTML5自由者</title>
</head>
<body>
<header>顶部区域</header>
<nav>导航区域</nav>
<article>文章区域</article>
<footer>底部区域</footer>
</body>
</html></span>
在支持HTML5标签的浏览器显示为:
|------------------------------火狐浏览器--------------------------------------------|
|顶部区域 |
|导航区域 |
|文章区域 |
| |
|-----------------------------------------------------------------------------------------|
而在旧版的浏览器显示样式为:
------------------------------IE6浏览器--------------------------------------------
------------------------------IE8浏览器--------------------------------------------
都是同样的效果,没估计错的话旧版浏览器都是不识别这些新增的标签所以都是用行内元素来处理解决的,所以,有一个解决办法的突破口就是让它变成块状元素就不会处于同一行了,这样在新旧浏览器都是可以显示同样的效果,再者就是让浏览器识别标签,需要新增标签 具体解决办法是:
IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,代码如下:
document.createElement(‘新标签’); / /新增创建新标签
JS代码如下:
复制代码代码如下:
<script>
document.createElement('header');
document.createElement('nav');
document.createElement('article');
document.createElement('footer');
</script>
或者是直接循环方式创建标签:
复制代码代码如下:
var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(', ');
var i= e.length;
while (i--){
document.createElement(e[i])
}
CSS样式设置默认样式:
复制代码代码如下:
<style>
article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary{
display: block;
}
</style>
再者还有一种办法就是用框架的方法,用到条件注释加JS代码实现
复制代码代码如下:
<span style="font-size:14px;color:#FF6666;"><!--[if lt IE 9]>
<script> src="/UploadFiles/2021-03-30/html5.js"><![endif]--></span>
直接加入这一句代码就可实现兼容问题,关于条件注意中的
<!--if lt IE9>
是判断是否小于IE9以下浏览器,如果是就执行这段JS代码 ,如果不是,就忽略掉。至于JS中的链接直接打开进去看看就知道了,也是一大段的代码。