русс | укр

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

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

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

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


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

Встраивание в HTML-документ


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


Для встраивания скриптов в тело HTML-документа используется контейнер SCRIPT. Не все программы просмотра способны распознавать и исполнять скрипты, поэтому само тело скрипта помещается в контейнер комментария. Для определенности рассмотрим небольшой пример:

Пример 2.2

<HTML>
<!-- Author: Pavel Khramtsov Date: March 5, 1996 -->
<HEAD>
<TITLE>Registration</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- The JavaScript Functions Definition
function help_win()
{ Help = window.open("REG_HELP.HTM","Help","scrollbars=yes,resizable=yes")}
function main_menu()
{ Main_menu = window.open("MAIN_M.HTM","Main_menu")}
// The end of JavaScript Functions Definition -->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<TABLE>
<TR><TH>
<IMG SRC="RADLEG3.GIF"></TH><TH><H2>ISTC.
Project RADLEG(#245)</H2>
RRC "Kurchatov Institute"<BR>
<I>Dec, 25, 1995</I>
</TH></TR>
</TABLE>
</CENTER>
<HR>
<CENTER>
<h2>Registration Form</h2>
<hr> ...... Текст страницы. ..... <hr>
<FORM NAME=help_call>
<TABLE BORDER=0>
<TR>
<TD><INPUT NAME=next TYPE=button VALUE=Next onClick="main_menu()"></TD>
<TD><INPUT NAME=help TYPE=button VALUE=Help onClick="help_win()"></TD>
</TR>
</TABLE>
</FORM>
<hr>
</CENTER>
</BODY>
</HTML>

В данном примере в заголовок документа (контейнер HEAD) включен контейнер SCRIPT. До недавнего времени атрибут LANGUAGE в этом контейнере не являлся обязательным. Но с момента появления VBSCRIPT смысл в указании типа языка появился - Navigator не понимает скриптов на других языках. Отсутствие атрибута может привести к ошибкам при отображении гипертекстовых страниц.



Далее в тексте страницы определен комментарий, в который включен текст скрипта. Начинается комментарий со строки:

<!-- The JavaScript Functions Definition

и кончается строкой:

// The end of JavaScript Functions Definition -->

Внутри контейнера скрипта определены две функции пользователя: help_win() и main_menu(). Смысл этих функций достаточно прозрачен. Help_win() предназначена для организации контекстно зависимого help, а main_menu() осуществляет допуск пользователя к главному меню Website. Обе функции используют один и тот же метод open (встроенную в JavaScript функцию, которая определена над объектом window) для того, чтобы открыть новое окно Netscape Navigator и загрузить в него гипертекстовые документы. При этом функция main_menu порождает стандартное окно (с кнопочками, иконками и т.п.), а функция help_win() окно без стандартных атрибутов. У этого окна имеются только линейки прокрутки (scroll bars).

Вызов функций осуществляется после нажатия на соответствующую кнопку, которые определены в HTML-форме help_call. Таким образом выполнение функций будет осуществлено только в том случае, если произойдет событие, описанное атрибутом onClick в контейнере INPUT соответствующего поля формы.

Если быть более точным, то приведенный пример - это фрагмент, реализующий регистрацию пользователя. К моменту его выполнения окно главного меню уже открыто, поэтому создание этого окна при выборе кнопки "NEXT" не происходит, а текст загружается в уже открытое окно.

Примеры скриптов

Теоретизировать на предмет написания скриптов на JavaScrip можно долго. Но самый продуктивный способ получения представления о языке - это разбор примеров. Если посмотреть на список этих примеров, который можно найти в соответствующей директории Yahoo, то больше всего там различного сорта калькуляторов. Разберем программу такого же типа, только это будет не калькулятор, а программа обучения устному счету.

Пример 2.3

<HTML>

<!-- Author: Pavel Khramtsov Date: February 23, 1996
URL: http://144.206.192.100/radleg/mo_input.htm -->
<HEAD>
<TITLE>Проверка устного счета.</TITLE>
<SCRIPT LANGUGE="JavaScript">

<!-- var max_value = 0
var operand1 = 0
var operand2 = 0
var result = 0
var flag = 0
var sign = "+"
var input = ""
var v_date = new Date()
var number = v_date.getTime()
function init(factor)
{var today = new Date()
return (factor*today.getTime()/1000)%30000 }
//Инициализировать счетчик случайных чисел.
IX = init(2)
IY = init(3)
IZ = init(4)
//2, 3, and 4 below were arbitrarily chosen.
//They put some distance between the initial values of IX, IY, and IZ
//Датчик случайных чисел.
function random()

{ IX = Math.floor(171 * IX % 30269)
IY = Math.floor(172 * IY % 30307)
IZ = Math.floor(170 * IZ % 30323)
return ( IX/30269.0 + IY/30307.0 + IZ/30323.0 ) % 1.0 }
//Выбрать сложение или вычитание.
function set_sign(x)
{if( x == "+") { flag = 0 sign = "+" }
if( x == "-")
{ flag = 1 sign = "-" }
return true }
// Определить первый операнд.
function f_operand()

{ operand1 = random()*max_value
return parseInt(operand1) }

// Определить второй операнд.
function s_operand()
{ if(flag == 0) { operand2 = random() * (max_value-operand1)}
else { operand2 = random() * operand1 }
return parseInt(operand2) }

// Проверить введенные данные.
function input_sign(x)

{ if(x == 10) { if(flag == 0)

{ if( operand1+operand2 == parseInt(input))

{ window.document.test.r0.value = "Молодец!" }

else { window.document.test.r0.value = "Думай!?"

 

window.document.test.input = ""; input = "" }}

if(flag == 1) { if( operand1-operand2 == parseInt(input) )

{ window.document.test.r0.value ="__-__-_р!" }
else
{ window.document.test.r0.value = "Думай!?"
window.document.test.input = ""; input = "" } }

return true }
input += x window.document.test.result.value = input
return true }
// Генерация варианта.
function main_calc()
{ operand1 = f_operand()
window.document.test.op1.value = operand1
operand2 = s_operand()
window.document.test.op2.value = operand2
window.document.test.s_sign.value = sign
input = ""
window.document.test.input = ""
window.document.test.r0.value = " ??? "
return true }
// -->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<H1>Математический тест</H1>
<HR>
<FORM NAME=test>
<TABLE BORDER=0>
<TR>
<TD><INPUT NAME=i10 TYPE=button VALUE="0-10"
onClick="max_value=10"></TD>
<TD><INPUT NAME=i20 TYPE=button VALUE="0-20"
onClick="max_value=20"></TD>
<TD><INPUT NAME=i100 TYPE=button VALUE="0-100"
onClick="max_value=100"></TD>
<TD><INPUT NAME=i+ TYPE=button VALUE=" + "
onClick="set_sign('+')"></TD>
<TD><INPUT NAME=i- TYPE=button VALUE=" - "
onClick="set_sign('-')"></TD>
</TR>
</TABLE>
<HR>
<TABLE BORDER=0>
<TR>
<TD><INPUT NAME=op1 SIZE=2 MAXLENGTH=2></TD>
<TD><INPUT NAME=s_sign SIZE=1 MAXLENGTH=1></TD>
<TD><INPUT NAME=op2 SIZE=2 MAXLENGTH=2></TD>
<TD>=</TD>
<TD><INPUT NAME=result SIZE=3 MAXLENGTH=3></TD>
<TD><INPUT NAME=award TYPE=button VALUE=" ? "
onClick="main_calc()">
<TD><INPUT NAME=r0 VALUE=" ??? ">
</TR>
</TABLE>
<HR> <TABLE BORDER=2>
<TR>
<TD><INPUT NAME=b1 TYPE=button VALUE=" 1 " onClick="input_sign('1')"></TD>
<TD><INPUT NAME=b2 TYPE=button VALUE=" 2 " onClick="input_sign('2')"></TD>
<TD><INPUT NAME=b3 TYPE=button VALUE=" 3 " onClick="input_sign('3')"></TD>
</TR>
<TR>
<TD><INPUT NAME=b4 TYPE=button VALUE=" 4 " onClick="input_sign('4')"></TD>
<TD><INPUT NAME=b5 TYPE=button VALUE=" 5 " onClick="input_sign('5')"></TD>
<TD><INPUT NAME=b6 TYPE=button VALUE=" 6 " onClick="input_sign('6')"></TD>
</TR>
<TR>
<TD><INPUT NAME=b7 TYPE=button VALUE=" 7 " onClick="input_sign('7')"></TD>
<TD><INPUT NAME=b8 TYPE=button VALUE=" 8 " onClick="input_sign('8')"></TD>
<TD><INPUT NAME=b9 TYPE=button VALUE=" 9 " onClick="input_sign('9')"></TD>
</TR>
<TR> <TD><INPUT NAME=b0 TYPE=button VALUE=" 0 " onClick="input_sign('0')"></TD>
<TD COLSPAN=2><INPUT NAME=bs TYPE=button VALUE=" OK " onClick="input_sign('10')">
</TD></TR>
</TABLE>
</FORM>
</CENTER>
<HR>
</BODY>
</HTML>

Приведенный здесь пример содержит датчик случайных чисел (функции init и rand), таблицу, реализующую функции кнопок клавиатуры, и блок проверки результата вычислений. После загрузки программы пользователь должен выбрать тип вычислений (+,-), интервал вычислений (в пределах 10, 20, 100) и нажать кнопку "?" для генерации примера. После ввода с отображаемой клавиатуры числа пользователь нажимает на символ "=", что означает "исполнить", и система проверяет правильность ответа. Если ответ правильный, то программа поздравляет фразой "Молодец!", если нет - "Думай!?". В системе Windows 3.x нет встроенного датчика случайных чисел, поэтому стандартная функция rand в этой версии JavaScript не реализована. Используемый в данной программе датчик был позаимствован из телеконференции по JavaScript. В скрипте кроме этого используются объект типа "дата" и его методы, а также встроенные функции контроля вводимых данных. Как видно из примера обращение к полям HTML-формы представляет из себя обращение к структуре, корнем которой является объект окно, в котором определен объект документ, внутри которого определена форма и ее поля и атрибуты полей. Не у всех полей можно менять значения атрибутов, так, например, атрибут VALUE в кнопке не меняет своего значения, если только не перезагрузить страницу.

Другим часто встречающимся примером является бегущая строка. Строка может бежать либо в поле статуса (низ экрана), либо внутри поля формы. Рассмотрим такой пример.

Пример 2.4. Бегущая строка

<HTML>
<!-- ady@demos.su, Saturday, January 20, 1996 7:23:31 PM-->
<!-- Demos WWW cover page -->
<HEAD>
<TITLE>Welcome to Demos Company - Moscow, Russia</TITLE>
<!-- yet another scroller. (C) 1996 Dmitry Altukhov, ady@demos.su -->
<!-- Use this code for whatever purposes... provided that you retain
the copyright notice. I accept no responsibility for any disasters caused by this
monster. Cannot guess any other cool places for scrollers. And MSIE marquee emulation
in JS?! Er... Mozilla clears windows too slow in JS...-->
<SCRIPT LANGUAGE="JavaScript">
<!-- roll it
var rate, pos=0;
function roll()
{ var loop, top, msg1; var msg="Hello World";
for(var i=0; i<10; i++)
{ msg = msg + (" Hello World");}
//move on, make a scrolly... and who said that scrollers suck?! ;-)
top=(130/msg.length)+1;
for(loop=0; loop<top; loop++) msg+=" "+msg;
msg1=msg.substring (pos, pos+130);
window.defaultStatus=msg1;
if (pos++ == 130) pos=0;
//come on, the poor thing can't roll any faster... buy a Ferrari. ;-)
rate=setTimeout("roll()",30);}
// that's all folks ;-)
// end -->
</SCRIPT> </HEAD>
<BODY BACKGROUND="BACK.GIF" BGCOLOR="#FFFFFF" TEXT="#000040" LINK="#000080"
VLINK="#400080" ALINK="#FF0000" onLoad="roll()"> .....
</BODY>
</HTML>

Здесь приведен фрагмент страницы компании Демос разработанный Дмитрием Алтуховым (andy@demos.su). Как видно из этого примера, прокрутка осуществляется за счет изменения содержания отображаемой переменной msg1. Запускается бегущая строка в момент загрузки страницы по событию onLoad. Из комментария к примеру следует, что автор не несет ответственность за проблемы, которые может данный скрипт породить при его отображении программой просмотра на компьютере пользователя. Собственно проблема вызвана применением функции setTimeout. Изначально предполагалось, что программа просмотра, которая поддерживает JavaScript будет исполняться в среде многопотоковых операционных систем. В этом случае к моменту порождения нового потока старый уже завершится и setTimeout будет таким образом порождать последовательно исполняемые потоки. Однако, при реализации JavaScript в Netscape Navigator 2.0 не все было выполнено аккуратно, и setTimeout стала просто "пожирать" ресурсы компьютера. Системы Windows 3.x вообще не являются много поточными и в них просто происходит переполнение стека при выполнении данного скрипта. Весь вопрос заключается только в том, как быстро "упадет" система, что зависит от объема исполняемой по setTimeout функции. Самое лучше, что можно посоветовать, если вдруг на экране появляется прокрутка - поскорее покинуть такую страницу. Справедливости ради следует отметить, что прокрутку можно организовать и другими способами, поэтому ее появление не обязательно должно вызывать крах системы или крах программы просмотра.

Другой часто встречающийся пример на страницах со скриптами JavaScript - идущие часы:

Пример 2.6

<HTML>
<HEAD>
<TITLE> type_Document_Title_here </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--var i=0 adv_message = "advert = "Russian Research Center \"Kurchatov Institute\""
adv_message += advert
adv_message += "
adv_length = advert.length
function move_clock()
{
//
Clock day = new Date()
clock_screen = day.getHours()+":"+day.getMinutes()+":"+day.getSeconds()
document.kuku.f_clock.value = clock_screen
// Rolling Field document.kuku.adv_string.value = adv_message.substring(i,i+45)
document.kuku.i_field.value = i i++
if( i == adv_length + 44 ) i = 0
id = setTimeout("move_clock()",100) }
// end -->
</SCRIPT>
</HEAD>
<BODY onLoad="move_clock()">
This is the start point:<BR>
<a href="#next">This the document start point.</a>
kukuku
<a name=next>
<FORM NAME=kuku onSubmit="alert('You submit data to server')" METHOD="GET">
<INPUT TYPE=SUBMIT NAME=SABMIT VALUE=SUBMIT> Make a clock here:
<INPUT NAME=f_clock maxlength=8 size=8> <P>
<INPUTNAME=adv_string maxlength=45 size=45> <INPUT NAME=i_field size=10>
</FORM>
</BODY>
</HTML>

Пример 2.7. Минимизация, максимизация окна и его удаление.

<HTML>
<!-- Author: HTMLed User Date: May 16, 1996-->
<HEAD>
<title>Iconize</title>
<script language="JavaScript">
function make_icon()
{window.open("TEST_ICON.HTM","test_icon","resizable=yes,scrollbars=no,width=50,height=70")
window.close() }
</script>
</HEAD>
<BODY>
<h1>minimize page</h1>
<form name=icon>
<input name=icon_button type=button value=icon
onClick="make_icon()">
</form>
</BODY>
</HTML>

Пример 2.8. Максимизация окна:

<HTML>
<!-- Author: Pavel Khramtsov : May 16, 1996-->
<HEAD>
<script>
function max_window() {
window.open("ICONIZE.HTM","new","toolbar=yes,scrollbars=yes,directories=yes,
status=yes,menubar=yes,resizable=yes,location=yes,width=700,height=500")
window.close() }
</script>
</HEAD>
<BODY>
<center>
<a href="" onClick="max_window()"><IMG SRC=BACK.JPG></a>
</center>
</BODY>
</HTML>



<== предыдущая лекция | следующая лекция ==>
Наследование кода скриптов различными страницами | Единство в многообразии


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


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

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

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


 


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

 
 

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

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