根据此博文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>
之间。
虽然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),解决了这个问题。
答案 0 :(得分:3)
答案 1 :(得分:0)
这被认为是wpo的最佳实践,因为在触发脚本元素之前,主体将呈现。
我不确定它是否有效,你必须检查规格,或通过验证器运行......但它非常复杂