
- •Теоретический материал для подготовки к практической работе по теме «Создание ссылок различных типов» (средствами xhtml и css)
- •1. Текстовые ссылки
- •1.1. Простое меню ссылок
- •1.2. Двухуровневое меню ссылок
- •2. Графические и комбинированные ссылки
- •3. Графические карты ссылок
- •3.1. Клиентский вариант графической карты ссылок
- •3.2. Серверный вариант графической карты ссылок
- •4. Внутренние ссылки
- •5.1. Структура url
- •5.2. Абсолютные и относительные пути
- •5.3. Кодирование url
- •5.4. Псевдо-url JavaScript
5.2. Абсолютные и относительные пути
Пути к файлу могут быть абсолютными и относительными. Абсолютный путь описывает местоположение файла (папки), начиная с самого высокого уровня, и включает имена всех папок в иерархии их вложенности, ведущих к файлу (папке). На самом высоком уровне иерархи находится корневая папка сайта на Web-сервере. Ее имя обычно не указывается в URL.
Например, в URL http://anyserver.ru/mypage.htm указано, что файл mypage.htm находится в корневой папке сервера с доменным именем anyserver.ru, а в URL http://anyserver.ru/docs/mypage.htm указано, что файл mypage.htm находится в папке docs, которая расположена в корневой папке сервера. Ошибка в записи абсолютного пути (адреса) приводит к тому, что нужный файл не будет найден.
Относительный путь (адрес) описывает местоположение файла относительно места расположения текущего документа, в котором инициализируется ссылка с данным адресом. Так, если вы указываете просто имя файла myfile.htm без пути к нему, это означает, что задается относительный адрес. В данном случае браузер будет искать его в той же папке, где находится текущий документ. Если перед именем файла поставить ../ (например, ../myflie.htm), то браузер будет искать файл в папке, находящейся на один уровень выше, чем тот, в котором находится текущий документ. Аналогично, если перед именем файла поставить ../../ (например, ../../myfile.htm), то браузер будет искать файл в папке на два уровня выше, чем текущий.
Допустим, в корневой папке вашего сайта на сервере находятся папки images и docs для хранения файлов соответственно графических изображений и (X)HTML-документов. Тогда относительный адрес ссылки из любого файла в папке docs на изображение в файле, например, imgl.jpg записывается так: ..//images/img1. jpg. В то же время адрес ссылки на это же изображение, но из файла в корневой папке, имеет такой вид: images/imgl.jpg.
5.3. Кодирование url
Если URL-адрес состоит из обычных латинских букв (английского алфавита), символа подчеркивания и цифр, а в его компонентах отсутствуют пробелы и специальные символы синтаксиса (:, /, @, ? и #), то никаких проблем не возникает. Небольшие хлопоты появляются при наличии в компонентах URL пробелов, кириллицы, иероглифов и других специфических символов, а также некоторых знаков препинания. Например, кириллица и знаки препинания могут понадобиться в компонентах URL, представляющих передаваемые данные и якорь внутренней ссылки. В таких случаях необходимо кодировать URL, т. е. заменять недопустимые символы кодами.
При непосредственном написании элементов URL-адреса используется ограниченное подмножество символов из базового набора ASCII (коды от 0 до 127): латинские буквы, цифры и некоторые знаки препинания. При необходимости употребить недопустимые символы из базового набора, а также ASCII-символы с кодами от 128 до 255 (например, буквы кириллицы, пробелы и др.) применяют специальное кодирование двумя шестнадцатеричными цифрами, перед которыми указывают символ %, т. е. в виде %хх.
Вот несколько примеров:
%20 - символ пробела;
%3F - ? (знак вопроса);
%21- ! (восклицательный знак);
%26 - & (амперсанд);
%40- @ ("собака");
%E0 - буква а (кириллица);
%e1- буква б (кириллица).
Например, строка "Documents and Settings" с двумя недопустимыми символами пробела в кодированном виде будет выглядеть как Documents%20and%20settings.
Если требуются символы, выходящие за рамки набора ASCII, то их представляют в виде %uхххх, где хххх - четырехзначный шестнадцатеричный код в системе Unicode, или же в виде двух кодов %хх. Например, слово "Привет" в указанных двух кодировках будет выглядеть так:
%u041F%u0440%u0438%u0432%u0435%u0442
%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82

Для кодирования URL-адреса следует обратиться к справочнику. Вместе с тем кодирование можно выполнить и с помощью специальных методов (встроенных функций) JavaScript: escape(), encodeUri() или encodeUriComponent(). Перечисленные методы в качестве параметра (значения, указанного в круглых скобках) принимают строку, а возвращают ее кодированное значение. Однако выполняют это они по-разному.
На рисунке показано их применение к строке
http://Moй сервер/ mypage.htn#Глава 1
в которой недопустимыми являются символы пробела и кириллицы. Скрипт в (Х)НТМL-документе выводит в окно браузера исходную строку и результаты ее кодирования различными методами.
В примере только применение метода encodeUri() дало результат, пригодный для представления URL. Другие методы закодировали символы, разделяющие компоненты URL (:, / и #), и тем самым сделали всю строку непригодной для подачи запроса на сервер.