La balise HTML <base> est-elle également honorée par le script et le CSS?

L'élément HTML de base fournit une base pour les URI relatifs dans le HTML. JavaScript et CSS doivent-ils également l'honorer pour les URI relatifs?

Par exemple

JavaScript:

location.href = "mypage.htm"` 

CSS:

 h4 { background-image: url(myimage.gif) } 

(Dans n'importe quel navigateur?)

Les chemins CSS sont toujours (sauf lorsque IE6 est buggy et stupide et essaie de charger les fichiers .htc spécifiés dans behavior attributs de behavior CSS behavior rapport au document) par rapport à la feuille de style elle-même et ne dépendent pas de l'emplacement HTML. Pour d'autres choses, <base> affectera le répertoire actuel perçu du HTML comme si le fichier était situé dans le répertoire défini par la base. Par conséquent, cela affecte des choses comme location.href=...; . Soit dit en passant, les styles et les informations de style intégrés dans l'élément <style> sont chargés par rapport à l'emplacement du document. Ceux-ci sont affectés par la <base> , bien sûr.

La balise de base est en effet seulement honorée par les liens relatifs dans le document HTML lui-même .

Il existe cependant un bug spécifique à IE6 dont vous avez vraiment besoin de prendre en compte lors de l'utilisation de la <base> dans HTML (pas dans XHTML). La <base> est en HTML documentée comme n'ayant pas de balise finale </base> , mais IE6 l'a supposé de manière incorrecte pour vrai, ce qui entraînera que tout le contenu après la <base> est placé comme enfant de la <base> Dans son arbre HTML DOM. Cela peut causer à première vue des problèmes inexplicables dans Javascript / jQuery / CSS, c'est-à-dire que les éléments sont complètement inaccessibles dans des sélections spécifiques (p. Ex. html>body ) jusqu'à ce que vous découvriez qu'il existe effectivement une base entre les deux.

Une correction IE6 normale utilise des commentaires conditionnels pour inclure la balise finale:

 <base href="http://example.com/"><!--[if lte IE 6]></base><![endif]-->