• 售前

  • 售后

热门帖子
入门百科

如何让IE9以下版本(ie6/7/8)认识html5元素

[复制链接]
123457287 显示全部楼层 发表于 2021-10-25 20:10:09 |阅读模式 打印 上一主题 下一主题
每个欣赏器都有一份清单枚举自己所支持的HTML元素。不在清单上的元素都将被视为未知元素。欣赏器不会给未知元素设定任何样式(不同欣赏器对元素会有不同的默认样式)。在IE9之前的版本中,也不能对未知元素设定样式。未知元素的DOM也表现不精确,IE会在DOM中插入一个没有子元素的空节点。所有你原本以为将会成为这个未知元素的子元素的元素会成为其兄弟节点。
针对这个问题有一个弥补方案,在使用里如article标签之前先用js创建一个虚伪的article元素,IE就会辨认这个元素了,而支持用css设定样式。这个虚伪元素乃至都不需要插入到DOM中。
请看如下的例子

复制代码代码如下:
< !DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>unknown elements</title>
<style>
  article{display:block;border:1px solid red}
</style>
</meta></head>
<body>
<article>
  <h1>welcome to feimos's blog</h1>
  <p>This is your <span>first time to visit this webSite.</span></p>
</article>
</body>
</html>

IE6不会辨认article,以是也不会有赤色边框。

但是如果我们在head中加入一句js,情况立马就不一样了。

复制代码代码如下:
<script type="text/javascript">
  document.createElement("article");
</script>

IE6假装它熟悉这个元素,精确表现告终果。

我们可以为所有新的HTML5元素都一次性创建一份虚伪副本,以后就无需担心那些不能精良支持HTML5的欣赏器了。Remy Sharp的HTML5 enabling script就是资助我们做这些变乱的,该脚本的基本想法如下:
复制代码代码如下:
<!--[if lt IE 9]>
<script type="text/javascript">
  var e=("abbr,article,aside,audio,canvas,datalist,details,"+
  "figure,footer,header,hgroup,mark,menu,meter,nav,output,"+
  "progress,section,time,video").split(',');
  for(var i=0;i<e .length;i++){
    document.createElement(e);
  }
</script>
< ![endif]-->

起首使用条件表明判定是不是IE9之前版本,如果是就执行js。先把所有新标签写入e数组中,然后遍历整个数组,并创建副本。
该脚本已经托管在Google Project Hosting上,你可以直接外链这个脚本:

复制代码代码如下:
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
< ![endif]-->

另外,这段脚本需要放在页面起始的部分,最好是head中,不要放在底部。如许IE在剖析页面标签之前就会先运行这段代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作