Существует несколько случаев, когда бывает полезно использовать тэг base, например, когда одни и те же изображение часто встречаются в разных структурных частях сайта. При этом при частом переносе html страниц с локального компьютера на сервер хостера (разработка ведется на локалке, а готовый материал публикуется) возникает необходимость каждый раз переписывать base, что делать не очень то хочется, а вернее совсем не хочется. Ситуацию может помочь разрешить следующий скрипт:
var url = document.URL.split("/"); //разбиваем url на части
var base = "";
for (var i = 0; i < url.length-2; i++) //определяем уровень вложенности (2)
//либо for (var i = 0; i < 3; i++)
base += url[i]+"/";
document.write("<base href=\"" + base + "\" />"); //пишем результат
Для каждого уровня вложенности необходимо изменить всего лишь одну цифру. Если страниц много, предыдущее можно вынести в отдельный файл, а где надо в head'е писать:
проблемы:
не работает при локальном просмотре страниц (не через веб сервер)
для старых версий IE нужно делить document.URL.split("\\"), т.е. необходимо дорабатывать скрипт
Opera не понимает base в JavaScript'ах
Можно попробовать решить ситуацию элегантнее:
document.write("<base href='"+location.protocol+"//"+location.host+"' />");
Таким образом, в любую страницу мы можем вставить строчку JavaScript кода, которая превратит все относительные ссылки в абсолютные.