Практически на каждом
сайте можно видеть ссылки, содержащие в себе параметры
после знака "?", например, http://some.site.com/?id=1.
Обычно обработкой таких параметров занимается серверный
скрипт, но иногда возникает необходимость узнать эти
параметры внутри JavaScript. О том, как это сделать, и
пойдёт рассказ сегодня.
Что представляют из себя, так
называемые, GET-параметры? На самом деле - это просто
строка адреса, но принято, что если в URL-е встречается
символ "?", то все символы после него являются
параметрами. Трактовка параметров - стандартна: сначала
идёт название переменной, потом символ "=", потом
значение переменной, переменные разделяются символом
"&". Узнать текущий адрес в JavaScript можно
прочитав значение window.location. Парсить строку
после "?" придётся в два прохода: сначала разбить на
группы "переменная=значение", а потом уже разбить на
составные части.
Разбиение строки параметров облегчается
тем, что в JavaScript имеется специальная строковая
функция - split(), результатом которой будет
массив строк. Для того, чтобы её использовать, сначала
необходимо создать обьект String, так как данная
функция является методом этого обьекта. Делается это
просто:
someVar = new String("some text");
Затем делим строку на подстроки:
someArray = someVar.split("x");
Где "x" - символ деления строки на
подстроки. Для того, чтобы найти в строке какой-либо
символ, необходимо воспользоваться ещё одной строковой
функцией - indexOf():
someVar.indexOf('?');
Ввод в теорию закончен. Приступим к
практике. Я решил, что все GET-переменные стоит хранить
в двух отдельных глобальных массивах: один хранит
названия, другой - значения. К сожалению JavaScript не
поддерживает ассоциативные массивы, поэтому
воспользуемся указанным мною способом. Также необходимо
сохранить количество GET-переменных. Конечно, всегда
можно вызвать функцию подсчёта размера массива, но
стилистически мой метод лучше. И так, глобальные
переменные и массивы:
var _GET_Keys; // Пока что пустой массив
var _GET_Values;
var _GET_Count = 0; // элементов пока нет
var _GET_Default = '';
Значение переменной _GET_Default будет
обьяснено позже. Далее создам функцию
get_parseGET(), которая будет парсить URL и
создавать массивы с переменными. В самом начале функция
создаёт обьект String и проверяет в нём наличие
символа "?":
get = new String(window.location);
x = get.indexOf('?');
if(x!=-1)
{
// здесь будет основной код
}
else ;
Далее вырезаем часть строки,
находящуюся после найденного символа:
l = get.length;
get = get.substr(x+1, l-x);
Теперь делим строку на группы
"переменная=значение", вычисляем общее количество
переменных и подготавливаемся к создаиню необходимых
массивов:
l = get.split('&');
x = 0;
_GET_Count = l.length;
_GET_Keys = new Array(_GET_Count);
_GET_Values = new Array(_GET_Count);
И в заключение разделяем полученные
группы на два массива с именами переменных и их
значениями:
for(i in l)
{
get = l[i].split('=');
_GET_Keys[x] = get[0];
_GET_Values[x] = get[1];
x++;
}
В данном примере используется
конструкция for .. in, перебирающая все элементы
массива. Синтаксис данной конструкции:
for ( key in array )
{
// Ваши действия
}
где key - название ключа,
которое будет выбрано из массива array. В теле
цикла к текущему элементу можно бдует обратиться
array[key].
Вторая функция из библиотеки -
get_fetchVar(key), позволяет узнать значение
заданной GET-переменной. Работает простым перебором
массива _GET_Keys. Если ключ не найден, то
возвращает значение _GET_Default, которое
упоминалось выше. Хочу заметить, что значение
_GET_Default вовсе НЕ обязательно менять в самой
библиотеке - при необходимости, это можно сделать в
Вашем HTML-коде:
<script language="JavaScript">_GET_Default="tra la la";</script>
Наверное, никто не сможет поспорить с утверждением, что главное в любой web-страничке - удобство для пользователя. После того, как мы выложили наше творение в сеть, мы сразу начинаем предпринимать массу усилий для того, чтобы привлечь на свой сайт максимум посетителей... подробнее
Этот скрипт поможет вам организовать на своем сайте или страничке баннерную систему.
Первый фрагмент вы вставляете в любое место странички... подробнее
В Internet Zone-154 была небольшая заметка Локальная баннерная система. Автор - Вадим Беляков (http://tuta.da.ru) предлагал поставить на страничку баннер, используя небольшой javascript. Я прочитал этот номер лишь в середине апреля. Мне сразу же пришло в голову использовать его для текстовой рекламы... подробнее
JS, или JavaScript язык сценариев, которые выполняются на стороне клиента и не требует перезагрузки страницы. JavaScript был разработан компанией Netscape в 1995 году... подробнее
Как известно, бичом современного Интернета является спам - непрошенная рассылка рекламных и прочих сообщений. По данным некоторых аналитиков, он составляет более 50% всех сообщений в Сети... подробнее