Опубликован: 01.09.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Сибирский федеральный университет
Лекция 10:

Динамический HTML и Объектная Модель Документа

Некоторые методы объекта window

Метод alert (предупреждение) открывает модальное окно сообщения с введенным в качестве аргумента текстом и единственной кнопкой.

window.alert('Всем привет');

Метод confirm (подтверждение) открывает диалоговое окно с сообщением и кнопками "ОК" и "Отмена". Метод возвращает true, если пользователь нажал "ОК" и false в противном случае.

if (window.confirm('Хотите продолжить?') == true)
      RunMyScript();

Метод prompt (подсказка) открывает диалоговое окно с полем однострочного ввода и двумя кнопками. Метод возвращает введенную строку, если пользователь нажал "ОК" или null, если "Отмена".

var name = window.prompt('Ваше имя:', 'не помню');
    if (name != null)
      document.write("Добро пожаловать, " + name);
    else
      document.write("Добро пожаловать, неизвестный");

Метод setTimeout планирует выполнение определенной разработчиком функции через указанное время в миллисекундах и возвращает целочисленный идентификатор процесса, который может быть использован для отмены действия при помощи метода clearTimeout.

function MyAction() {
      alert("Приступайте к действиям");
    }
    var iTimer = window.setTimeout(MyAction, 10000);
    // обратите внимание на отсутствие скобок после MyAction
    // вариант: window.setTimeout("MyAction()", 10000);

    function StopAlert() {
      window.clearTimeout(iTimer);
    }

В этом примере через 10 секунд (после открытия окна) будет запущена функция MyAction и выдано предупреждение, если только в результате каких-либо действий пользователя не будет вызвана функция StopAlert, отменяющая выполнение процесса.

Метод setInterval выполняет указанное действие многократно через указанный промежуток времени в миллисекундах. Синтаксис метода аналогичен setTimeout. Повторы могут быть остановлены методом clearInterval.

<div id="clock">
  </div>

  <button type="button" onclick="StopClock()">
    Остановить часы</button>

  <script type="text/javascript">
    function MyClock() {
      var d = new Date(); //текущие дата и время компьютера пользователя
      document.getElementById('clock').innerHTML = d.toTimeString();
    }
    var iClock = window.setInterval(MyClock, 1000);

    function StopClock() {
      window.clearInterval(iClock);
    }
  </script>

В этом примере функция MyClock выполняется каждую секунду. При выполнении функция получает системные дату и время локального компьютера (через объект Date ) и отображает время в блоке с id="clock". Часы могут быть остановлены нажатием кнопки, которая вызывает функцию StopClock.

Метод open открывает новое окно браузера и загружает в него документ из указанного адреса.

var oNewWindow = window.open(sURL, sName, sFeatures, bReplace);

Все аргументы метода необязательны.

  • sURL – адрес (URL) загружаемого документа. Если опущен, то about:blank
  • sNameимя окна, которое может использоваться в атрибуте target (цель) элементов form и гиперссылки.
  • sFeatures – строка, в которой через запятую перечисляются пары свойство=значение открываемого окна
    • height – высота окна в пикселях. В Internet Explorer 8.0 не может быть меньше 150.
    • width - ширина окна в пикселях. В Internet Explorer 8.0 не может быть меньше 250.
    • left – отступ левого края окна от левого края экрана в пикселях.
    • top – отступ верхнего края окна от верхнего края экрана в пикселях. Internet Explorer 8.0 не позволяет задавать отрицательные значения отступов и значения, превышающие размер экрана (открываемое окно должно быть видимым на экране).
    • location (yes/no) – задает, показывать ли в окне строку адреса.
    • status (yes/no) – задает, показывать ли в окне строку состояния. В Internet Explorer начиная с версии 7.0 установки location и status не имеют эффекта. Из соображений безопасности строки адреса и состояния должны быть видны.
    • resizable (yes/no) – разрешает или запрещает изменение размеров окна пользователем. Запрет допускается не во всех браузерах.
    • scrollbars (yes/no) – разрешает или запрещает полосы прокрутки, когда размер содержимого превышает размер окна. Если свойство опущено или задано no, полосы прокрутки отсутствуют.
    • menubar (yes/no), toolbar (yes/no) – разрешает или запрещает отображение строки меню и инструментов. Если опущены, то запрещены.
  • bReplace (true/false) – определяет, добавлять адрес в историю браузера (false) или замещать текущий документ (true). Действует, только если документ открывается в текущем окне (параметр sName имеет значение _self, _parent или _top ).

Возвращаемое значение ( oNewWindow ) является ссылкой на открываемое окно (объект window ) и открывает доступ к его свойствам и методам.

Окно, открытое методом window.open имеет свойство opener, являющееся ссылкой на объект window, в контексте которого был выполнен метод open.

