2010-01-29 2 views

Répondre

37

chemins CSS sont toujours (sauf si IE6 est buggy et stupide et tente de charger .htc fichiers spécifiées dans CSS behavior attributs relatifs 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 courant perçu du HTML comme si le fichier se trouvait dans le répertoire défini par base. Par conséquent, cela affecte des choses comme location.href=...;. Par ailleurs, les styles en ligne et les informations de style dans l'élément <style> sont chargés par rapport à l'emplacement du document. Ceux-ci sont affectés par l'étiquette <base>, bien sûr.

+0

approfondie et concise.Thanks. –

12

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

Il existe cependant un bogue spécifique à IE6 que vous devez vraiment prendre en compte lors de l'utilisation de la balise <base> en HTML (pas en XHTML). La balise <base> est en HTML documenté ne pas avoir une balise de fin </base>, mais IE6 supposé à tort pour vrai qui fera que le contenu entier après l'étiquette <base> est placé comme enfant de la balise <base> dans son arborescence DOM HTML . Cela peut provoquer à première vue des problèmes inexplicables en Javascript/jQuery/CSS, c'est-à-dire que les éléments sont complètement inaccessibles dans des sélections spécifiques (par exemple html>body) jusqu'à ce que vous découvriez qu'il y a réellement base entre les deux.

Un correctif IE6 normale est d'utiliser des commentaires conditionnels pour inclure la balise de fin:

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

+1 pour la clarification IE6. –

+0

Y a-t-il une raison de ne pas faire ? –

+1

@Marcus: Ce n'est pas valide pour HTML4 (bien que les navigateurs l'acceptent). Mais en HTML5, vous pouvez parfaitement le faire. – BalusC

Questions connexes