Введение в JavaScript для Мага
Шрифт:
В последующих строках скрипта с помощью вызова document.write формируется текст нового документа:
// генерировать новый документ
myWin.document.write("<html><head><title>On-the-fly");
myWin.document.write("</title></head><body>");
myWin.document.write("<center><font size=+3>");
myWin.document.write("This HTML-document has been created ");
myWin.document.write("with the help of JavaScript!");
myWin.document.write("</font></center>");
myWin.document.write("</body></html>");
Как
По завершении этого мы обязаны вновь закрыть документ. Это делается следующей командой:
// закрыть документ — (но не окно!)
myWin.document.close;
Как я уже говорил, Вы можете не только динамически создавать документы, но и по своему выбору размещать их в в том или ином фрейме. Например, если Вы получили два фрейма с именами frame1 и frame2, а теперь во frame2 хотите сгенерировать новый документ, то для этого в frame1 Вам достаточно будет написать следующее:
parent.frame2.document.open;
parent.frame2.document.write("Here goes your HTML-code");
parent.frame2.document.close;
Динамическое создание VRML-сцен
Чтобы продемонстрировать гибкость языка JavaScript, давайте теперь попытаемся динамически создать сцену на языке VRML. Напомним, что аббревиатура VRML расшифровывается как язык моделирования виртуальной реальности. То есть это язык для создания трехмерных сцен. Можно, например, взять очки виртуальной реальности и наслаждиться прогулкой по таким сценам… Возьмем самый простой пример — голубой куб.
Тем не менее, чтобы рассмотреть его, понадобится программная приставка VRML к Вашему браузеру (plug-in). Предлагаемый Вашему вниманию скрипт не проверяет, а доступен ли браузеру plug-in VRML (впрочем сделать это — вовсе не проблема).
Исходный код скрипта:
<html>
<head>
<script language="JavaScript">
<!- hide
function vrmlScene {
vrml= open("", «displayWindow»,
"width=500,height=400,status=yes,toolbar=yes,menubar=yes");
// открыть document для последующего вывода информации
vrml.document.open("x-world/x-vrml");
vr= vrml.document;
// создать сцену VRML
vr.writeln("#VRML V1.0 ascii");
// Освещение
vr.write("Separator { DirectionalLight { ");
vr.write("direction 3–1 -2.5 } ");
// Камера
vr.write("PerspectiveCamera { position -8.6 2.1 5.6 ");
vr.write("orientation -0.1352 -0.9831 -0.1233 1.1417 ");
vr.write("focalDistance 10.84 } ");
// Куб
vr.write("Separator { Material { diffuseColor 0 0 1 } ");
vr.write("Transform { translation -2.4.2 1 rotation 0 0.5 1.9 } ");
vr.write("Cube {} } }");
// Закрыть document — (но не окно!)
vrml.document.close;
}
// — >
</script>
</head>
<body>
<form>
<input type=button value="VRML on-the-fly" onClick="vrmlScene">
</form>
</body>
</html>
Как
// открыть document для последующего вывода информации
vrml.document.open("x-world/x-vrml");
В предыдущих примерах мы не указывали в скобках ничего. Что же тогда означает новая запись "x-world/x-vrml"? На самом же деле, с помощью этой инструкции мы задаем тип MIME для документа, который хотим создать. То есть, тем самым мы сообщаем браузеру, какого типа данные будут ему сейчас переданы. Если же мы в этом месте не определили в скобках конкретный тип MIME, то по умолчанию для нового документа будет выбран тип "text/html" (а это как раз и есть тип MIME для файлов HTML).
(Есть несколько способов выяснить, что же означает тот или иной тип MIME — в самом же браузере содержится список распознаваемых MIME. Вы можете извлечь этот список из пунктов меню option или preference.)
Для создания трехмерной сцены мы должны составить инструкцию vrml.document.write. Но поскольку это кажется слишком длинным, то мы просто определяем переменную vr= vrml.document. И затем вместо vrml.document.write мы пишем просто vr.write.
Закончив это, мы можем писать обычные инструкции на языке VRML. Я не собираюсь описывать здесь элементы сцен VRML. А для желающих познакомиться с ними в Интернет имеется несколько хороших источников информации. Обычный же текст на языке VRML выглядит следующим образом:
#VRML V1.0 ascii
Separator {
DirectionalLight { direction 3–1 -2.5 }
PerspectiveCamera {
position -8.6 2.1 5.6
orientation -0.1352 -0.9831 -0.1233 1.1417
focalDistance 10.84
}
Separator {
Material {
diffuseColor 0 0 1
}
Transform {
translation -2.4.2 1
rotation 0 0.5 1.9
}
Cube {}
}
}
А это как раз и есть тот код, который мы выводим на экран с помощью команды document.write.
Впрочем, совершенно бессмысленно динамически создать сцену, которую с тем же успехом можно загрузить и как обычный VRML-файл (cube.wrl). Интереснее будет, если Вы, например, сделаете форму, где пользователь будет иметь выбор из различных объектов — например, между сферой, цилиндрому, конусом и т. д. — а JavaScript на основе этих данных всего лишь сгенерирует соответствующую трехмерную сцену (например, так я поступаю в своей книге о JS).
Часть 5: Строка состояния и таймеры
Строка состояния
Составленные Вами программы на JavaScript могут выполнять запись в строку состояния — прямоугольник в нижней части окна Вашего браузера. Все, что Вам необходимо для этого сделать — всего лишь записать нужную строку в window.status. В следующем примере создаются две кнопки, которые можно использовать, чтобы записывать некий текст в строку состояния и, соответственно, затем его стирать.
Я снова граф. Книга XI
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Любовная лирика классических поэтов Востока
Поэзия:
поэзия
рейтинг книги
Воронцов. Перезагрузка. Книга 2
2. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 37
37. История Телепата
Фантастика:
фэнтези
аниме
боевая фантастика
рейтинг книги
Экспансия
8. Цитадели гордыни
Фантастика:
героическая фантастика
боевая фантастика
рейтинг книги
Последний реанорец. Том IX
8. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Зимний спиннинг
Дом и Семья:
хобби и ремесла
рейтинг книги
Воронцов. Перезагрузка
1. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
рейтинг книги
Газлайтер. Том 19
19. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Я уже царь. Книга XXIX
29. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Тайные силы в истории России
Документальная литература:
публицистика
рейтинг книги