Bun*_*gle 14 html javascript dom document domdocument
我观察到的每个浏览器都会创建一个<head>
可在DOM中访问的元素,即使<head></head>
文档的标记中没有显式标记也是如此.
但是,Google Analytics使用以下代码进行动态脚本插入:
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
})();
Run Code Online (Sandbox Code Playgroud)
以下行:
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
Run Code Online (Sandbox Code Playgroud)
对于<head>
没有元素的情况,似乎做出了特别的让步.
这只是一个极端向后兼容的情况(例如,对于Netscape 4等),或者有没有假设现代浏览器(即Internet Explorer 6和更新版本)始终可以访问的情况到<head>
DOM中的元素?
Lar*_*y K 14
现代浏览器在需要时为您创建头元素.
但是,如果您希望您的代码是防弹的,那么假设客户端会这样做并不聪明.所以Google员工保守且安全.
他们陈述中的附加条款是微不足道的,但增加了额外的可靠性.所以这是件好事.
ps在问题上做得很好并拔出相关代码.
添加:
在HTML规范说,头标记是可选的.我不认为浏览器在dom中创建头部"元素"是规范所要求的.谷歌不希望(也不应该)指望它在那里.