我觀察過的每個瀏覽器都會創建一個<head>
元素,即使在文檔的標記中沒有明確的<head></head>
標記,也可以在DOM中訪問該元素。DOM中始終有一個<head>元素,即使缺少HTML標記也是如此。
然而,谷歌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);
})();
以下行:
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
似乎使案件的特別折扣,其中一個<head>
元素不存在。這是僅僅是一個極端向後兼容的情況(例如,對於Netscape 4等),還是有沒有假設現代瀏覽器(即Internet Explorer 6和更新的版本)的情況下,將始終有權訪問DOM中的<head>
元素?
IE6甚至IE5.5添加一個HEAD元素,如果不存在,其他瀏覽器如Safari <= 4不會,也可能是一些舊的Opera版本IIRC。 – CMS 2010-08-29 05:26:09
謝謝,CMS! IE 6已經有很長一段時間了,但我已經習慣了瀏覽器自動添加'
'。 – Bungle 2010-08-29 23:00:15