Российский государственный гуманитарный университет
Опубликован: 14.08.2003 | Доступ: свободный | Студентов: 23397 / 4440 | Оценка: 4.00 / 3.90 | Длительность: 10:03:00
Лекция 4:

Программируем свойства окна браузера

Поле адреса и свойство window.location

Поле адреса в браузере обычно располагается в верхней части окна и отображает URL загруженного документа. Если пользователь хочет вручную перейти к какой-либо странице (набрать ее URL), он делает это в поле адреса.

Поле адреса (location)

Рис. 4.2. Поле адреса (location)

Свойство location объекта window само является объектом класса Location. Класс Location, в свою очередь, является подклассом класса URL, к которому относятся также объекты классов Area и Link. Объекты Location наследуют все свойства объектов URL, что позволяет получить доступ к любой части схемы URL. Подробнее о классе объектов URL мы расскажем в "Программируем гипертекстовые переходы" .

В целях совместимости с прежними версиями JavaScript, в языке поддерживается также свойство window.document.location, которое в настоящее время полностью дублирует свойство window.location со всеми его свойствами и методами. Рассмотрим теперь свойства и методы объекта window.location (событий, связанных с этим объектом, нет).

Свойства объекта location

Их проще продемонстрировать на примере. Предположим, что браузер отображает страницу, расположенную по адресу:

http://www.site.ru:80/dir/page.cgi?product=phone&id=3#mark

Тогда свойства объекта location примут следующие значения:

window.location.href     = "http://www.site.ru:80/dir/page.cgi?product=phone&id=3#mark"
window.location.protocol = "http:"
window.location.hostname = "www.site.ru"
window.location.port     = 80
window.location.host     = "www.site.ru:80"
window.location.pathname = "dir/page.cgi"
window.location.search   = "?product=phone&id=3"
window.location.hash     = "#mark"

Как уже говорилось в предыдущих лекциях, к свойствам объектов можно обращаться как с помощью точечной нотации (как выше), так и с помощью скобочной нотации, например: window.location['host'].

Методы объекта location

Методы объекта location предназначены для управления загрузкой и перезагрузкой страницы. Это управление заключается в том, что можно либо перезагрузить текущий документ (метод reload() ), либо загрузить новый (метод replace() ).

window.location.reload(true);

Метод reload() полностью моделирует поведение браузера при нажатии на кнопку Reload в панели инструментов. Если вызывать метод без аргумента или указать его равным true, то браузер проверит время последней модификации документа и загрузит его либо из кеша (если документ не был модифицирован), либо с сервера. Такое поведение соответствует простому нажатию кнопки Reload браузера (клавиши F5 в Internet Explorer). Если в качестве аргумента указать false, то браузер перезагрузит текущий документ с сервера, несмотря ни на что. Такое поведение соответствует одновременному нажатию клавиши Shift и кнопки браузера Reload (или Ctrl+F5 в Internet Explorer).

Используя объект location, перейти на новую страницу можно двумя способами:

window.location.href="http://www.newsite.ru/";
window.location.replace("http://www.newsite.ru/");

Разница между ними - в отображении этого действия в истории посещений страниц window.history. В первом случае в историю посещений добавится новый элемент, содержащий адрес " http://www.newsite.ru/ ", так что при желании можно будет нажать кнопку Back на панели браузера, чтобы вернуться к прежней странице. Во втором случае новый адрес " http://www.newsite.ru/ " заместит прежний в истории посещений, и вернуться к прежней странице нажатием кнопки Back уже будет невозможно.

История посещений (history)

История посещений страниц World Wide Web позволяет пользователю вернуться к странице, которую он просматривал ранее в данном окне браузера. История посещений в JavaScript трансформируется в объект window.history. Этот объект указывает на массив URL-страниц, которые пользователь посещал и которые он может получить, выбрав из меню браузера режим Go. Методы объекта history позволяют загружать страницы, используя URL из этого массива.

