Chaque navigateur que j'ai observé crée un élément <head>
accessible dans le DOM même s'il n'y a pas de balises <head></head>
explicites dans le balisage du document.Un élément <head> est-il toujours disponible dans le DOM, même s'il est absent du balisage HTML?
Cependant, Google Analytics utilise le code suivant pour l'insertion de script dynamique:
(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 ligne suivante:
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
semble faire une concession spéciale pour les cas où un élément <head>
n'est pas présent . Est-ce juste un cas de rétrocompatibilité extrême (par exemple, pour Netscape 4, ou similaire), ou est-il un cas à faire pour ne pas supposer que les navigateurs modernes (à savoir, Internet Explorer 6 et plus récent) aura toujours accès à un élément <head>
dans le DOM?
IE6 et même IE5.5 ajouter un élément 'HEAD' si pas présent, d'autres navigateurs comme Safari <= 4 ne le font pas, peut-être aussi quelques vieilles versions d'opéra IIRC. – CMS
Merci, CMS! IE 6 est à peu près aussi loin que je l'ai supporté depuis longtemps, donc il est logique que je sois juste habitué au navigateur en ajoutant un '
' automagically. – Bungle