строка (
В скрипте мы определяем переменную
После того, как мы открыли окно, наступает очередь открыть для записи объект document. Делается это с помощью команды:
// открыть объект document для последующей печати
myWin.document.open();
Здесь мы обращаемся к open() — методу объекта document. Однако это совсем не то же самое, что метод open() объекта window! Эта команда не открывает нового окна — она лишь готовит document к предстоящей печати. Кроме того, мы должны поставить перед
В последующих строках скрипта с помощью вызова
// генерировать новый документ
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>');
Как видно, здесь мы записываем в документ обычные тэги языка HTML. То есть мы фактически генерируем разметку HTML! При этом Вы можете использовать абсолютно любые тэги HTML.
По завершении этого мы обязаны вновь закрыть документ. Это делается следующей командой:
// закрыть документ — (но не окно!)
myWin.document.close();
Как я уже говорил, Вы можете не только динамически создавать документы, но и по своему выбору размещать их в в том или ином фрейме. Например, если Вы получили два фрейма с именами
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 для вывода него информации. Рассмотрим поподробнее соответствующую команду:
// открыть document для последующего вывода информации
vrml.document.open('x-world/x-vrml');
В предыдущих примерах мы не указывали в скобках ничего. Что же тогда означает новая запись
(Есть несколько способов выяснить, что же означает тот или иной тип MIME — в самом же браузере содержится список распознаваемых MIME. Вы можете извлечь этот список из пунктов меню option или preference.)
Для создания трехмерной сцены мы должны составить инструкцию