HTML5渲染没有标题标签在IE(HTML5 not rendering header tags i

2019-07-19 22:40发布

所以我用所谓的盆景静态站点生成器,使用一些codependencies像车把,倾斜和液体模板。 现在下面我建立它在HTML5的最佳做法。 我已经在Chrome和Firefox和Opera广泛的测试格式。 保存最糟糕的去年IE。

首先那些谁去给明显的解决方案之前,我已经在头包括html5shiv,我已经在CSS设置:

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
  display: block;
}

我想有IE 8和9的支持真的我不在乎多的旧的。 现在头不渲染可言,看着IE9控制台时,我可以看到,没有什么即使被接通。 我认为这是becasue它试图从联机源拉SHIV文件,所以我下载了html5shiv.js文件,并在头部链接,并把它称为如下:

  <!--[if lte IE 9]>
    <script src="/js/html5shiv.js"></script>
  <![endif]-->

  <!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->

并没有什么还是那么只是作为一个测试,我在上面的链接移除9打破了if语句。 刷新页面时它现在显示与此它上面的报头块

<!--[if lt IE ]> <![endif]-->

如果我让if语句查找IE浏览器,而不是一个具体的版本,它dosent渲染,如果我指定的版本,它不渲染,如果我删除if语句,只是调用它不使头部html5shiv.js文件。 如果我打破if语句其唯一的呈现? 对不起,如果这是这是我失去了我的HTML5第一次尝试什么noobish问题?

编辑:

所以是的,你可以去看看该网站的点击这里 。 对不起,我伊恩计算器评论呈现的http://所以它的存在,它只是没有显示它的注释。

我试过了

 <!--[if IE ]> <![endif]-->  //all versions of IE
 <!--[if lt IE 9]> <![endif]-->  //all versions of IE before 9
 <!--[if lte IE 9 ]> <![endif]--> // version 9 of IE

没有正在..和我所有的HTML是相当两岸起来..这符合此前井是什么样子

<header>
  {% include "shared/nav" %}
</header>

我在上面提到的导航看起来像这样

<nav id="navigation">
  <div id="nav_div_home" class="nav_buttons"><a id="nav_home" class="left_nav" href="/">Home</a></div>
  <div id="nav_div_system" class="nav_buttons"><a id="nav_system" class="left_nav" href="/systems/">Systems</a></div>
  <div id="nav_div_studies" class="nav_buttons"><a id="nav_studies" class="left_nav" href="/studies/">Studies</a></div>
  <img id="nav_logo" src="/images/logo3.png" alt="Mpowered logo">
  <div id="nav_div_approach" class="nav_buttons"><a id="nav_approach" class="right_nav" href="/approach/">Approach</a></div>
  <div id="nav_div_about" class="nav_buttons"><a id="nav_about" class="right_nav" href="/about/">About</a></div>
  <div id="nav_div_contact" class="nav_buttons"><a id="nav_contact" class="right_nav" href="/contact/">Contact</a></div>
</nav>

然后,我就#navigation标签运行的唯一的CSS

#navigation {
 height: 150px;
 padding-top: 60px;
 margin: 0px auto;
 width: 960px;

}

但我不能看到如何将打破头标记?

Answer 1:

除了上面我的意见,你不需要为IE9的html5shiv,我敢肯定,你知道的。

机会是存在一些问题的HTML别处IE不尝试修复你的东西的方式其他浏览器做。

其原因<!--[if lt IE ]> <![endif]-->不工作是,你需要删除的LT,以便它只是读取<!--[if IE]> <![endif]-->

基于以上关于JS文件您的回复,我会尝试:

<!--[if lte IE 9]><script src="js/html5shiv.js"></script> <![endif]-->

<!--[if IE]><script src="html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

是错的。 你需要有http://在前面html5shiv

有问题的网站的链接将是理想的。

更新我看到了什么问题,现在,你错过了!DOCTYPE 加:

<!doctype html>

该文件的顶部,并会被罚款。

如果没有指定DOCTYPE是,IE总是求助于怪癖模式(你永远都不想!)

你也有多个<head>元素这是不对的。 和一切都需要被封闭在一个<html>元素。

其实有很多错误的标记,你甚至没有一个<body>元素!



Answer 2:

如果事实上,简单地创建内容,甚至没有将它添加到DOM将使IE(甚至6)承认它。 所以

<script type="text/javascript">
   document.createElement("'header'");
   document.createElement("'nav'");
   document.createElement("'article'");
   document.createElement("'section'");
   document.createElement("'footer'");
 </script>

将解决你的问题。 你可以把它降低

'article aside footer header nav section time'.replace(/\w+/g,function(n){document.createElement(n)})

这里找到: http://www.hagenburger.net/BLOG/Simple-HTML5-Fix-for-IE.html



文章来源: HTML5 not rendering header tags in IE