Метод close закрывает окно. Если окно не было открыто методом open, то выдается предупреждение о том, что сценарий пытается закрыть текущее окно.

Объект document

Объект window содержит единственный объект document – HTML-документ. По разнообразию свойств и методов объект document не уступает объекту window. Именно через объект document осуществляется доступ к содержимому HTML-документа. Вот некоторые свойства и методы объекта document.

Объект body

Объект body представляет собой HTML-элемент body. Это специальный случай, поскольку элемент body в документе единственный. Для обращения к остальным элементам документа могут использоваться стандартные методы объекта document.

Коллекция all

Коллекция all поддерживается только Internet Explorer и содержит все элементы HTML-документа.

Коллекция anchors

Коллекция anchors содержит все гиперссылки (объекты a ), которые имеют атрибуты name или id. Эта коллекция полезна при создании списка гиперссылок.

Массив images

Массив document.images содержит все изображения (элементы img ), загруженные вместе с документом. Каждое изображение загружается на страницу отдельным файлом, и в случае динамической замены одного изображения другим может потребоваться время для загрузки нового файла. Чтобы избежать этого, можно заранее загрузить изображения, которые будут храниться в кэше браузера, откуда они доступны немедленно.

...
  <img src="myImg.jpg" onmouseover="this.src='myImg_over.jpg'">
  ...

  <script type="text/javascript">
    function ImagePreload() {
      var img = new Image();
      img.src = 'myImg_over.jpg';
    }
    window.onload = ImagePreload;
  </script>

  ...
Коллекция forms

Коллекция forms содержит все HTML-формы, определенные в документе. Доступ к каждому из объектов form возможен по индексу или по имени (если элемент form имеет атрибут name, не являющийся стандартным).

Свойство cookie

Cookie (буквально, печенье) – это небольшие фрагменты информации, хранимые браузером. Каждая cookie представляет собой пару имя=значение. Cookie может хранить до 20 таких пар. Cookie являются механизмом хранения пользовательских настроек и поддержания диалога между веб-сервером и браузером. веб-сервер может отправлять браузеру инструкцию SetCookie с парами имя=значение, и браузер возвращает эту же пару серверу (только тому, который установил cookie ) при каждом запросе, что позволяет серверу установить, с кем (чем) ведется диалог. Cookie имеют время жизни. Если параметр expires (истечение срока) не задан или установлен на дату в прошлом, то cookie не сохраняются на диске локального компьютера и уничтожаются при закрытии браузера. Если параметр expires установлен на дату в будущем, то cookie сохраняются на диске в виде текстового файла и автоматически удаляются по истечении срока годности.

Cookie могут также читаться и создаваться в браузере при помощи языков сценариев. Свойство document.cookie представляет собой строку, содержащую пары имя=значение, разделенные точкой с запятой и пробелом ("; "). Таким образом, для получения отдельных значений требуется разбор строки.

<script>
    // Создает куки с определенными именем и значением.
    // срок действия установлен до конца XXI века.
    function SetCookie(sName, sValue) {
      document.cookie = sName + "=" + escape(sValue)
    + "; expires=Fri, 31 Dec 2099 23:59:59 GMT;";
    }

    // Возвращает значение куки по его имени.
    function GetCookie(sName) {
      // пары разделены "; "
      // метод split расщепляет строку на массив строк
      var aCookie = document.cookie.split("; ");
      for (var i = 0; i < aCookie.length; i++) {
        // теперь следует расщепить каждую пару имя=значение
        var aCrumb = aCookie[i].split("=");
        if (sName == aCrumb[0])
          return unescape(aCrumb[1]);
      }
      // Куки с запрошенным именем не существует
      return null;
    }

    // Удаляет куки с заданным именем.
    function DelCookie(sName) {
      document.cookie = sName + "=; expires=Fri, 21 Dec 1976 04:31:24 GMT;";
    }
  </script>
Юрий Шах
Юрий Шах

Профессиональный веб-дизайн: Введение в современные веб-технологии
Самостоятельная работа 4

"3. Создание внешней таблицы.

Теперь создайте таблицу с двумя строками. Во второй строке создайте две ячейки - в первую переместите таблицу цифр, а во вторую - таблицу знаков."

Как в ячейку <td> поместить таблицу? Таблица же сама состоит из ячеек. Исходя из задания следует, что <td> может быть родителем для <td>, но это противоречит правилам HTML?
Если не прав - поправьте.
Также прошу разъяснить, как именно выполнить занное условие - поместить в табличную ячейку таблицу цифр, а в другую ячейку - таблицу знаков? 

Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Галина Матрук
Галина Матрук
Молдова, Республика, Кишинев, UTM, 2010