【问题标题】:Are <script> tags outside <head> and <body> permitted in HTML?HTML 中是否允许 <head> 和 <body> 之外的 <script> 标签?
【发布时间】:2014-06-16 10:06:34
【问题描述】:

基于这篇博文 Optimizing the asynchronous Google Analytics snippet 和 cmets,我提出了这个优化的 Google Universal Analytics sn-p,它更短、运行更快(尽管稍微有点)并打破了 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');

但是,当上面的 sn-p 放置在 &lt;head&gt; 中时,它会将 Universal Analytics 脚本作为子代插入,而不是 &lt;head&gt;,不是 &lt;body&gt;,而是 &lt;html&gt;,就在 @987654330 之间@ 和&lt;body&gt;

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

HTML 规范中是否有任何地方描述了浏览器应如何对位于 &lt;head&gt;&lt;body&gt; 之外的标签做出反应?

* Windows XP 上未打补丁的普通 IE8 将像 IE6 和 IE7 一样中止页面加载并发出 HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917) 错误。安装累积安全更新,从KB980182 2010年4月首次发布,并在后续的更新(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, 修复问题。

9)

【问题讨论】:

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


【解决方案1】:

是的,最好在底部有Javascript脚本标签

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

参考yahoo developers

【讨论】:

  • 但是链接的页面似乎没有说明在结束&lt;/head&gt;和开始&lt;body&gt;之间放置脚本标签?
  • 就是这样,不应该放在和之间,应该放在和
【解决方案2】:

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

我不确定它是否有效,你必须检查规范,或者通过验证器运行它......但它几乎是 sop

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 2015-01-07
    • 2016-11-19
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多