37 votes

Est le HTML <base> tag également honoré par les scripts et CSS?

L'élément HTML de base fournit une base pour les URI relatifs dans le HTML. JavaScript et CSS doivent également l’honorer pour les URI relatifs qui leur sont attribués:

Par exemple

JavaScript:

 location.href = "mypage.htm"` 
 

CSS:

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

(dans n'importe quel navigateur?)

40voto

Mehrdad Afshari Points 204872

CSS chemins sont toujours (sauf quand IE6 est buggé et stupide et essaie de charger .htc fichiers spécifiés dans le CSS behavior attributs relatifs au document) par rapport à la feuille de style elle-même et n'ont pas de dépendance sur le code HTML emplacement. Pour d'autres trucs, <base> va affecter la perception de répertoire courant de l'HTML comme si le fichier est situé dans le répertoire défini par la base. Par conséquent, elle n'affecte pas les choses comme location.href=...;. Par la voie, des styles en ligne et les informations de style en <style> élément sont chargés par rapport à l'emplacement du document. Ceux qui sont touchés par l' <base> balise, bien sûr.

13voto

BalusC Points 498232

L' base tag est en effet seulement à l'honneur par les liens à l'intérieur du document HTML lui-même.

Il y a cependant un IE6-bug spécifique à laquelle vous avez vraiment besoin de prendre en compte lors de l'utilisation d' <base> balise dans le code HTML (pas en XHTML). L' <base> balise HTML documenté comme n'ayant pas une balise de fin </base>, mais IE6, à tort, pour de vrai, qui sera cause que l'ensemble du contenu après l' <base> balise est placée comme un enfant de l' <base> balise dans son format HTML arborescence DOM. Cela peut entraîner, à première vue, des problèmes inexplicables en Javascript/jQuery/CSS, c'est à dire les éléments étant totalement inaccessible à des sélections spécifiques (par exemple, html>body) jusqu'à ce que vous découvrez qu'il y a effectivement un base entre les deux.

Normal IE6 correctif est d'utiliser les commentaires conditionnels pour inclure la balise de fin:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X