Даже при том, что свойство location объекта Window ссылается на объект Location, существует возможность присвоить этому свойству строковое значение. В этом случае броузер интерпретирует строку как URL_адрес и предпринимает попытку загрузить и отобразить документ с этим URL_адресом. Например, присвоить строку URL_адреса свойству location можно следующим образом:
// Если броузер не поддерживает функцию Document.getElementById, выполнить
// переход к статической странице, которая не использует эту функцию.
if (!document.getElementById) location = "staticpage.html";
Примечательно, что строка URL_адреса, записанная в свойство location в этом примере, представляет относительный адрес. Относительные URL_адреса интер_ претируются относительно страницы, в которой они появляются, точно так же, как если бы они использовались в гиперссылке.
В примере 14.7, который приводится в конце этой главы, для загрузки нового документа также используется свойство location.
Интересно, что в объекте Window отсутствует метод, с помощью которого можно было бы заставить броузер загрузить и отобразить новый документ. Историче_ ски сложилось так, что для загрузки новых страниц поддерживается только прием с присваиванием строки URL_адреса свойству location окна. Однако объ_ ект Location содержит два метода, предназначенные для аналогичных целей. Ме_ тод reload() заново загружает текущую отображаемую страницу с веб_сервера. Метод replace() загружает и отображает страницу по заданному URL_адресу. Од_ нако вызов этого метода для данного URL_адреса отличается от присваивания этого URL свойству location окна. Когда вызывается replace(), указанный URL_ адрес заменяет текущий URL_адрес в списке истории просмотра, а не создает но_ вую запись. Следовательно, если для перекрытия одного документа другим вы_ зывается метод replace(), кнопка Назад не вернет пользователя обратно к исход_
14.3. Объекты Window, Screen и Navigator
ному документу, как это произойдет при загрузке нового документа путем при_ сваивания URL_адреса свойству location. Для сайтов, использующих фреймы и отображающих много временных страниц (возможно, сгенерированных сер_ верными сценариями), применение метода replace() часто оказывается полез_ ным, поскольку временные страницы не сохраняются в списке истории и от кнопки Назад пользователь может добиться больше толка.
И наконец, не путайте свойство location объекта Window, ссылающееся на объект Location, со свойством location объекта Document, которое просто представляет со_ бой доступную только для чтения строку без каких_либо особенностей, прису_ щих объекту Location. Свойство document.location – это синоним свойства docu_ ment.URL, которое является более предпочтительным именем для этого свойства (т. к. позволяет избежать потенциальной путаницы). В большинстве случаев document.location совпадает с location.href. Однако когда происходит перена_ правление на стороне сервера, document.location содержит загруженный URL_ад_ рес, а location.href – изначально запрошенный URL_адрес.