Пришел вот такой вопрос:
Не могли вы бы подсказать, как передать данные из javascript програмы в perl (CGI). Меня в частности интересует вопрос об разрешении монитора пользователя, но я это могу определить только с помощью javascript, а как передать эти данные через CGI на сервер незнаю. -- Женя Краус
Интересная задачка :-) Встречный вопрос: Вы видели как проделывают такую штуку счетчики spylog или top.list.ru ? Если не видели, то давайте посмотрим.
Первым делом разберемся с тем, как получить это самое разрешение монитора, так как многие наверняка не умеют это делать и тоже хотят научиться. Вот смотрите код:
<script language=javascript1.2> document.write(screen.width,'x'+screen.height); </script>
Заметьте прежде всего, что получение разрешения монитора возможно только с помощью JavaScript 1.2, т.е. более новой версии. В данном примере у Вас выведется разрешения монитора, например у меня выводится:
1024x768
Таким образом строку с разрешением мы можем всегда получить. Теперь давайте разберемся с тем, как передавать эти данные в скрипт.
Передать данные можно несколькими путями. Один из таких путей как раз используют вышеупомянутые счетчики. Они передают данные прямо вместе с сылкой, т.е. внутри URL. Если Вы внимательно читали шаги раньше, то знаете, что такие данные передаются методом GET скрипту и хранятся внутри переменной окружения QUERY_STRING. Теперь для примера скрипт, который будет передавать разрешение таким способом.
<script language=javascript1.2> document.write("<a href=test.cgi?screen=", screen.width+'x'+screen.height,">Click</a>"); </script>
В результате у вас внутрь документа встроится код html:
<a href=test.cgi?screen=1024x768>Click</a>
В данном случае данные будут передаваться только при нажатии на ссылку, поэтому также как и счетчики используйте тег <img ...>.
Второй способ, возможно именно он и нужен, будет передача этих данных через форму. В этом случае надо будет завести скрытый параметр в форме, например обзовем его scr. Выглядеть наша форма будет следующим образом:
<form action=test.cgi method=POST name=form1> <input type=text name=data> <input type=hidden name=scr> <input type=submit> </form>
Теперь для присвоения этому параметру значения будем использовать следующий скрипт:
<script language=javascript1.2> document.form1.scr.value=screen.width+'x'+screen.height; </script>
После того, как браузер интерпретирует этот код в скрытом параметре формы окажется разрешение экрана.
Например, вот какие данные отправились из формы при использовании action=mailto:dron@mjk.msk.ru:
data=hehehe scr=1024x768
Помоему это именно то, что нам и нужно... Давайте теперь узнаем, что за железо у наших посетителей :-)))