/* 09.09.2005 */
HTML BASE укажет путь!
Нередко пользователи при сохранении веб-страницы у себя на ПК сталкиваются с проблемой нерабочих ссылок, когда браузер не может найти правильный путь к картинкам, листам стилей, javascript-ам и т.д. Эта же проблема может возникнуть и у разработчиков при переносе страницы на сервере в другое место.
HTML BASE - информация о пути
Понятно, что проблема кроется в относительных ссылках. Как известно, относительные ссылки расширяются до полных на основе базового адреса. По умолчанию базовым адресом считается текущий адрес страницы.
Например, если вы находитесь на странице http://www.tigir.com/index.htm, то данный адрес по умолчанию считается базовым и относительные ссылки расширяются относительно этого адреса, например: <a href="article.htm">Статьи</a> расширится до http://www.tigir.com/article.htm.
Но, попадая на ПК пользователя, страница получает базовый адрес на основе текущего расположения в файловой системы пользователя, и относительная ссылка <a href="article.htm">Статьи</a> расширяется например так: file:///C:/article.htm.
Думаю, что не ошибусь, если скажу, что чаще мы используем именно относительные ссылки, нежели абсолютные. Относительные ссылки и проще и удобнее. Тем более разрабатывая сайт на локальной системе вы и не можете указать полный, реальный адрес ресурса. Таким образом, отказываться от относительных адресов в пользу абсолютных для решения проблеммы неризонно. Для этих целей куда больше подходит использование элемента HTML - BASE.
HTML элемент BASE
задает абсолютный-базовый адрес (для ссылок, картинок, скриптов, форм ...). И если указан элемент BASE
, то все относительные ссылки независимо от текущего адреса страницы будут расширятся на основе адреса заданного данным дескриптором.
Для указания базового адреса используется атрибут href
тега BASE
. Размещать элемент BASE
нужно в разделе HEAD
документа, до появления каких либо относительных ссылок на листы стилей, скрипты и др.
Синтаксис: <base href="абсолютный базовый адрес">
Пример:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Tigir.com о web-технологиях</TITLE> <BASE href="http://www.tigir.com/index.htm"> </HEAD> <BODY> <P>Читайте <A href="article.htm">статьи</A>. </BODY> </HTML>
Теперь, если пользователь сохранит такую страницу, то относительная ссылка расширится до адреса http://www.tigir.com/article.htm.
В примере выше, базовый адрес включает и название файла самой страницы, которое не нужно, чтобы правильно расширить относительный адрес, и можно было спокойно указать <BASE href="http://www.tigir.com">
. Однако, лучше указать адрес включая и название файла страницы, для того, чтобы пользователь мог, просматривая копию документа, узнать адрес оригинала страницы в интернете.
Однако не все так идеально, как хотелось бы, и следует учитывать следующее:
- Если вы разрабатываете сайт на локальной системе, то элемент
BASE
необходимо задавать только перед непосредственной выгрузкой файлов на сервер; - И второе, если пользователь скачает ваш сайт или его часть к себе, то ссылки будут вести не на копии страниц на ПК пользователя, а на ваш сайт в сети.
Информация о целевом окне/фрейме
Стоит отметить, что элемент BASE
также используется и для другой цели. Как вы знаете, для того, чтобы ссылка открылась не в текущем окне, а в другом окне или фрейме, необходимо задать ссылке атрибут target
. Например, чтобы ссылка открылась в новом окне нужно задать атрибут target="_blank"
. Ну а если все ссылки в документе должны открываться в новом окне, то что указывать во всех ссылках target="_blank"
? Можно и указать, но можно задать атрибут target
элемента BASE
(<BASE target="_blank">
) и все ссылки по умолчанию будут использовать это значение. Если нужно изменить это поведение по умолчанию, заданное в атрибуте target
элемента BASE
для отдельных ссылок, то указываем в ссылке аттрибут target
с другим значением (<A href="..." target="_self">открыть в текущем окне</A>). Таким образом атрибут target
элемента BASE
служит для указания целевого фрэйма/окна в котором будут открываться все страницы открытые по ссылкам на странице.
Синтаксис: <base target="имя окна">