Как заменить интернет-адрес и цель гиперссылки
Проблема
Мне нужно из сценария заменить интернет-адрес и цель гиперссылки. Как это
сделать?
Решение
Это тоже очень просто. Объект, соответствующий гиперссылке, поддерживает
свойства href и target, соответствующие интернет-адресу и цели. Значения обоих
свойств задаются в строковом виде.
Вот все возможные значения цели гиперссылки:
"_blank" — загрузка страницы в новом окне Web-обозревателя;
"_parent" и "_top" — загрузка страницы во всем окне Web-обозревателя;
"_self" — загрузка страницы в том же самом окне или фрейме (тот
же самый эффект будет, если четвертый параметр пропущен);
"<Имя окна или фрейма>" — загрузка страницы в окне или фрейме с
заданным именем.
Пример
Далее приведен HTML-код страницы с гиперссылкой, интернет-адрес которой
меняется с одного на другой после щелчка по ней.
<HTML> <HEAD>
<TITLE>Гиперссылка с секретом</TITLE> <SCRIPT
TYPE="text/javascript">
// Объявляем переменную-индикатор, какая страница должна быть // открыта
после щелчка на гиперссылке var flag = false;
function hrf1OnClick() { var hrflObject = document.all["hrf1"];
hrflObject.href = (flag) ? "page1.html" : "page2.html"; flag = !flag; }
</SCRIPT> </HEAD>
<BODY>
<P><A ID="hrf1" HREF="" ONCLICK="hrf1OnClick();"
TARGET="_blank">Угадай, какая страница!</А></Р> </BODY>
</HTML>
Здесь нужно заметить три очень важные вещи. Рассмотрим их по порядку.
Во-первых, мы не указали интернет-адреса гиперссылки в теге <А>,
который ее создает. Поскольку мы все равно подставляем в гиперссылку
интернет-адрес программно, указывать его в теге не обязательно (меньше возни, да
и HTML-код страницы станет несколько компактнее).
Во-вторых, мы открываем страницы pagel.html и page2.html в новом окне
Web-обозревателя (это достигается присвоением значения "_blank" атрибуту target
тега <а>). Это обязательно, иначе наш пример не будет работать. Давайте
выясним, почему.
Предположим, что мы не включили в тег <а> атрибут target, и теперь
страницы pagel.html и page2.html загружаются в том же окне Web-обозревателя, что
и тестовая страница. Загрузив тестовую страницу, щелкнем на гиперссылке.
Откроется страница page2.htm. При этом тестовая страница будет выгружена, и все
объявленные в ней переменные, в том числе и переменная flag, будут удалены из
памяти компьютера. Если мы теперь вернемся на тестовую страницу, нажав кнопку
Назад на панели инструментов Web-обозревателя, то переменная flag будет заново
инициализирована и получит значение false. И при щелчке на гиперссылке мы снова
попадем на страницу page2.html.
Web-обозреватели не предоставляют стандартных путей сохранить значение
какой-либо переменной в памяти после выгрузки страницы, где она была
инициализирована. (Есть, правда, один подходящий в данном случае способ —
использование cookie; о нем будет рассказано в главе 13.) Так что приходится
выкручиваться и таким образом...
И, в-третьих, заметим, что сам переход на новую страницу (page1.html или
page2.html — не важно) происходит уже после выполнения обработчика события
onclick. Этим можно пользоваться для подмены интернет-адреса или цели
гиперссылки после щелчка на ней (чем мы, собственно, и занимались).