Учитывается ли HTML-тег ‹base› сценариями и CSS?

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

E.g.

JavaScript:

location.href = "mypage.htm"` 

CSS:

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

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


person John K    schedule 29.01.2010    source источник


Ответы (2)


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

person mmx    schedule 29.01.2010

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

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

Обычное исправление IE6 использует условные комментарии для включения конечного тега:

<base href="http://example.com/"><!--[if lte IE 6]></base><![endif]-->
person BalusC    schedule 29.01.2010
comment
@Marcus: это недопустимо для HTML4 (хотя браузеры это принимают). Но в HTML5 вы прекрасно можете это сделать. - person BalusC; 10.11.2010
comment
@Marcus: имейте в виду, что использование <base> влияет на якоря: " title="рекомендуется ли использовать базовый HTML-тег"> stackoverflow.com/questions/1889076/ - person BalusC; 11.11.2010
comment
Я знаю, я поменял их пару тысяч :) - person Marcus Downing; 15.11.2010