Чтобы не возникло проблем с безопасностью браузера, путешествовать по History можно, только используя индекс. При этом URL, как текстовая строка, программисту недоступен. Чаще всего этот объект используют в примерах или страницах, на которые могут быть ссылки из нескольких разных страниц, предполагая, что можно вернутся к странице, из которой пример будет загружен:

<FORM><INPUT TYPE="button" VALUE="Назад" onClick="history.back()"></FORM>

Данный код отображает кнопку "Назад", нажав на которую, мы вернемся на предыдущую страницу. Аналогичным образом действует метод history.forward(), перенося нас на следующую посещенную страницу.

Существует также метод go(), имеющий целочисленный аргумент и позволяющий перескакивать на несколько шагов вперед или назад по истории посещений. Например, history.go(-3) перенесет нас на 3 шага назад в истории просмотра. При этом методы back() и forward() равносильны методу go() с аргументами -1 и 1, соответственно. Вызов history.go(0) приведет к перезагрузке текущей страницы.

Тип браузера (navigator)

Часто возникает задача настройки страницы на конкретную программу просмотра (браузер). При этом возможны два варианта: определение типа браузера на стороне сервера, либо на стороне клиента. Для последнего варианта в арсенале объектов JavaScript существует объект window.navigator. Важнейшие из свойств этого объекта перечислены ниже.

Таблица 4.2. Основные свойства объекта window.navigator
Свойство Описание
userAgent Основная информация о браузере. Передается серверу в HTTP-заголовке при открытии пользователем страниц
appName Название браузера
appCodeName Кодовое название браузера
appVersion Данные о версии браузера и совместимости

Рассмотрим простой пример определения типа программы просмотра:

<FORM><INPUT TYPE=button VALUE="Тип навигатора" 
onClick="alert(window.navigator.userAgent);"></FORM>

При нажатии на кнопку отображается окно предупреждения, содержащее значение свойства navigator.userAgent. Если это значение разобрать по компонентам, то может получиться, например, следующее:

navigator.userAgent   = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1)"

navigator.appName     = "Microsoft Internet Explorer"
navigator.appCodeName = "Mozilla"
navigator.appVersion  = "4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1)"

У объекта navigator есть еще несколько интересных с точки зрения программирования применений. Например, чтобы проверить, поддерживает ли браузер клиента язык Java, достаточно вызвать метод navigator.javaEnabled(), возвращающий значение true, если поддерживает, и false в противном случае.

Можно проверить, какие форматы графических файлов поддерживает браузер, воспользовавшись свойством navigator.mimeTypes (оно представляет собой массив всех типов MIME, которые поддерживаются данным браузером):

<SCRIPT>
if(navigator.mimeTypes['image/gif']!=null)
  document.write('Ваш браузер поддерживает GIF<BR>');
if(navigator.mimeTypes['image/tiff']==null)
  document.write('Ваш браузер не поддерживает TIFF');
</SCRIPT>

К сожалению, такая проверка не позволяет определить наличие возможности автоматической подгрузки графики.

Валерий Банатин
Валерий Банатин

function f() { var i=5; k=7; } f(); alert(k);

В примере выдается результат k=7, однако, хоть переменная и не объявлена, она внутри функции, т.е. локальная и не должна быть видима, или вторая и последующие все-таки становятся глобальными?

Дамир Кантюков
Дамир Кантюков

Изучаю курс введение в JavaScript. 4 уроке есть код, где метод присвоен переменной, почему у меня не работает, браузер гугл:

<HTML><HEAD> <SCRIPT> wid = window.open('','','width=750,height=100,status=yes'); wid.document.open(); R = wid.document.write; R('<HTML><HEAD><SCRIPT>var t;<\/SCRIPT></HEAD>'); R('<BODY><H1>Новое окно</H1></BODY></HTML>'); wid.document.close(); </SCRIPT> </HEAD> <BODY> <A HREF="javascript: wid.t=window.prompt('Новое состояние:',''); wid.document.write(wid.t); wid.focus(); void(0);" >Изменим значение переменной t в новом окне</A> </BODY></HTML>