Cada navegador que he observado crea un elemento <head>
que está accesible en el DOM, incluso si no hay etiquetas explícitas <head></head>
en el marcado del documento.¿Hay un elemento <head> siempre disponible en el DOM, incluso si está ausente en el marcado HTML?
Sin embargo, Google Analytics utiliza el siguiente código para la inserción de la escritura dinámica:
(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);
})();
La siguiente línea:
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
parece hacer una concesión especial para los casos en los que un elemento <head>
no está presente .
¿Es esto solo un caso de extrema compatibilidad con versiones anteriores (por ejemplo, para Netscape 4 o similar), o hay un caso para no asumir que los navegadores modernos (es decir, Internet Explorer 6 y más reciente) siempre tendrá acceso a un elemento <head>
en el DOM?
IE6 e incluso IE5.5 agregan un elemento 'HEAD' si no está presente, otros navegadores como Safari <= 4 no lo hacen, también tal vez algunas antiguas versiones de Opera IIRC. – CMS
Gracias, CMS! IE 6 es lo más antiguo que he admitido en mucho tiempo, por lo que tiene sentido que me acabe de acostumbrar al navegador agregando un '
' automágicamente. – Bungle