javascript - HTML 中是否允许 <head> 和 <body> 之外的 &lt;script&gt; 标记?

标签 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> .

script between closing head tag and opening body tag

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

HTML 规范中是否有任何地方描述了浏览器应如何对放置在 <head> 之外的标签使用react和<body>

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

最佳答案

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

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

引用yahoo developers

关于javascript - HTML 中是否允许 <head> 和 <body> 之外的 &lt;script&gt; 标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382115/

相关文章:

css - 媒体查询如何计入 IE 的 CSS 选择器限制?

javascript - 一旦图像加载失败,如何让浏览器重试?

javascript - 文本区域字段中会发生什么

javascript - jQuery contentEditable 不起作用 - Internet Explorer 8 - 编辑表项目

javascript - 如何将自动滚动添加到 'resizable' <div>?

jquery - float 日期有时使用两行

angularjs - 无法通过 Protractor JS 在 IE11 上运行多重兼容性测试

javascript - 使用模块模式或对象来定义 Angular 组件有什么优势吗?

javascript - 带有 Angular 平移的 ng-repeat

html - 有没有办法让搜索机器人忽略某些文本?