Єдність у різноманітті, Статті, JavaScript / VBScript, статті

Сучасні гіпертекстові інформаційні системи умовно можна представити у
вигляді сукупності кількох компонентів: систем зберігання гіпертекстових
об'єктів, систем відображення гіпертекстових об'єктів, систем підготовки
гіпертекстових об'єктів і систем програмування перегляду сукупності
гіпертекстових об'єктів. З цієї точки зору, технологія World Wide Web тільки до
1996 році отримала закінчений, функціонально повний вид. Першими були
розроблені системи зберігання й перегляду (1989-1991), які продовжують
розвиватися і в даний час. Після 1990 року почали з'являтися перші системи
підготовки документів. Нарешті, в 1995 році були запропоновані перші мови
управління сценаріями перегляду. У даній статті мова піде саме про одне з
них – JavaScript.

Програмування процедури перегляду гіпертекстової бази даних не є
винаходом Netscape, Microsoft або Sun. Практично всі локальні
гіпертекстові системи в тій чи іншій мірі мають програмні засоби
маніпулювання гіпертекстовими об'єктами.

У ряді випадків вся гіпертекстова база даних може бути представлена ​​як
одна велика програма, в якій гіпертекстові вузли – це програмні модулі,
а зв'язки між ними – це передача керування від одного модуля іншому.

Переваги такого підходу перед традиційної статичної розміткою
очевидні: гнучкість побудови гіпертекстової мережі, можливість створення програм
прокручування фрагментів бази даних, генерація складових гіпертекстових об'єктів з
існуючих елементарних компонентів. Динамічні об'єкти можуть бути легко
отримані з статичних, так як у випадку існування браузера система може
бути переведена з інтерактивного режиму перегляду гіпертекстової бази даних в
пакетний, коли дії оператора будуть замінюватися командами програми.

Браузери гіпертекстових сторінок традиційно називають скриптами (scripts), по
аналогією з виконуваними файлами, написаними для командних інтерпретаторів типу
sh. Власне, як це було і раніше в локальних системах, в програмуванні
перегляду гіпертекстових документів World Wide Web існують два підходи:
створення інтерпретуються браузером скриптів або компіляція байт-коду. Перший
підхід не виходить за рамки традиції World Wide Web, згідно з якою для
розробки гіпертекстової сторінки потрібний тільки звичайний текстовий редактор, і
сам гіпертекстовий документ повинен легко читатися людиною-оператором. Другий
підхід дозволяє підвищити ефективність виконання програми і захищеність коду
від несанкціонованих модифікацій. Як перший, так і другий способи спираються
на об'єктно-орієнтований підхід до програмування. З приводу байт-кодів,
або, як їх ще називають, мобільних кодів, написано в контексті технології
програмування Java досить багато, тому зосередимо свою увагу на
скриптах, а точніше, на скриптах, написаних на мові JavaScript.

Основи підходу до програмування на JavaScript


Ідея JavaScript дуже проста. Всі операції, які можна виконувати в
програмі на JavaScript, описують дії над добре відомими і зрозумілими
об'єктами, якими є елементи робочої області програми Netscape
Navigator і контейнери мови HTML. Власне об'єктна орієнтованість
JavaScript на цьому і закінчується. Ніяких класів об'єктів, а тим більше,
спадкування в JavaScript немає. Є тільки об'єкти з набором властивостей і набір
функцій над об'єктами, які називаються методами. Крім методів існують і
інші функції, більше схожі на функції із традиційних мов
програмування, які дозволяють працювати зі стандартними математичними
типами або управляти процесом виконання програми. Ще в JavaScript є
події – аналог програмних переривань. Ці події також орієнтовані на
роботу в World Wide Web, наприклад завантаження сторінки в робочу область Navigator
або вибір гіпертекстового посилання. Використовуючи події, автор гіпертекстової
сторінки і програми, її відображає, може організувати перегляд динамічних
об'єктів, наприклад рухомого рядка, або управління багатовіконний інтерфейсом.

Для вбудовування скриптів в тіло HTML-документа використовується контейнер SCRIPT.
Не всі браузери здатні розпізнавати і виконувати скрипти, тому саме тіло
скрипта поміщається в контейнер коментар. Розглянемо приклад 1.

У цьому прикладі в заголовок документа (контейнер HEAD) включений контейнер
SCRIPT. До недавнього часу атрибут LANGUAGE у цьому контейнері не був
обов'язковим. Але з моменту виходу VBSCRIPT з'явився сенс у вказівці типу мови
– Navigator не розуміє скриптів на інших мовах. Відсутність атрибута може
привести до помилок при відображенні гіпертекстових сторінок.

Далі, в тексті сторінки визначений коментар, в який включено текст
скрипта. Починається коментар з рядка:

<!- The JavaScript Function Definition

