Является ли HTML <base> тегом также соблюдение сценариев и CSS?
base HTML-элемент предоставляет базу для относительных URI в HTML. Обязательно, чтобы JavaScript и CSS соблюдали это для относительных URI, выпущенных в них:
например.
JavaScript:
location.href = "mypage.htm"`
CSS
h4 {
background-image: url(myimage.gif)
}
(в любом браузере?)
Ответы
Ответ 1
Пути CSS всегда (за исключением случаев, когда IE6 является ошибкой и глупостью и пытается загрузить файлы .htc
, указанные в атрибутах CSS behavior
по отношению к документу) относительно самой таблицы стилей и не зависит от местоположения HTML. Для других вещей <base>
будет влиять на воспринимаемую текущую директорию HTML, как если бы файл находился в каталоге, определенном базой. Следовательно, это влияет на такие вещи, как location.href=...;
. Кстати, встроенные стили и информация о стиле в элементе <style>
загружаются относительно местоположения документа. Конечно, тег тега <base>
, конечно.
Ответ 2
Тег base
действительно соблюдается только относительными ссылками внутри самого документа HTML.
Однако существует специфическая ошибка IE6, которую вам действительно нужно учитывать при использовании тега <base>
в HTML (а не в XHTML). Тег <base>
в HTML документирован как не имеющий конечный тег </base>
, но IE6 неправильно принял его для true, что приведет к тому, что весь контент после тега <base>
будет помещен как дочерний тега <base>
в его дереве HTML DOM. Это может вызвать на первый взгляд необъяснимые проблемы в Javascript/jQuery/CSS, т.е. Элементы полностью недоступны в определенных вариантах выбора (например, html>body
), пока вы не обнаружите, что между ними есть base
.
Обычное исправление IE6 использует условные комментарии для включения конечного тега:
<base href="#" onclick="location.href='http://example.com/'; return false;"><!--[if lte IE 6]></base><![endif]-->