HTML5shiv仅在HEAD部分有效?

时间:2012-03-06 04:44:29

标签: javascript html html5

为了尽可能快地保存我的网站,我更喜欢在文档末尾加载.js脚本,就在关闭正文标记之前,为HEAD部分保留css。但是,我发现下面的html shiv代码显然只在HEAD部分实例化时才有效。

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

有人知道解决方法吗?

2 个答案:

答案 0 :(得分:19)

Google代码是CDN。不要链接主干中的文件。

查看响应标题:

Google code is NOT a CDN

缓存在 3分钟后过期......这与我们想要的CDN完全相反。

请停止这样做。

  

注意

     

正如JoãoCunha评论的那样,你可以在cdnjs.com上找到真正的CDN链接:html5shiv。 (respond.js也可以在那里找到)

样品:

<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>
<![endif]-->

答案 1 :(得分:14)

HTML5 shiv的工作方式需要您将其放在<head>元素中。事实上,它在project page

中这样说
  

要使用此脚本,必须将其包含在<body>元素之前(即<head>),但如果它出现在CSS之前或之后无关紧要 - 但为了提高性能,首先包含CSS然后这个脚本会更有意义。

这样IE就可以在开始构建文档主体之前识别HTML5元素。

没有解决方法。

这里的教训不是要将所有脚本放在页面末尾。 CDN在提供服务方面非常快,所以你不需要移动这个特定的脚本。 1


1 但正如其他人所说,由于Google Code实际上不是CDN,你应该选择另一个来源。