|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Location-объекты являются предопределёнными объектами JavaScript, доступ к которым Вы можете получить через свойство location объекта window.
Объект location представляет полный URL, ассоциированный с данным объектом window. Каждое свойство объекта location представляет разные части URL.
protocol//host:port/pathname#hash?search
http://home.netscape.com/assist/extensions.html#topic1?x=7&y=2
Эти части имеют следующее предназначение:
Объект Location имеет свойства для всех частей URL. См. конкретные свойства. Объект Location имеет ещё два свойства:
Если Вы присваиваете строку свойству location объекта, JavaScript создаёт объект location и присваивает эту строку его свойству href. Например, следующие два оператора эквивалентны и устанавливают URL для текущего окна - домашнюю страницу Netscape:
window.location.href="index.php?name=go&url=http%3A%2F%2Fhome.netscape.com%2F"
window.location="http://home.netscape.com/"
Объект location содержится в объекте window и находится в его области видимости/scope. Если Вы обращаетесь к объекту location без специфицирования window, объект location представляет текущее окно. Если Вы обращаетесь к объекту location и специфицируете имя окна, как, например, windowReference.location, объект location представляет местоположение в специфицированном окне.
В обработчиках событий Вы обязаны специфицировать window.location, а не просто location. Из-за ограничений области видимости static-объектов JavaScript, вызов location без специфицирования имени объекта эквивалентно document.location, что является синонимом для document.URL.
Location не является свойством объекта document; его эквивалентом является свойство document.URL. Свойство document.location, являющееся синонимом для document.URL, применять не рекомендуется.
Как документы загружаются при установленном location. Если Вы установили объект location или любое из его свойств, за исключением hash, то, как загружается новый документ, зависит от версии используемого браузера:
Синтаксис обычных типов URL. Если Вы специфицируете URL, можно использовать стандартные форматы URL и операторы JavaScript. В таблице показан синтаксис для специфицирования наиболее распространённых типов URL.
Таблица 1.1 Синтаксис URL.| URL-тип | Протокол | Пример |
|---|---|---|
Далее идут пояснения по некоторым протоколам:
| Свойство | Описание |
|---|---|
hash | |
host | Специфицирует имя хоста и домена или IP-адрес сетевого хоста. |
hostname | |
href | |
pathname | |
port | |
protocol | |
search |
| Метод | Описание |
|---|---|
reload | |
replace | Загружает специфицированный URL поверх текущего вхождения в списке history. |
Кроме того, этот объект наследует методы watch и unwatch из объекта Object.
Пример 1. Следующие два эквивалентных оператора устанавливают URL текущего окна - домашнюю страницу Netscape:
window.location.href="index.php?name=go&url=http%3A%2F%2Fhome.netscape.com%2F"
window.location="http://home.netscape.com/"
Пример 2. Следующий оператор устанавливает URL фрэйма frame2 - домашнюю страницу Sun:
parent.frame2.location.href="index.php?name=go&url=http%3A%2F%2Fwww.sun.com%2F"
См. также примеры для Anchor.
Строка, начинающаяся со знака хэша (#), специфицирующая имя якоря в URL.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство hash специфицирует часть URL. Это свойство применяется только к HTTP URL.
Вы можете установить свойство hash в любое время, хотя надёжнее установить свойство href для изменения местоположения. Если установленное Вами свойство hash не может быть найдено в текущем месте, Вы получите ошибку.
Установка свойства hash даёт переход к именованному якорю без перезагрузки документа. Это отличается от загрузки документа при установке других location-свойств (см. "Как загружаются документы при установке location").
См. в документе RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о hash.
Здесь оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Операторы document.write выводят свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.write("newWindow.location.hash = " +
newWindow.location.hash + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object
newWindow.location.hash = #checkbox_object
Строка, специфицирующая имя сервера, субдомена и домена.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство host специфицирует часть URL. Свойство host является подстрокой свойства hostname. Свойство hostname получается путём конкатенации свойств host и port, разделённых двоеточием. Если значение свойства port равно null, свойство host будет тем же самым, что и свойство hostname.
Вы можете установить свойство host в любое время, хотя надёжнее установить свойство href для изменения местоположения. Если host не может быть найдено в текущем месте, Вы получите ошибку.
См. в Разделе 3.1 документа RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о hostname и port.
Здесь оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Операторы document.write отображают свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.write("newWindow.location.host = " +
newWindow.location.host + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object
newWindow.location.host = home.netscape.com
Строка, содержащая полное имя хоста сервера, включая имя сервера, субдомена и домена и номер порта.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство hostname специфицирует часть URL. Свойство hostname получается путём конкатенации свойств host и port, разделённых двоеточием. Если свойство port имеет значение 80 (это значение по умолчанию), свойство host будет таким же, что и свойство hostname.
Вы можете установить свойство hostname в любое время, хотя надёжнее установить свойство href для изменения местоположения. Если специфицированное Вами свойство hostname не может быть найдено в текущем месте, Вы получите ошибку.
См. в Разделе 3.1 документа RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о hostname.
Здесь оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Операторы document.write отображают свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.write("newWindow.location.hostName = " +
newWindow.location.hostName + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object
newWindow.location.hostName = home.netscape.com
Строка, специфицирующая полный URL.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство href специфицирует полный URL. Другие свойства объекта location являются подстроками свойства href. Если Вам необходимо изменить URL, ассоциированный с окном, Вы должны изменить свойство href; это корректно обновит все другие свойства.
Вы можете установить свойство href в любое время.
Отсутствие свойства при указании объекта location равносильно специфицированию location.href. Например, следующие два оператора эквивалентны и устанавливают URL текущего окна - домашнюю страницу Netscape:
window.location.href="index.php?name=go&url=http%3A%2F%2Fhome.netscape.com%2F"
window.location="http://home.netscape.com/"
См. в документе RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о URL.
В этом примере оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Оператор document.write отображает все свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.write("newWindow.location.protocol = " +
newWindow.location.protocol + "<P>")
msgWindow.document.write("newWindow.location.host = " +
newWindow.location.host + "<P>")
msgWindow.document.write("newWindow.location.hostName = " +
newWindow.location.hostName + "<P>")
msgWindow.document.write("newWindow.location.port = " +
newWindow.location.port + "<P>")
msgWindow.document.write("newWindow.location.pathname = " +
newWindow.location.pathname + "<P>")
msgWindow.document.write("newWindow.location.hash = " +
newWindow.location.hash + "<P>")
msgWindow.document.write("newWindow.location.search = " +
newWindow.location.search + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object
newWindow.location.protocol = http:
newWindow.location.host = home.netscape.com
newWindow.location.hostName = home.netscape.com
newWindow.location.port =
newWindow.location.pathname =
/comprod/products/navigator/version_2.0/script/
script_info/objects.html
newWindow.location.hash = #checkbox_object
newWindow.location.search =
Строка, специфицирующая часть URL-path в URL.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство pathname специфицирует часть URL. Свойство pathname указывает детали получения доступа к специфицированному ресурсу.
Вы можете установить свойство pathname в любое время, хотя надёжнее установить свойство href для изменения местоположения. Если специфицированное Вами свойство pathname не может быть найдено в текущем месте, Вы получите ошибку.
См. в Разделе 3.1 документа RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о pathname.
В этом примере оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Операторы document.write выводят свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.write("newWindow.location.pathname = " +
newWindow.location.pathname + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object
newWindow.location.pathname =
/comprod/products/navigator/version_2.0/script/
script_info/objects.html
Строка, специфицирующая коммуникационный порт, используемый сервером.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство port специфицирует часть URL. Свойство port является подстрокой свойства hostname. Свойство hostname получается путём конкатенации свойств host и port, разделённых двоеточием.
Вы можете установить свойство port в любое время, хотя надёжнее установить свойство href для изменения местоположения. Если специфицированное Вами свойство port не может быть найдено в текущем месте, Вы получите ошибку. Если свойство port не специфицировано, он имеет значение по умолчанию 80.
См. в Разделе 3.1 документа RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о port.
В этом примере оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Операторы document.write выводят свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.write("newWindow.location.port = " +
newWindow.location.port + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object
newWindow.location.port =
Строка, специфицирующая начало URL до первого двоеточия включительно.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство protocol специфицирует часть URL. Свойство protocol указывает метод доступа URL. Например, значение "http:" специфицирует протокол HyperText Transfer Protocol, а значение "javascript:" специфицирует код JavaScript.
Вы можете установить свойство protocol в любое время, хотя надёжнее установить свойство href для изменения местоположения. Если специфицированное Вами свойство protocol не может быть найдено в текущем месте, Вы получите ошибку.
Свойство protocol представляет имя схемы URL. См. в Разделе 2.1 документа RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о protocol.
В этом примере оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Операторы document.write отображают свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.write("newWindow.location.protocol = " +
newWindow.location.protocol + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://home.netscape.com/comprod/products/navigator/
version_2.0/script/script_info/objects.html#checkbox_object
newWindow.location.protocol = http:
Форсирует перезагрузку текущего документа окна (документа, специфицированного свойством Location.href).
reload([forceGet])
forceGet | Если вы задаёте значение true, форсирует безусловный HTTP GET документа с сервера. Он не должен использоваться, пока Вы не убедитесь, что кэши диска и памяти не исчерпаны и не нарушены или что сервер не имеет новую версию документа (например, если он генерируется с помощью CGI при каждом запросе). |
Этот метод использует ту же политику, что и кнопка Reload браузера. Интерфейс пользователя для установки значения по умолчанию этой политики варьируется для различных версий браузеров.
По умолчанию метод reload не форсирует транзакцию сервера. Однако, если пользователь установил проверку версии документа при каждом доступе к нему, этот метод выполняет "условный GET-запрос" с использованием HTTP header/шапки If-modified-since для получения с сервера запрашиваемого документа только в том случае, если время last-modified новее, чем время, хранимое в кэше клиента. Другими словами, reload перезагружает документ из кэша только в том случае, если не специфицирована проверка каждый раз и документ не изменился на сервере с момента его последней загрузки и сохранения в кэше.
С этом примере выводятся рисунок и три радио-кнопки. Пользователь может щёлкнуть радио-кнопки для выбора рисунка для отображения. Щелчок по другой кнопке даёт пользователю возможность перезагрузить документ.
<SCRIPT>
function displayImage(theImage) {
document.images[0].src=theImage
}
</SCRIPT>
<FORM NAME="imageForm">
<B>Choose an image:</B>
<BR><INPUT TYPE="radio" NAME="imageChoice" VALUE="image1" CHECKED
onClick="displayImage('seaotter.gif')">Sea otter
<BR><INPUT TYPE="radio" NAME="imageChoice" VALUE="image2"
onClick="displayImage('orca.gif')">Killer whale
<BR><INPUT TYPE="radio" NAME="imageChoice" VALUE="image3"
onClick="displayImage('humpback.gif')">Humpback whale
<BR>
<IMG NAME="marineMammal" src="books/javascript/javascript_13/seaotter.gif" ALIGN="left" VSPACE="10">
<P><INPUT TYPE="button" VALUE="Click here to reload"
onClick="window.location.reload()">
</FORM>
Загружает специфицированный URL поверх текущего вхождения в списке history.
replace(URL)
URL |
Метод replace загружает специфицированный URL поверх текущего вхождения в списке history. После вызова метода replace пользователь не может перейти к предыдущему URL, щёлкнув кнопку Back браузера.
Если Ваша программа работает с JavaScript 1.0, Вы можете поместить следующие строки в тэг SCRIPT перед Вашей программой. Это эмулирует replace, который был введён в JavaScript 1.1:
if (location.replace == null)
location.replace = location.assign
Метод replace не создаёт новое вхождение в списке history. Для создания нового вхождения в списке history при загрузке URL используйте метод History.go.
В этом примере пользователь может выбрать из нескольких каталогов. Выводятся два набора радио-кнопок, щёлкая которые пользователь выбирает время года и категорию, например, каталог Spring/Summer Clothing или каталог Fall/Winter Home & Garden. Если пользователь щёлкает кнопку Go, функция displayCatalog выполняет метод replace, замещая текущий URL на URL, соответствующий выбранному каталогу. После вызова displayCatalog пользователь не может перейти к предыдущему URL (списку каталогов) путём использования кнопки Back браузера.
<SCRIPT>
function displayCatalog() {
var seaName=""
var catName=""
for (var i=0; i < document.catalogForm.season.length; i++) {
if (document.catalogForm.season[i].checked) {
seaName=document.catalogForm.season[i].value
i=document.catalogForm.season.length
}
}
for (var i in document.catalogForm.category) {
if (document.catalogForm.category[i].checked) {
catName=document.catalogForm.category[i].value
i=document.catalogForm.category.length
}
}
fileName=seaName + catName + ".html"
location.replace(fileName)
}
</SCRIPT>
<FORM NAME="catalogForm">
<B>Which catalog do you want to see?</B>
<P><B>Season</B>
<BR><INPUT TYPE="radio" NAME="season" VALUE="q1" CHECKED>Spring/Summer
<BR><INPUT TYPE="radio" NAME="season" VALUE="q3">Fall/Winter
<P><B>Category</B>
<BR><INPUT TYPE="radio" NAME="category" VALUE="clo" CHECKED>Clothing
<BR><INPUT TYPE="radio" NAME="category" VALUE="lin">Linens
<BR><INPUT TYPE="radio" NAME="category" VALUE="hom">Home & Garden
<P><INPUT TYPE="button" VALUE="Go" onClick="displayCatalog()">
</FORM>
Строка, начинающаяся со знака вопроса, которая специфицирует в URL любую информацию запроса.
JavaScript 1.1. По умолчанию это свойство разрушено/запорчено. О разрушении данных см. книгу Клиентский JavaScript. Руководство.
Свойство search специфицирует часть URL. Это свойство применяется только к HTTP URLs.
Свойство search содержит пары переменная/значение; каждая пара отделяется амперсандом (&). Например, две пары в строке search могут выглядеть так:
?x=7&y=5
Вы можете установить свойство search в любое время, хотя надёжнее установить свойство href для изменения местоположения. Если установленное Вами свойство search не может быть найдено в текущем месте, Вы получите ошибку.
См. в Разделе 3.3 документа RFC 1738 (http://www.cis.ohio-state.edu/htbin/rfc/rfc1738.html) полную информацию о search.
В этом примере оператор window.open создаёт окно newWindow и загружает в него специфицированный URL. Операторы document.write выводят свойства newWindow.location в окне msgWindow.
newWindow=window.open
("http://guide-p.infoseek.com/WW/NS/Titles?qt=RFC+1738+&col=WW")
msgWindow.document.write("newWindow.location.href = " +
newWindow.location.href + "<P>")
msgWindow.document.close()
msgWindow.document.write("newWindow.location.search = " +
newWindow.location.search + "<P>")
msgWindow.document.close()
newWindow.location.href =
http://guide-p.infoseek.com/WW/NS/Titles?qt=RFC+1738+&col=WW
newWindow.location.search = ?qt=RFC+1738+&col=WW
Дата последнего обновления: 28 мая 1999 года.
Copyright (c) 1999 Netscape Communications Corporation
|