HTML中是否允许<head>和<body>之外的<script>标签?</script>

时间:2014-04-30 07:27:56

标签: javascript html internet-explorer dom google-analytics

根据此博文Optimizing the asynchronous Google Analytics snippet和评论,我提出了这个优化的Google Universal Analytics代码段,该代码段更短,运行速度更快(尽管略有增加)并打破了IE6 / IE7 / oldIE8 *兼容性。

+function(G,o,O,g){G.GoogleAnalyticsObject=O;G[O]||(G[O]=function(){(G[O].q=G[O].q||[]).push(arguments)});G[O].l=+new Date;g=o.createElement('script');g.src='//www.google-analytics.com/analytics.js';o.documentElement.appendChild(g)}(this,document,'ga');
ga('create', 'UA-XXXX-Y', 'auto');
ga('send', 'pageview');

但是,当上面的代码段放在<head>中时,它会将Universal Analytics脚本作为<head>而不是<body>而不是<html></head>的子项插入},在<body><head>之间。

script between closing head tag and opening body tag

虽然IE8 +和现代浏览器似乎没有问题,但我仍然担心它可能会破坏旧的移动浏览器或某些其他模糊和非IE浏览器。

HTML规范中是否有任何内容描述浏览器应如何对位于<body>*之外的标记作出反应?

HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917) Windows XP上未修补的vanilla IE8将像IE6和IE7一样中止页面加载并发出{{1}}错误。安装累积安全更新后,从2010年4月首次发布的KB980182开始,并包含在后续更新中(KB982381,KB2183461,KB2360131,KB2416400,KB2482017,KB2497640,KB2530548,KB2559049,KB2586448,KB2618444,KB2647516,KB2675157,KB2699988,KB2722913,KB2744842 ,KB2761465,KB2792100,KB2809289,KB2817183,KB2829530,KB2838727,KB2846071,KB2862772,KB2870699,KB2879017,KB2888505,KB2898785,KB2909921),解决了这个问题。

2 个答案:

答案 0 :(得分:3)

,最好在底部添加Javascript脚本标记

  • 因为这些脚本阻止了并行下载。
  • 下载脚本时,浏览器不会启动任何其他下载。
  • 有助于加快页面加载

参考yahoo developers

答案 1 :(得分:0)

这被认为是wpo的最佳实践,因为在触发脚本元素之前,主体将呈现。

我不确定它是否有效,你必须检查规格,或通过验证器运行......但它非常复杂