Суббота, 28.12.2024, 13:43
Приветствую Вас Гость

Меню сайта
Web-программирование
Категории раздела
Наш опрос
Какой браузер Вы используете?
Всего ответов: 1423
Статистика

Анализ веб сайтов
Главная » Статьи » Статьи o JavaScript

Тег base или как превратить относительную адресацию в абсолютную
Ситуацию может помочь разрешить следующий скрипт:

1var url = document.URL.split("/");                  //разбиваем url на части
2var base = "";
3for (var i = 0; i < url.length-2; i++)               //определяем уровень вложенности (2)
4//либо for (var i = 0; i < 3; i++)  
5base += url[i]+"/";
6document.write("<base href=\"" + base + "\" />"); //пишем результат
Для каждого уровня вложенности необходимо изменить всего лишь одну цифру. Если страниц много, предыдущее можно вынести в отдельный файл, а где надо в head'е писать: проблемы:

  • не работает при локальном просмотре страниц (не через веб сервер)
  • для старых версий IE нужно делить document.URL.split("\\"), т.е. необходимо дорабатывать скрипт
  • Opera не понимает base в JavaScript'ах

Можно попробовать решить ситуацию элегантнее:

1document.write("<base href='"+location.protocol+"//"+location.host+"' />");
Таким образом, в любую страницу мы можем вставить строчку JavaScript кода, которая превратит все относительные ссылки в абсолютные.


полезная информация

Свойство location объекта window возвращает указатель на объект location, содержащий информацию об URI документа, открытого в окне. В общем виде URI имеет вид:

протокол://хост:порт/путь#закладка?запрос

Объект location содержит названные фрагменты URI как свойства, доступные для чтения и записи:
Свойство Описание
hash Закладка, т.е. часть URI, следующая за символом "#" (включая его).
host Если port не равно null, то эта строка имеет вид hostname:port, в противном случае совпадает с hostname.
hostname Имя хоста и домена или IP-адрес.
href Полный URI документа.
pathname Имя файла или пути.
port Номер порта, указанный в URI документа.
protocol Протокол, указанный в URI документа.
search Запрос, т.е. часть URI, следующая за символом "?" (включая его).

Кроме того, данный объект имеет два метода:

Метод Описание
reload(flag?) Перезагружает текущий документ. Аргумент указывает способ перезагрузки: true — перезагрузка с сервера, false — перезагрузка из кэш-памяти. Если аргумент опущен, то он принимается равным false.
replace(URI) Заменяет текущий документ на документ с заданным URI. При этом текущий документ удаляется из истории просмотра.
Категория: Статьи o JavaScript | Добавил: Rammstein (22.11.2010)
Просмотров: 631 | Рейтинг: 0.0/0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Реклама
Поиск
Друзья сайта
Топ100- Веб-дизайн free counters