Шаг 39.
Основы JavaScript.
Объект history

    На этом шаге мы рассмотрим свойства и методы объекта history.

    Объект history содержит информацию об адресах, которые браузер посетил во время текущего сеанса. Мы можем передвигаться по этому списку с помощью сценария, загружая страницы, ссылки на которые он содержит. Объект history имеет только одно свойство и три метода.

Таблица 1.Основные свойства и методы объекта history
Название Описание
Свойство
length Число документов в массиве.
Методы
back(); Переход на предыдущий документ.
forward(); Переход на последующий документ.
go (<номер>); Переход на указанное количество документов. Если номер значение положителен, то переход вперед, если отрицателен - то назад.

    Приведем пример использования перечисленных методов.


    Пример. Создадим набор HTML-документов, создающих два фрейма. В верхнем фрейме находятся три кнопки, одна из которых используется для загрузки в нижний фрейм HTML-документа, адрес которого указывается в диалоговом окне. Остальные две кнопки используются для перемещения по загруженным ранее документам.

    Тексты HTML-документов, реализующих данную задачу, приведены ниже.

    Текст главного HTML-документа, содержащего описание структуры фреймов:

<HTML>
<HEAD>
<TITLE>Пример использования объекта history </TITLE>
<FRAMESET ROWS=30%,*>
<FRAME Name=Fr1 SRC=pr1.html>
<FRAME Name=Fr2>
</FRAMESET>
</HTML>

    Текст HTML-документа pr1.html, находящегося в верхнем фрейме:

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
kol = 0;   //Количество загруженных документов.
nomer = 0; //Номер текущего документа.
//Функция активации/деактивации кнопок.
function Proverka (m)
{
 if (m <= kol && m>1)  
   //Делаем доступной кнопку НАЗАД.
   top.Fr1.document.Form1.Button3.disabled=false;
 else
   //Делаем недоступной кнопку НАЗАД.
   top.Fr1.document.Form1.Button3.disabled=true;
 if (m < kol && kol > 1)  
  //Делаем доступной кнопку ВПЕРЕД.
  top.Fr1.document.Form1.Button2.disabled=false;
 else
  //Делаем недоступной кнопку ВПЕРЕД.
  top.Fr1.document.Form1.Button2.disabled=true;
}
//Процедура, выполняющаяся после загрузки документа.
function window.onload()
{
  //Делаем сначала кнопки недоступными.
  top.Fr1.document.Form1.Button2.disabled=true;
  top.Fr1.document.Form1.Button3.disabled=true;
}
//Загрузка документа.
function zagr_doc()
{
  X=prompt("Задайте URL-адрес", "E:/Site/index.html");
  if (X!="") 
  {
   top.Fr2.location.href = X;
   //Количество загруженных документов 
   //увеличим на 1.
   kol++;
   alert ("Загружен документ №"+kol);
   nomer = kol; //Номер текущего документа.
   //Проверка на активацию/деактивацию кнопок.
   Proverka(nomer);
  } 
}  
function vpered() //Нажата кнопка ВПЕРЕД.
{
  top.Fr2.history.forward();
  nomer++;
  alert ("Загружен документ №"+nomer);
  //Проверка на активацию/деактивацию кнопок.
  Proverka(nomer);
}
function nazad() //Нажата кнопка НАЗАД.
{
  top.Fr2.history.back();
  nomer--;
  alert ("Загружен документ №"+nomer);
  //Проверка на активацию/деактивацию кнопок.
  Proverka (nomer);
}
//-->  
</SCRIPT></HEAD>
<BODY>
<H2 ALIGN=CENTER>Свойства объекта navigator</H2>
<FORM NAME="Form1">
<INPUT TYPE="BUTTON" NAME="Button1" VALUE="Загрузка документа" 
    ONCLICK="zagr_doc();">
<INPUT TYPE="BUTTON" NAME="Button2" VALUE="Вперед" ONCLICK="vpered();">
<INPUT TYPE="BUTTON" NAME="Button3" VALUE="Назад" ONCLICK="nazad();">
</FORM>
</BODY>
</HTML>
Текст этих документов можно взять здесь.

    Результат просмотра в браузере будет следующим:


Рис.1. Результат работы приложения

    Опишем назначение каждой из функций, однако сначала отметим, что мы создали две переменные, которые будут доступны во всех функциях. Это переменная kol, хранящая общее количество открытых документов, и nomer, содержащая номер текущего документа.

    Функция window.onload() вызывается после загрузки документа. Здесь кнопки Вперед и Назад делаются недоступными, так как еще нет ни одного загруженного документа. Заметим также, что эти кнопки останутся недоступными и в том случае, когда будет загружен только один документ.

    Обратите внимание, что проверка включения/выключения доступности кнопок Вперед и Назад происходит внутри функции Proverka(), в которую передается номер активного в данный момент документа.

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

    Аналогично кнопка Назад будет активной тогда, когда в массиве загруженных документов более одного документа и в браузере находится не первый документ.

    Для контроля за правильностью работы функций выводится диалоговое окно с номером активного документа.


Создайте HTML-документы, содержащие приведенный пример, и проанализируйте результаты их просмотра в браузере.


    Со следующего шага мы начнем знакомиться с объектом document.




Предыдущий шаг Содержание Следующий шаг