русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Динамическое содержимое документа


Дата добавления: 2015-07-09; просмотров: 566; Нарушение авторских прав


 

Исследование объекта Document начнется с метода write(), который позволяет за_ писывать содержимое в тело документа. Этот метод относится к унаследованной части DOM, и начиная с самых ранних версий JavaScript метод document.write() можно было использовать двумя способами. Первый и самый простой способ –


 

316 Глава 15. Работа с документами

вывести HTML_текст из сценария в тело документа, анализ которого производится в текущий момент. Рассмотрим следующий фрагмент, где в статический HTML_ документ с помощью метода write() добавляется информация о текущей дате:

 

<script>

var today = new Date();

 

document.write("<p>Документ открыт: " + today.toString( )); </script>

 

Необходимо отметить, что вывод текста в формате HTML в текущий документ возможен только в процессе его синтаксического анализа. То есть вызывать ме_ тод document.write() из программного кода верхнего уровня в теге <script> можно только в том случае, если исполнение сценария является частью процесса анали_ за документа. Если поместить вызов document.write() в определение функции и затем вызвать эту функцию из обработчика события, результат окажется не_ ожиданным – фактически этот вызов уничтожит текущий документ и все содер_ жащиеся в нем сценарии! (Причины такого поведения вскоре будут описаны.)

 

Метод document.write() вставляет текст в то место HTML_документа, где находит_ ся тег <script>, содержащий вызов метода. Если тег <script> помечен атрибутом defer, он не должен содержать никаких обращений к методу document.write(). Ат_ рибут defer сообщает веб_броузеру, что исполнение сценария может быть отложе_ но до того момента, когда документ будет полностью загружен. Но когда это про_ изойдет, будет уже слишком поздно вставлять дополнительное содержимое в до_ кумент методом document.write(), поскольку разбор документа уже закончится.



 

Использование метода write() для создания содержимого документа в процессе его разбора – это широко распространенная практика JavaScript_программиро_ вания. Ныне стандарт W3C DOM позволяет вставлять содержимое (с помощью описываемых далее приемов) в любую часть документа уже после того, как за_ кончится его анализ. Тем не менее применение метода document.write() по_преж_ нему является делом вполне обычным.

 

Кроме того, метод write() можно использовать (совместно с методами open() и close() объекта Document) для создания полностью новых документов в других окнах и фреймах. Хотя возможность выполнить запись в текущий документ из обработчика события отсутствует, нет никаких причин, которые могли бы вос_ препятствовать выполнить запись в документ в другом фрейме или окне – это может оказаться удобным при создании многооконных веб_приложений или страниц с несколькими фреймами. Например, можно было бы создать всплы_ вающее окно и записать в него некоторый HTML_код следующим образом:

 

// Эта функция открывает всплывающее окно. Она должна вызываться из обработчика события,

 

// в противном случае всплывающее окно, скорее всего, будет заблокировано

function hello() {

var w = window.open(); // Создать новое пустое окно

var d = w.document; // Получить ссылку на объект Document

d.open(); // Начать новый документ (необязательно)

d.write("<h1>Привет, МИР!</h1>"); // Вывести содержимое документа

d.close(); // Закрыть документ

}


 

Чтобы создать новый документ, прежде всего нужно вызвать метод open() объек_ та Document, затем вызвать несколько раз метод write(), чтобы вывести содержи_


 

15.2. Свойства объекта Document
   

 

мое документа, и наконец вызвать метод close() объекта Document, чтобы указать, что работа с документом окончена. Этот последний шаг очень важен – если не за_ крыть документ, броузер будет продолжать показывать, что идет загрузка доку_ мента. Кроме того, броузер может буферизовать только что записанный HTML_ текст и не отображать его, пока документ не будет явно закрыт методом close().

 

В отличие от метода close(), вызывать метод open() не обязательно. Если метод write() вызывается для уже закрытого документа, интерпретатор JavaScript не_ явно открывает новый HTML_документ, как если бы перед первым вызовом write() стоял вызов open(). Это объясняет происходящее, когда вызов метода document.write() производится из обработчика события в том же самом докумен_ те: JavaScript открывает новый документ. В результате текущий документ (и все его содержимое, включая сценарии и обработчики событий) уничтожается. Главное правило, которое следует соблюдать: метод write() никогда не должен вызываться для записи в тот же самый документ из обработчиков событий.

 

Два последних замечания по поводу метода write(). Во_первых, многие еще не понимают, что метод write() способен принимать более одного аргумента. Когда методу передаются несколько аргументов, они выводятся один за другим, как если бы были объединены в одну строку. Например:

 

document.write("Привет, " + username + " Добро пожаловать на мою страницу!");

Этот вызов можно заменить следующим фрагментом:

 

var greeting = "Привет, ";

 

var welcome = " Добро пожаловать на мою страницу!"; document.write(greeting, username, welcome);

 

Во_вторых, объект Document поддерживает еще один метод – writeln(), который идентичен методу write() за исключением того, что после вывода последнего ар_ гумента добавляет символ перевода строки. Это может оказаться удобным, на_ пример, при выводе отформатированного текста в теге <pre>.

 

Полное описание методов write(), writeln(), open() и close() вы найдете в четвер_ той части книги в том разделе, в котором описывается объект HTMLDocument.

 



<== предыдущая лекция | следующая лекция ==>
Работа с документами | Свойства объекта Document


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.