тег base или как превратить относительную адресацию в абсолютную

Существует несколько случаев, когда бывает полезно использовать тэг 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 кода, которая превратит все относительные ссылки в абсолютные.
Теги:
base
Добавлено: 03 Апреля 2018 19:01:31 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...