І закінчується рядком:

// The end of JavaScript Functions Definition ->

Всередині контейнера SCRIPT визначені дві функції користувача: 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 вікно не створюється, а текст завантажується в
вже відкрите вікно.

Приклади скриптів.


Калькулятор


Теоретизувати на предмет написання скриптів на JavaScript можна довго. Але
найпродуктивніший спосіб отримати уявлення про мову – це розбір прикладів.
Якщо подивитися на список цих прикладів, який можна знайти у відповідній
директорії Yahoo, легко переконатися, що найбільше там різного сорту
калькуляторів. Розберемо програму такого ж типу, тільки це буде не
калькулятор, а програма навчання усного рахунку.

Наведений приклад 2 містить датчик випадкових чисел (функції init і rand),
таблицю, що реалізує функції кнопок клавіатури, і блок перевірки результату
обчислень. Після завантаження програми користувач повинен вибрати тип обчислень
(+,-), Інтервал обчислень (у межах 10, 20, 100) і натиснути кнопку "?" для
генерації прикладу. Після введення числа з відображуваної клавіатури користувач
натискає на символ "=", що означає виконати, і система перевіряє правильність
відповіді. Якщо відповідь правильна, то програма видає "Молодець!", Якщо ні –
"Думай!". В системі Windows 3.x немає вбудованого датчика випадкових чисел, тому
стандартна функція rand у цій версії JavaScript не реалізована. Використовуваний в
даній програмі датчик був запозичений з телеконференції по JavaScript. В
скрипті, крім цього, застосовуються об'єкт типу "дата" і його методи, а також
вбудовані функції контролю введених даних. Як випливає з прикладу, звернення
до полів HTML-форми являє собою звернення до структури, коренем якої
є об'єкт "вікно", в якому визначено об'єкт "документ", всередині якого
визначена форма, а також її поля й атрибути полів. Не у всіх полів можна міняти
значення атрибутів, так, наприклад, атрибут VALUE у кнопці не міняє свого
значення, якщо тільки не перезавантажити сторінку.

Біжучий рядок


Інший часто зустрічається приклад – рухомий рядок. Рядок може бігти або
в поле статусу (низ екрана), або всередині поля форми. Розглянемо приклад 3.1.

Тут наведено фрагмент сторінки компанії "Демос", розроблений Дмитром
Алтухова (ady@demos.su). Як видно з цього прикладу, прокрутка здійснюється
за рахунок зміни змісту відображуваної змінної msg1. Запускається біжучий
рядок у момент завантаження сторінки по події onLoad. З коментарю наприклад
випливає, що автор не несе відповідальності за проблеми, які може даний
скрипт породити при його відображенні браузером на комп'ютері користувача.
Власне проблема викликана застосуванням функції setTimeout. Спочатку
передбачалося, що пбраузер, який підтримує JavaScript, буде виконуватися
в середовищі багатопоточних операційних систем. У цьому випадку до моменту породження
нового потоку старий уже завершиться, і setTimeout буде, таким чином,
породжувати послідовно виконувані потоки. Однак при реалізації JavaScript в
Netscape Navigator 2.0 не все було виконано акуратно, і setTimeout стала
просто "пожирати" ресурси комп'ютера. Системи Windows 3.x взагалі не є
багато-, і в них просто відбувається переповнення стека при виконанні
даного скрипта. Все питання полягає тільки в тому, як швидко "впаде"
система, а це залежить від обсягу виконуваної по setTimeout функції. Самое
Найкраще, що можна порадити, якщо раптом на екрані з'являється прокрутка, –
швидше залишити таку сторінку. Справедливості заради, варто відзначити, що
прокручування можна організувати і іншими способами, тому її поява не
обов'язково повинно викликати крах системи або браузера.

Прокручувати можна і вертикальні фрагменти. Досягається це за рахунок
використання полів типу TEXTAREA (приклад 3.2).

Власне все організовано так само, як і в попередньому прикладі, тільки
прокрутка здійснюється в поле форми; для цього поля введений параметр перенесення
тексту на новий рядок, ширина поля підібрана під розмір виведених рядків.
Прокрутка здійснюється як за подією onLoad, так і при натисканні на кнопку
Start / Stop. У цьому випадку не треба негайно залишати сторінку із прокручуванням –
достатньо просто її зупинити.

Ті, що йдуть годинники


Інший, часто зустрічається приклад на сторінці зі скриптами JavaScript –
йдуть годинник (приклад 4).

У цьому прикладі реалізовано відразу три прийоми використання JavaScript: годинник,
біжучий рядок і попередження.

