/* 09.09.2005 */

HTML BASE укажет путь!

Автор: Цыгырлаш Игорь (09.09.2005)

Нередко пользователи при сохранении веб-страницы у себя на ПК сталкиваются с проблемой нерабочих ссылок, когда браузер не может найти правильный путь к картинкам, листам стилей, 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 также используется и для другой цели. Как вы знаете, для того, чтобы ссылка открылась не в текущем окне, а в другом окне или фрейме, необходимо задать ссылке атрибут target. Например, чтобы ссылка открылась в новом окне нужно задать атрибут target="_blank". Ну а если все ссылки в документе должны открываться в новом окне, то что указывать во всех ссылках target="_blank"? Можно и указать, но можно задать атрибут target элемента BASE (<BASE target="_blank">) и все ссылки по умолчанию будут использовать это значение. Если нужно изменить это поведение по умолчанию, заданное в атрибуте target элемента BASE для отдельных ссылок, то указываем в ссылке аттрибут target с другим значением (<A href="..." target="_self">открыть в текущем окне</A>). Таким образом атрибут target элемента BASE служит для указания целевого фрэйма/окна в котором будут открываться все страницы открытые по ссылкам на странице.

Синтаксис: <base target="имя окна">

-> Обсудить статью в форуме
<- Назад к списку статей
•> Аббревиатуры и акронимы в HTML
<• Определяем тип и версию браузера с помощью HTML комментариев