所以我使用了一个名为Bonsai的静态站点生成器,它使用了一些相互依赖的东西,比如把手、倾斜和液体模板。现在,遵循最佳实践,我将在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;
}我希望有IE8和9的支持,真的,我不太关心老的。现在标头根本不会渲染,当我在IE9中查看控制台时,我可以看到甚至没有任何东西被放入其中。我认为这是因为它试图从在线资源中提取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,而不是一个特定的版本,它不会渲染,如果我指定了版本,它不会渲染,如果我删除if语句,只调用头部的html5shiv.js文件,它就不会渲染。如果我打破if语句,它只会被渲染??抱歉,如果这是一个下流的问题,这是我第一次尝试HTML5,我错过了什么??
编辑:
所以,是的,你可以去看看这个网站,它的here。对不起,Ian,我的stackoverflow评论呈现了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看起来像这样
<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>然后,我在#导航标记上运行的唯一CSS是
#navigation {
height: 150px;
padding-top: 60px;
margin: 0px auto;
width: 960px;
}但是我不明白这怎么会破坏头标记??
发布于 2013-02-15 17:39:04
除了我上面的评论之外,您不需要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前面。
一个链接到有问题的网站将是理想的。
UPDATE我现在知道怎么回事了,你缺少一个文档类型!添加:
<!doctype html>放到文件的顶部,这样就没问题了。
如果没有指定doctype,IE总是求助于Quirks模式(这是你永远不想要的!)
您还有多个<head>元素,这是错误的。并且所有内容都需要封装在一个<html>元素中。
实际上,标记有很多错误,您甚至没有<body>元素!
发布于 2013-05-22 16:39:02
事实上,简单地创建元素而不将其添加到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
https://stackoverflow.com/questions/14891543
复制相似问题