Годинники реалізовані в рядках, які слідують за коментарем "/ / Clock". У них
також застосовується функція setTimeout і об'єкт DATE. Перш ніж відобразити час,
програма отримує поточне значення часу через об'єкт DATE. Вважається, що
після виконання програми всі об'єкти будуть вилучені з пам'яті, що реально не
завжди відбувається. Для відображення часу використовуються методи, які
визначені для об'єкта DATE. Значення годин хвилин і секунд об'єднуються в рядок
за допомогою операції конкатенації "+", і результат відображається в полі форми.

Про біжучому рядку ми вже говорили досить докладно, тому тепер
пропоную звернути увагу на функцію alert у формі kuku. Це вбудована в
JavaScript функція, яка попереджає користувача про те, що він запускає
на сервері програму.

Мінімізація-максимізація вікна і його видалення


Виконання обчислень і робота з таблицями дуже популярні, але не настільки
значимі, як управління вікнами браузера. Розглянемо приклад такого управління.
Ідея полягає в тому, щоб засобами JavaScript реалізувати "згортання" і
"Розгортання" вікна браузера. Приклади 5.1 та 5.2 демонструють пов'язані один з
іншому HTML-сторінки.

Приклад 5.1 згортає вікно. Для цієї мети спочатку створюється маленьке вікно з
іконкою, а потім поточне вікно віддаляється. Насправді в даному випадку
надійність роботи цього скрипта буде залежати від алгоритму інтерпретації та
призначень поточного вікна програмою інтерпретації. В Netscape Navigator 2.0
поточним залишалося вікно, в якому виповнюється скрипт, тому наша програма
буде працювати правильно. Маленьке вікно стає поточним тільки після
видалення великого вікна.

Максимізація вікна показана на прикладі 5.2. Даний фрагмент за алгоритмом точно
збігається з попереднім, але виконує прямопротівоположная функцію –
розгортає (відновлює) згорнуте вікно. При цьому маленьке вікно також
видаляється. Власне, перша сторінка – це файл iconize.htm, а друга –
test_icon.htm.

Використання вікон для побудови HELP


На закінчення повернемося до першого прикладу. У ньому був описаний виклик, який
призводить до відкриття вікна контекстного help і завантаження в нього HTML-сторінки. На
цій сторінці є форма з кнопкою close, при натисканні на яку поточне вікно
закривається. Так як в цьому випадку поточним є вікно з help, то закривається
саме воно. Все це чудово, якщо не використовуються фрейми в help. При
застосуванні фреймів поточним вікном буде не головне вікно, а вікно фрейма. Якщо help
складається з декількох фреймів, то просте виконання функції window.close () не
призведе до очікуваного результату – закриття всього вікна. Коректніше все буде
завантажити у вікно-попередник (ім'я за умовчанням – _parent) порожню сторінку,
зробити її поточної і після цього видалити. Вся сторінка, що видаляє вікно _parent,
складається з контейнера SCRIPT (приклад 6).

Взагалі кажучи, використовувати такі сторінки-термінатори слід акуратно.
Адже завантаження цієї сторінки може призвести до завершення роботи браузера, якщо
інших відкритих сторінок у даний момент немає.

Написання даних скриптів змушує жалкувати про те, що в JavaScript немає
успадкування. Справа в тому, що, навіть якщо деякий вікно породжене з іншого
вікна, функції, визначені у вікні-батьку, в нове вікно не передаються. Це
означає, що автору доведеться їх дублювати в кожному документі або вдаватися до
допомоги включення файл, що розриває технологічний процес розробки
сторінок.

Єдність у різноманітті


Слід зазначити, що JavaScript – це не єдина мова управління
сценаріями перегляду документів. Microsoft підготувала свою версію аналогічного
мови – VBScript на основі Visual Basic. Крім того, управляти сценарієм
перегляду можна і з Java-аплетів, що, звичайно, складніше, але зате більш надійно
і безпечно. При цьому програміст одержує всі переваги спадкування та
інші атрибути об'єктно-орієнтованого програмування. Зрештою, для
створення фреймів і вікон можна використовувати атрибути відповідних контейнерів
HTML, які дозволяють ділити робочу область екрана на фрагменти, перекривати
об'єкти і відновлювати первісний вид сторінки. Таким чином, до
теперішнього часу існує щонайменше три способи керування сценаріями
перегляду гіпертекстових баз даних Web, кожний з яких по-своєму гарний.
Який з них вибрати – це справа автора Website.


Павло Храмцов – керівник групи РНЦ "Курчатовський інститут". З ним можна
зв'язатися електронною поштою: paul@kiae.su


Приклад 1.

<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="http://www.ishodniki.ru/"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 ENGINE=button
VALUE=Next onClick="main_menu()">
</ TD> <TD> <INPUT NAME=help ENGINE=button VALUE=Help onClick="help_win()"> </ TD>
</TR>
</TABLE>
</FORM>
<hr>
</CENTER>
</BODY>
</HTML>


Приклад 2.

<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 cho-
//sen. 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 = "L —— р!"
}
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 ENGINE=button VALUE="0-10" onClick="max_value=10"> </ TD>
<TD> <INPUT NAME=i20 ENGINE=button VALUE="0-20" onClick="max_value=20"> </ TD>
<TD> <INPUT NAME=i100 ENGINE=button VALUE="0-100" onClick="max_value=100"> </ TD>
<TD> <INPUT NAME=i+ ENGINE=button VALUE="+" onClick="set_sign("+")"> </ TD>
<TD> <INPUT NAME=i- ENGINE=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 ENGINE= button VALUE = "?" onClick = "main_calc ()">
<TD><INPUT NAME=r0 VALUE="???">
</TR>
</TABLE>
<HR>
<TABLE BORDER=2>
<TR>
<TD> <INPUT NAME=b1 ENGINE=button VALUE="1" onClick="input_sign("1")"> </ TD>
<TD> <INPUT NAME=b2 ENGINE=button VALUE="2" onClick="input_sign("2")"> </ TD>
<TD> <INPUT NAME=b3 ENGINE=button VALUE="3" onClick="input_sign("3")"> </ TD>
</TR>
<TR>
<TD> <INPUT NAME=b4 ENGINE=button VALUE="4" onClick="input_sign("4")"> </ TD>
<TD> <INPUT NAME=b5 ENGINE=button VALUE="5" onClick="input_sign("5")"> </ TD>
<TD> <INPUT NAME=b6 ENGINE=button VALUE="6" onClick="input_sign("6")"> </ TD>
</TR>
<TR>
<TD> <INPUT NAME=b7 ENGINE=button VALUE="7" onClick="nput_sign("7")"> </ TD>
<TD> <INPUT NAME=b8 ENGINE=button VALUE="8" onClick="input_sign("8")"> </ TD>
<TD> <INPUT NAME=b9 ENGINE=button VALUE="9" onClick="input_sign("9")"> </ TD>
</TR>
<TR>
<TD> <INPUT NAME=b0 ENGINE=button VALUE="0" onClick="input_sign("0")"> </ TD>
<TD COLSPAN=2> <INPUT NAME=bs ENGINE=button VALUE="OK" onClick="input_sign("10")"> </ TD>
</TR>
</TABLE>
</FORM>
</CENTER>
<HR>
</BODY>
</HTML>



