Тег HTML <base>также учитывается скриптами и CSS? - PullRequest
35 голосов
/ 29 января 2010

Элемент base HTML обеспечивает базу для относительных URI в HTML. Должны JavaScript и CSS также соблюдать его для относительных идентификаторов URI, выданных в них:

например.

JavaScript:

location.href = "mypage.htm"` 

CSS:

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

(в любом браузере?)

Ответы [ 2 ]

38 голосов
/ 29 января 2010

Пути CSS всегда (за исключением случаев, когда IE6 содержит ошибки и глупости и пытается загрузить .htc файлы, указанные в атрибутах CSS behavior относительно документа) относительно самой таблицы стилей и не зависит от местоположения HTML. Что касается других вещей, <base> повлияет на воспринимаемый текущий каталог HTML, как если бы файл находился в каталоге, определенном base. Следовательно, это влияет на такие вещи, как location.href=...;. Кстати, встроенные стили и информация о стилях в элементе <style> загружаются относительно местоположения документа. Конечно, на них влияет тег <base>.

12 голосов
/ 29 января 2010

Тег base действительно учитывается только относительными ссылками внутри самого HTML-документа .

Однако существует ошибка, специфичная для IE6, которую вы действительно должны учитывать при использовании тега <base> в HTML (не в XHTML).Тег <base> в HTML задокументирован как не имеющий конечного тега </base>, но IE6 неправильно принял его за true, что приведет к тому, что весь контент после тега <base> будет помещен как child тега <base> в его дереве DOM HTML.Это может вызвать на первый взгляд необъяснимые проблемы в Javascript / jQuery / CSS, то есть элементы совершенно недоступны в определенных выборках (например, html>body), пока вы не обнаружите, что на самом деле существует base между ними.обычное исправление IE6 использует условные комментарии для включения конечного тега:

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