Каждый браузер, который я наблюдал, создает элемент <head>
, доступный в DOM, даже если в разметке документа нет явных тегов <head></head>
.
Однако Google Analytics использует следующий код для динамической script вставки:
(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 и более поздние) будут всегда есть доступ к элементу <head>
в DOM?