Приклад 3.1

<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>


Приклад 3.2

<HTML>
<!- Author: Pavel Khramtsov
Date: February 25, 1996 ->
<HEAD>
<TITLE>Text Block Scrolling</TITLE>
<SCRIPT LANGUAGE="JavaScript">
var line_beak = "
"; var screen = ""
//123456789012345678901234567890
screen + = "Будемо прокручувати"
screen + = "Даний фрагмент тексту"
screen + = "У полі типу"
screen += "TEXTAREA"
screen + = "Форми term"
for(i=0;i<6;i++) screen += " "

var i=0; var j=40; flag = 0
function scroll(){
if( flag== 0){
display_str = ""
for(k=0;k<11;k++){
display_str += screen.substring(i,j)
i+=40; j=i+40; if(i>400) i = 0
}
window.document.term.work_field.value = display_str; i + = 40; if (i> 400) i = 0
}
id = setTimeout("scroll()",1000); return true
}
function change_button(){
if(flag==0){
flag = 1; return true
}
if(flag == 1){
flag = 0; return false
}
}
</SCRIPT>
</HEAD>
<BODY onLoad="scroll()">
<CENTER>
<H1>Text Block Scrolling.</H1>
<HR>
<FORM NAME=term>
<TEXTAREA NAME=work_field COLS=40 ROWS=10 WRAP=ON> </ TEXTAREA>
<P>
<INPUT NAME=alarm VALUE="Start/Stop" ENGINE=button onClick="change_button()">
</FORM>
</CENTER>
<HR>
</BODY>
</HTML>



Приклад 4

<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 ENGINE=SUBMIT NAME=SABMIT VALUE=SUBMIT> Make a clock here:
<INPUT NAME=f_clock maxlength=8 size=8>
<P>
<INPUT NAME=adv_string maxlength=45 size=45>
<INPUT NAME=i_field size=10> </FORM> </BODY>
</HTML>


Приклад 5.1

<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()">
</fomr>
</BODY>
</HTML>


Приклад 5.2

<HTML>
<!-
Author: Pavel Khramtsov
Date: 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()">
<imgsrc=”http://www.ishodniki.ru/back.jpg></a>
</center>
</BODY>
</HTML>


Приклад 6

<HTML>
<HEAD>
<TITLE>page terminator</TITLE>
</HEAD>
<BODY>
<SCRIPT>
window.close()
</SCRIPT>
</BODY>
</HTML>

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*