Динамический HTML (DHTML) это целый ряд инновационных приемов, позволяющих динамически изменять оформление и содержание веб-страницы в ответ на действия пользователя. Динамические эффекты DHTML достигаются модификацией находящегося в памяти пользовательского компьютера HTML-документа без использования серверных технологий или сложных элементов управления. Поскольку не требуется перезагрузка документа с веб-сервера, все эти действия производятся быстрее и экономят сетевой трафик.
DHTML не является технологией самой по себе, это продукт взаимодействия трех родственных и взаимодополняющих технологий: языка HTML, каскадных таблиц стилей (CSS) и языка сценариев (JavaScript или VBScript). Для предоставления сценариям доступа к HTML и CSS содержимое документа представляется в виде дерева объектов в программной модели, известной под названием Объектная Модель Документа (Document Object Model, DOM).
Динамические стили – одно из ключевых преимуществ DHTML, и DOM модель предоставляет программный доступ к стилям, позволяя изменять стили элементов и создавать новые стилевые правила.
Программный интерфейс (API) DOM модели является фундаментом DHTML, именно через DOM API программист может управлять практически любым элементом HTML-документа. Каждый элемент документа, видимый или невидимый, представляет собой отдельный объект, обладающий свойствами, связанными с атрибутами элемента, и методами, выполняющими некоторые действия. DOM модель позволяет также отслеживать действия пользователя, такие как движения и щелчки мыши или нажатия на клавиши. Любое такое действие генерирует событие, которое может быть перехвачено и передано функции-обработчику.
HTML-тэг элемента определяет тип сопоставленного ему объекта. Отдельные экземпляры объектов в документе могут идентифицироваться по их уникальному идентификатору (атрибуту/свойству id ), имени (атрибуту/свойству name ) или положению в дереве элементов DOM модели. Кроме этого есть ряд важнейших объектов, которые не имеют собственных тэгов. Это такие объекты как window (окно браузера), document (HTML-документ, загруженный в окно или фрейм), event (событие).
Объект window является вершиной иерархии. Все остальные объекты являются дочерними или более отдаленными потомками объекта window. Браузер создает, как правило, единственный объект window, когда открывает документ в окне, однако если документ содержит фреймы (элементы frame и iframe ), то дочерние объекты window создаются также для каждого фрейма. Доступ к дочерним окнам возможен через коллекцию frames родительского окна. Дочерние окна зависимы от состояния родительского окна. Например, закрытие родительского окна приводит к закрытию всех дочерних окон. Нет необходимости указывать объект window для вызова его свойств или методов, если вызов относится к текущему окну. Например, инструкции window.close() и close() идентичны.
Многие свойства объекта window сами являются объектами. Рассмотрим важнейшие из них.
Объект navigator содержит информацию о браузере. Все его свойства доступны только по чтению и могут использоваться для программного определения свойств и методов, доступных в том или ином браузере.
userAgent содержит строку, которая передается в HTTP заголовке на веб-сервер с каждым запросом. Эта строка содержит информацию о самом браузере и его версии, операционной системе и ее версии и некоторую дополнительную информацию. Пример:document.write(navigator.userAgent); /* Результат в Internet Explorer 8.0 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) */ /* Результат в Mozilla Firefox 3.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729) */ /* Результат в Apple Safari Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9.1 */
appName содержит имя браузера – "Microsoft Internet Explorer" или "Netscape" для многих других браузеров.appCodeName – "Mozilla" для большинства браузеровappVersion, appMinorVersion, platform, systemLanguage и другие содержат информацию о версии браузера и операционной системы, языковые настройки и другое.Объект location содержит полную информацию об адресе ( Universal Resource Locator, URL) открытой страницы. Доступны также все отдельные детали URL, такие как протокол передачи данных, имя сервера, порт, через который осуществляется доступ, путь к файлу на сервере, строка запроса и закладка внутри страницы. Рассмотрим для примера следующий адрес: http://www.MyServer.ru:80/examples/samplecodes.aspx?code=htmllevel=1#location.
href содержит всю строку URL ( http://www.MyServer.ru:80/examples/samplecodes.aspx?code=htmllevel=1#location )protocol – протокол передачи данных ( http:)host – имя сервера + порт ( www.MyServer.ru:80 )hostname – имя сервера ( www.MyServer.ru )port – порт ( 80 )pathname – путь ( /examples/samplecodes.aspx )search – строка запроса ( ?code=htmllevel=1 )hash – закладка, ссылка внутри страницы ( #location )Свойство href является свойством по умолчанию. Две следующие инструкции идентичны.
location = 'http://www.microsoft.com'; window.location.href = 'http://www.microsoft.com';
Присвоение значения объекту location (как в приведенном примере) немедленно открывает заданный URL в текущем окне.
Объект history (история) содержит информацию об адресах, посещенных пользователем с момента открытия браузера. Из соображений безопасности действительные адреса недоступны, имеются лишь три метода для перемещения по индексу на страницу относительно текущей.
back() – переход на предыдущую страницу. Эквивалентно нажатию кнопки "Назад" в браузере.forward() – переход на следующую страницу. Эквивалентно нажатию кнопки "Вперед" в браузере.go(N) – переход на N позиций в индексе. history.go(-1) эквивалентно history.back(), history.go(1) эквивалентно history.forward(). При попытке выйти за границы индекса не возникает ошибки; браузер остается на текущей странице.Объект screen содержит информацию о мониторе: ширина ( width ), высота ( height ), глубина цвета ( colorDepth ), выраженная как число бит на пиксель, и другие. Если у пользователя несколько мониторов, отображаются данные того, в котором открыт браузер (или его большая часть).
Коллекция frames содержит объекты, соответствующие элементам frame и iframe. Каждый такой объект содержит свой объект 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("Добро пожаловать, неизвестный");
Метод планирует выполнение определенной разработчиком функции через указанное время в миллисекундах и возвращает целочисленный идентификатор процесса, который может быть использован для отмены действия при помощи метода clearTimeout.
function MyAction() {
alert("Приступайте к действиям");
}
var iTimer = window.setTimeout(MyAction, 10000);
// обратите внимание на отсутствие скобок после MyAction
// вариант: window.setTimeout("MyAction()", 10000);
function StopAlert() {
window.clearTimeout(iTimer);
}
В этом примере через 10 секунд (после открытия окна) будет запущена функция MyAction и выдано предупреждение, если только в результате каких-либо действий пользователя не будет вызвана функция StopAlert, отменяющая выполнение процесса.
Метод выполняет указанное действие многократно через указанный промежуток времени в миллисекундах. Синтаксис метода аналогичен . Повторы могут быть остановлены методом 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:blanksName – 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, то выдается предупреждение о том, что сценарий пытается закрыть текущее окно.
Объект window содержит единственный объект document – HTML-документ. По разнообразию свойств и методов объект document не уступает объекту window. Именно через объект document осуществляется доступ к содержимому HTML-документа. Вот некоторые свойства и методы объекта document.
Объект body представляет собой HTML-элемент body. Это специальный случай, поскольку элемент body в документе единственный. Для обращения к остальным элементам документа могут использоваться стандартные методы объекта document.
Коллекция all поддерживается только Internet Explorer и содержит все элементы HTML-документа.
Коллекция anchors содержит все гиперссылки (объекты a ), которые имеют атрибуты name или id. Эта коллекция полезна при создании списка гиперссылок.
Массив 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 содержит все HTML-формы, определенные в документе. Доступ к каждому из объектов form возможен по индексу или по имени (если элемент form имеет атрибут name, не являющийся стандартным).
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>
Элемент может быть найден в документе по его id.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Поиск по id</title>
<script type="text/javascript">
function ShowDetails() {
var elem = document.getElementById('details');
elem.style.display = 'block';
}
</script>
</head>
<body>
<p>
Нажмите кнопку для просмотра подробностей</p>
<button type="button" onclick="ShowDetails()">
Подробности
</button>
<div id="details" style="display: none">
Здесь описаны все подробности.
</div>
</body>
</html>
В этом примере метод объекта document (HTML-документ) getElementById ищет элемент, атрибут id которого равен указанному (в данном примере "details"); строчные и заглавные буквы в значении атрибута различаются.
Internet Explorer предлагает более простой доступ к элементу по его id. Достаточно просто указать id элемента.
function ShowDetails() {
details.style.display = 'block';
}
Следует иметь в виду, что такой подход не является стандартным и не гарантирует обнаружение элемента в других браузерах. Использование DOM метода getElementById гарантирует работу в большинстве браузеров. Предполагается, что id задает уникальный в пределах документа идентификатор элемента.
DOM-метод getElementsByTagName ищет элементы по имени HTML-тэга в пределах элемента, в контексте которого выполняется метод.
// коллекция таблиц в документе
var oTables = document.body.getElementsByTagName('table');
document.write("В документе " + oTables.length + " таблиц");
// коллекция ячеек первой таблицы
var oCells = oTables[0].getElementsByTagName('td');
DOM-метод getElementsByName ищет элементы в документе по значению атрибута name
(атрибут name поддерживают управляющие элементы HTML-формы).
<form method="post" action="form.php">
<input type="text" name="UserName" />
<input type="radio" name="Age" value="1" />18 – 24
<input type="radio" name="Age" value="2" />25 – 35
<input type="radio" name="Age" value="3" />36 – 55
</form>
...
//все элементы переключателя
var oAge = document.getElementsByName('Age');
// текстовое поле UserName
var oUserName = document.getElementsByName('UserName')[0];
// даже если найден единственный объект,
// он является элементом массива
// Тот же результат во всех браузерах:
var oForm = document.forms[0];
var oAge = oForm.Age; // массив элементов
var oUserName = oForm.UserName; //единственный элемент
Замечание: Методы getElementById, getElementsByName и getElementsByTagName доступны только после полной загрузки документа. Например, следующий код не работает.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
document.getElementById('MyDiv').innerHTML = "Hello";
</script>
</head>
<body>
<div id="MyDiv">
</div>
</body>
</html>
DOM модель представляет HTML-документ в виде дерева, в узлах которого находятся HTML-элементы. Каждый узел дерева (кроме корневого) имеет единственный родительский узел ( parentNode ) и может иметь дочерние ( childNodes ) и "братские" ( ) узлы, т.е. узлы, имеющие общего родителя. Модификация документа DOM-методами заключается в создании нового элемента и размещения его в определенном узле, удалении или изменении узла.
Следующий пример показывает создание списка опций в форме в ответ на выбор пользователя с использованием DOM-методов createElement (создать HTML-элемент), appendChild (добавить элемент к родительскому элементу в качестве дочернего) и removeChild (удалить дочерний элемент).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Песенка-загадка</title>
</head>
<body>
<form method="get" action="form1.htm">
Из чего же сделаны наши
<input type="radio" name="Gender" value="m" onclick="CreateList('m')" />мальчишки
<input type="radio" name="Gender" value="f" onclick="CreateList('f')" />девчонки
<div id="divList">
<!-- Здесь мы поместим ответы-->
</div>
<input type="submit" value="Отправить" />
<input type="reset" value="Сброс" />
</form>
<script type="text/javascript">
function CreateList(listType) {
var maleOptions = ["веснушки", "хлопушки", "линейки", "батарейки"];
var femaleOptions = ["цветочки", "звоночки", "тетрадки", "переглядки"];
//ищем элемент(ы) по имени
var oSelect = document.getElementsByName('Interest');
if (oSelect oSelect[0])
//если элемент найден, удаляем его из родительского узла
oSelect[0].parentNode.removeChild(oSelect[0]);
// создаем элемент select (список опций)
oSelect = document.createElement('select');
oSelect.name = 'Interest';
oSelect.multiple = true; //разрешаем множественный выбор
var opArray = null;
// выбираем массив опций в зависимости от выбора пользователя
if (listType == 'm')
opArray = maleOptions;
else
opArray = femaleOptions;
for (var i = 0, n = opArray.length; i < n; i++) {
//создаем элемент
var op = document.createElement('option')
op.innerHTML = opArray[i];
//добавляем в новый элемент в конец списка
oSelect.appendChild(op);
}
//список еще не виден. добавляем его в родительский узел
document.getElementById('divList').appendChild(oSelect);
}
</script>
</body>
</html>
В этом же примере использовано свойство innerHTML, не являющееся частью DOM-модели, но поддерживаемое большинством браузеров. Это свойство содержит весь HTML-код (включая текст и разметку) между открывающим и закрывающим тэгами элемента (но не сами тэги). Использование innerHTML существенно упрощает процесс программирования и поэтому весьма популярно.
window, history, navigator, document, location, screen.window.cookie? Как создавать и читать cookies?id?innerHTML?Динамический HTML (DHTML) это целый ряд инновационных приемов, позволяющих динамически изменять оформление и содержание веб-страницы в ответ на действия пользователя. Динамические эффекты DHTML достигаются модификацией находящегося в памяти пользовательского компьютера HTML-документа без использования серверных технологий или сложных элементов управления. Поскольку не требуется перезагрузка документа с веб-сервера, все эти действия производятся быстрее и экономят сетевой трафик.
DHTML не является технологией самой по себе, это продукт взаимодействия трех родственных и взаимодополняющих технологий: языка HTML, каскадных таблиц стилей (CSS) и языка сценариев (JavaScript или VBScript). Для предоставления сценариям доступа к HTML и CSS содержимое документа представляется в виде дерева объектов в программной модели, известной под названием Объектная Модель Документа (Document Object Model, DOM).
Динамические стили – одно из ключевых преимуществ DHTML, и DOM модель предоставляет программный доступ к стилям, позволяя изменять стили элементов и создавать новые стилевые правила.
Программный интерфейс (API) DOM модели является фундаментом DHTML, именно через DOM API программист может управлять практически любым элементом HTML-документа. Каждый элемент документа, видимый или невидимый, представляет собой отдельный объект, обладающий свойствами, связанными с атрибутами элемента, и методами, выполняющими некоторые действия. DOM модель позволяет также отслеживать действия пользователя, такие как движения и щелчки мыши или нажатия на клавиши. Любое такое действие генерирует событие, которое может быть перехвачено и передано функции-обработчику.
HTML-тэг элемента определяет тип сопоставленного ему объекта. Отдельные экземпляры объектов в документе могут идентифицироваться по их уникальному идентификатору (атрибуту/свойству id ), имени (атрибуту/свойству name ) или положению в дереве элементов DOM модели. Кроме этого есть ряд важнейших объектов, которые не имеют собственных тэгов. Это такие объекты как window (окно браузера), document (HTML-документ, загруженный в окно или фрейм), event (событие).
Объект window является вершиной иерархии. Все остальные объекты являются дочерними или более отдаленными потомками объекта window. Браузер создает, как правило, единственный объект window, когда открывает документ в окне, однако если документ содержит фреймы (элементы frame и iframe ), то дочерние объекты window создаются также для каждого фрейма. Доступ к дочерним окнам возможен через коллекцию frames родительского окна. Дочерние окна зависимы от состояния родительского окна. Например, закрытие родительского окна приводит к закрытию всех дочерних окон. Нет необходимости указывать объект window для вызова его свойств или методов, если вызов относится к текущему окну. Например, инструкции window.close() и close() идентичны.
Многие свойства объекта window сами являются объектами. Рассмотрим важнейшие из них.
Объект navigator содержит информацию о браузере. Все его свойства доступны только по чтению и могут использоваться для программного определения свойств и методов, доступных в том или ином браузере.
userAgent содержит строку, которая передается в HTTP заголовке на веб-сервер с каждым запросом. Эта строка содержит информацию о самом браузере и его версии, операционной системе и ее версии и некоторую дополнительную информацию. Пример:document.write(navigator.userAgent); /* Результат в Internet Explorer 8.0 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.4; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) */ /* Результат в Mozilla Firefox 3.6 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729) */ /* Результат в Apple Safari Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9.1 */
appName содержит имя браузера – "Microsoft Internet Explorer" или "Netscape" для многих других браузеров.appCodeName – "Mozilla" для большинства браузеровappVersion, appMinorVersion, platform, systemLanguage и другие содержат информацию о версии браузера и операционной системы, языковые настройки и другое.Объект location содержит полную информацию об адресе ( Universal Resource Locator, URL) открытой страницы. Доступны также все отдельные детали URL, такие как протокол передачи данных, имя сервера, порт, через который осуществляется доступ, путь к файлу на сервере, строка запроса и закладка внутри страницы. Рассмотрим для примера следующий адрес: http://www.MyServer.ru:80/examples/samplecodes.aspx?code=htmllevel=1#location.
href содержит всю строку URL ( http://www.MyServer.ru:80/examples/samplecodes.aspx?code=htmllevel=1#location )protocol – протокол передачи данных ( http:)host – имя сервера + порт ( www.MyServer.ru:80 )hostname – имя сервера ( www.MyServer.ru )port – порт ( 80 )pathname – путь ( /examples/samplecodes.aspx )search – строка запроса ( ?code=htmllevel=1 )hash – закладка, ссылка внутри страницы ( #location )Свойство href является свойством по умолчанию. Две следующие инструкции идентичны.
location = 'http://www.microsoft.com'; window.location.href = 'http://www.microsoft.com';
Присвоение значения объекту location (как в приведенном примере) немедленно открывает заданный URL в текущем окне.
Объект history (история) содержит информацию об адресах, посещенных пользователем с момента открытия браузера. Из соображений безопасности действительные адреса недоступны, имеются лишь три метода для перемещения по индексу на страницу относительно текущей.
back() – переход на предыдущую страницу. Эквивалентно нажатию кнопки "Назад" в браузере.forward() – переход на следующую страницу. Эквивалентно нажатию кнопки "Вперед" в браузере.go(N) – переход на N позиций в индексе. history.go(-1) эквивалентно history.back(), history.go(1) эквивалентно history.forward(). При попытке выйти за границы индекса не возникает ошибки; браузер остается на текущей странице.Объект screen содержит информацию о мониторе: ширина ( width ), высота ( height ), глубина цвета ( colorDepth ), выраженная как число бит на пиксель, и другие. Если у пользователя несколько мониторов, отображаются данные того, в котором открыт браузер (или его большая часть).
Коллекция frames содержит объекты, соответствующие элементам frame и iframe. Каждый такой объект содержит свой объект 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("Добро пожаловать, неизвестный");
Метод планирует выполнение определенной разработчиком функции через указанное время в миллисекундах и возвращает целочисленный идентификатор процесса, который может быть использован для отмены действия при помощи метода clearTimeout.
function MyAction() {
alert("Приступайте к действиям");
}
var iTimer = window.setTimeout(MyAction, 10000);
// обратите внимание на отсутствие скобок после MyAction
// вариант: window.setTimeout("MyAction()", 10000);
function StopAlert() {
window.clearTimeout(iTimer);
}
В этом примере через 10 секунд (после открытия окна) будет запущена функция MyAction и выдано предупреждение, если только в результате каких-либо действий пользователя не будет вызвана функция StopAlert, отменяющая выполнение процесса.
Метод выполняет указанное действие многократно через указанный промежуток времени в миллисекундах. Синтаксис метода аналогичен . Повторы могут быть остановлены методом 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:blanksName – 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, то выдается предупреждение о том, что сценарий пытается закрыть текущее окно.
Объект window содержит единственный объект document – HTML-документ. По разнообразию свойств и методов объект document не уступает объекту window. Именно через объект document осуществляется доступ к содержимому HTML-документа. Вот некоторые свойства и методы объекта document.
Объект body представляет собой HTML-элемент body. Это специальный случай, поскольку элемент body в документе единственный. Для обращения к остальным элементам документа могут использоваться стандартные методы объекта document.
Коллекция all поддерживается только Internet Explorer и содержит все элементы HTML-документа.
Коллекция anchors содержит все гиперссылки (объекты a ), которые имеют атрибуты name или id. Эта коллекция полезна при создании списка гиперссылок.
Массив 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 содержит все HTML-формы, определенные в документе. Доступ к каждому из объектов form возможен по индексу или по имени (если элемент form имеет атрибут name, не являющийся стандартным).
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>
Элемент может быть найден в документе по его id.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Поиск по id</title>
<script type="text/javascript">
function ShowDetails() {
var elem = document.getElementById('details');
elem.style.display = 'block';
}
</script>
</head>
<body>
<p>
Нажмите кнопку для просмотра подробностей</p>
<button type="button" onclick="ShowDetails()">
Подробности
</button>
<div id="details" style="display: none">
Здесь описаны все подробности.
</div>
</body>
</html>
В этом примере метод объекта document (HTML-документ) getElementById ищет элемент, атрибут id которого равен указанному (в данном примере "details"); строчные и заглавные буквы в значении атрибута различаются.
Internet Explorer предлагает более простой доступ к элементу по его id. Достаточно просто указать id элемента.
function ShowDetails() {
details.style.display = 'block';
}
Следует иметь в виду, что такой подход не является стандартным и не гарантирует обнаружение элемента в других браузерах. Использование DOM метода getElementById гарантирует работу в большинстве браузеров. Предполагается, что id задает уникальный в пределах документа идентификатор элемента.
DOM-метод getElementsByTagName ищет элементы по имени HTML-тэга в пределах элемента, в контексте которого выполняется метод.
// коллекция таблиц в документе
var oTables = document.body.getElementsByTagName('table');
document.write("В документе " + oTables.length + " таблиц");
// коллекция ячеек первой таблицы
var oCells = oTables[0].getElementsByTagName('td');
DOM-метод getElementsByName ищет элементы в документе по значению атрибута name
(атрибут name поддерживают управляющие элементы HTML-формы).
<form method="post" action="form.php">
<input type="text" name="UserName" />
<input type="radio" name="Age" value="1" />18 – 24
<input type="radio" name="Age" value="2" />25 – 35
<input type="radio" name="Age" value="3" />36 – 55
</form>
...
//все элементы переключателя
var oAge = document.getElementsByName('Age');
// текстовое поле UserName
var oUserName = document.getElementsByName('UserName')[0];
// даже если найден единственный объект,
// он является элементом массива
// Тот же результат во всех браузерах:
var oForm = document.forms[0];
var oAge = oForm.Age; // массив элементов
var oUserName = oForm.UserName; //единственный элемент
Замечание: Методы getElementById, getElementsByName и getElementsByTagName доступны только после полной загрузки документа. Например, следующий код не работает.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
document.getElementById('MyDiv').innerHTML = "Hello";
</script>
</head>
<body>
<div id="MyDiv">
</div>
</body>
</html>
DOM модель представляет HTML-документ в виде дерева, в узлах которого находятся HTML-элементы. Каждый узел дерева (кроме корневого) имеет единственный родительский узел ( parentNode ) и может иметь дочерние ( childNodes ) и "братские" ( ) узлы, т.е. узлы, имеющие общего родителя. Модификация документа DOM-методами заключается в создании нового элемента и размещения его в определенном узле, удалении или изменении узла.
Следующий пример показывает создание списка опций в форме в ответ на выбор пользователя с использованием DOM-методов createElement (создать HTML-элемент), appendChild (добавить элемент к родительскому элементу в качестве дочернего) и removeChild (удалить дочерний элемент).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Песенка-загадка</title>
</head>
<body>
<form method="get" action="form1.htm">
Из чего же сделаны наши
<input type="radio" name="Gender" value="m" onclick="CreateList('m')" />мальчишки
<input type="radio" name="Gender" value="f" onclick="CreateList('f')" />девчонки
<div id="divList">
<!-- Здесь мы поместим ответы-->
</div>
<input type="submit" value="Отправить" />
<input type="reset" value="Сброс" />
</form>
<script type="text/javascript">
function CreateList(listType) {
var maleOptions = ["веснушки", "хлопушки", "линейки", "батарейки"];
var femaleOptions = ["цветочки", "звоночки", "тетрадки", "переглядки"];
//ищем элемент(ы) по имени
var oSelect = document.getElementsByName('Interest');
if (oSelect oSelect[0])
//если элемент найден, удаляем его из родительского узла
oSelect[0].parentNode.removeChild(oSelect[0]);
// создаем элемент select (список опций)
oSelect = document.createElement('select');
oSelect.name = 'Interest';
oSelect.multiple = true; //разрешаем множественный выбор
var opArray = null;
// выбираем массив опций в зависимости от выбора пользователя
if (listType == 'm')
opArray = maleOptions;
else
opArray = femaleOptions;
for (var i = 0, n = opArray.length; i < n; i++) {
//создаем элемент
var op = document.createElement('option')
op.innerHTML = opArray[i];
//добавляем в новый элемент в конец списка
oSelect.appendChild(op);
}
//список еще не виден. добавляем его в родительский узел
document.getElementById('divList').appendChild(oSelect);
}
</script>
</body>
</html>
В этом же примере использовано свойство innerHTML, не являющееся частью DOM-модели, но поддерживаемое большинством браузеров. Это свойство содержит весь HTML-код (включая текст и разметку) между открывающим и закрывающим тэгами элемента (но не сами тэги). Использование innerHTML существенно упрощает процесс программирования и поэтому весьма популярно.
window, history, navigator, document, location, screen.window.cookie? Как создавать и читать cookies?id?innerHTML?Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.