/
Теги: компьютерные технологии языки программирования трансляторы
ISBN: 5-93772-031-8
Текст
JavaScript
Книга, без которой не обойдется ни один профессиональный
разработчик программного обеспечения для Web!
— Ричард Вагнер, вице-президент по технологиям ш компании Engage Techologies
Наиболее исчерпывающая информация по всем
языковым элементам JavaScript
Изобилие примеров, иллюстрирующих использование
конструкций JavaScript
Подробное описание особенностей реапизации
JavaScript дпя клиентской и серверной сторон
Код коммерческого качества, который может
использоваться при разработке собственных проектов
Исключительно полное описание новейших расширений
DOAI-модепи, реализованной в JavaScript и JScript
Краткое оглавление
Часть I. Обзор JavaScript 23
Глава 1. Основные преимущества JavaScript 24
Глава 2. Языковые конструкции JavaScript 47
Часть II. Программирование на JavaScript 89
Глава 3. Технологии программирования 90
Глава 4. Клиентские сценарии 110
Глава 5. Серверная сторона JavaScript 154
Глава 6. Написание сценариев Windows 174
Часть III. Справочник по JavaScript 183
Глава 7. Ядро JavaScript 184
Глава & Клиентская сторона 395
Глава 9. Серверная сторона 752
Часть IV. Главы с CD-ROM
Глава 10. Ядро DOM 887
Глава 11. DOMHTML 954
Глава 12. События DOM 1177
Глава 13. DOMCSS 1208
Глава 14. Библиотека времени выполнения JScript RunTime 1257
Глава 15. Механизм Windows Script Host 1338
Оглавление
Оглавление
Часть I
Обзор JavaScript 23
Глава 1
Основные преимущества JavaScript 24
Добро пожаловать в JavaScript 25
Технология, основанная на объектах 26
Объектно-ориентированное программирование 26
Объектно-ориентированные
характеристики JavaScript 29
Доступ к объектам 33
Модульное программирование 34
Безопасность 35
Существующие меры безопасности 35
Сегментирование данных 36
Подписанные сценарии 38
Преимущества JavaScript 40
Независимость от платформы 40
Гибкость клиентской и серверной части
языка 41
Область применения JavaScript 41
Расширение возможностей Web-страницы 42
Интерактивная электронная почта 43
Приложения, основанные на Web 44
Написание сценариев для Windows 44
Ресурсы JavaScript 45
Общие сведения 45
Справочная документация 46
Группы новостей 46
Резюме 46
Глава 2
Языковые конструкции JavaScript 47
Что следует знать о синтаксисе JavaScript 47
Точка с запятой 47
Использование дескриптора <script> 48
Комментарии 49
Типы данных и переменные 49
Числа 49
Строки 50
Другие типы данных 51
Обзор переменных 52
Массивы 55
Операции 59
Арифметические операции 59
Строки 63
Присваивание 64
Логические операции 67
Операции сравнения 68
Условный оператор 71
Поразрядные операции 72
Приоритет операций 73
Операторы цикла и условные операторы 73
Условные конструкции 74
Циклы 77
Функции 85
Синтаксис 85
Вызов по значению и вызов по ссылке 85
Возврат значений 87
Функции в роли объектов 88
Резюме 88
Часть II
Программирование на JavaScript 89
Глава 3
Технологии программирования 90
Сравнение по образцу 90
Создание объекта RegExp 91
Создание образцов 91
Проверка на совпадение по образцу 93
События и обработчики событий 94
События 95
Обработчики событий 96
Таймеры 98
Исключения 101
Оператор throw 101
Оператор try...catch 101
Ошибки времени выполнения 102
Блок finally 103
Отладка 105
Программа Microsoft Script Debugger 105
Метод alertO 107
Резюме 109
Глава 4
Клиентские сценарии 110
Браузеры, обеспечивающие поддержку
JavaScript 110
Браузер Netscape Navigator 112
Браузер Internet Explorer 114
Браузер Opera 116
Браузер HotJava 117
Расширенные функциональные возможности
браузера 117
Встроенные функции управления 117
Технология LiveConnect 121
Обработка форм 125
Массив форм 126
Доступ кданным и запись данных 129
Пример формы 131
Обработка Cookie-информации 135
Чтение cookie-информации 137
Запись cookie-информации 138
Окна в действии 138
Отношение родительский/дочерний 139
Создание окон 140
Ограничения 141
Пример применения окон 141
Динамические документы 144
Старый метод 144
Новый метод 146
Использование языка DHTML в различных
браузерах 149
Язык пользовательского интерфейса,
основанный HaXML 152
Что такое XUL 152
Файловая структура и синтаксис 152
Языки XUL и JavaScript 152
Пример использования XUL 153
Резюме 153
Глава 5
Серверная сторона JavaScript 154
Различия между серверной и клиентской
частями JavaScript 154
Серверная среда 155
Различные методы программирования 155
Серверная часть JavaScript для Netscape 156
Оглавление
Поддержка серверов 156
Компиляция сценариев 157
Диспетчер приложений Server Side
JavaScript Application Manager 158
Среда Microsoft ASP 164
Поддержка серверов 164
Область применения языка JScript 164
Проверка среды 165
Область применения серверной части
JavaScript 166
Среда сервера Enterprise Server 166
Среда IIS 171
Резюме 173
Глава 6
Написание сценариев Windows 174
Среда Windows Script Host 174
Архитектура 175
Объектная модель 176
Преимущества и ограничения 176
Компоненты Windows Script Host 176
Объекты 176
Методы запуска сценариев 178
Удаленные сценарии 181
Методы применения удаленных сценариев.... 181
Пример удаленного сценария 182
Резюме 182
Часть III
Справочник по JavaScript 183
Глава 7
Ядро JavaScript 184
@_alpha 164
@Jscript 185
@Jscript_build 185
@Jscript_version 185
@_mac 186
@_mc680x0 186
@_PowerPC 186
@_win16 187
@_win32 187
@_x86 187
@cc_on 188
@if. 188
@set 189
Операции 189
-(вычитание) 189
- (унарное отрицание) 190
-(декремент) 190
! (логическое НЕ) 191
!= (не равно) 191
!== (не идентично) 192
% (остаток от деления) 193
%= (остаток с присваиванием) 193
& (поразрядное И) 193
&& (логическое И) 194
&= (поразрядное И с присваиванием) 195
'(умножение) 195
*= (умножение с присваиванием) 196
, (запятая) 196
/(деление) 196
Г /(многострочный комментарий) 197
// (комментарий) 197
/= (деление с присваиванием) 197
?: (условная операция) 198
Л (поразрядное исключающее ИЛИ) 198
л= (поразрядное исключающее ИЛИ с
присваиванием) 199
| (Поразрядное ИЛИ) 200
|| (логическое ИЛИ) 200
= (Поразрядное ИЛИ с присваиванием) 201
~ (Поразрядное НЕ) 202
+ (сложение) 202
++(инкремент) 203
+= (сложение с присваиванием) 204
< (меньше) 204
« (Сдвиг влево) 204
«= (Сдвиг влево с присваиванием) 205
<= (меньше либо равно) 205
= (присваивание) 206
-= (вычитание с присваиванием) 206
== (равно) 207
=== (идентичность) 208
> (больше) 208
>= (больше либо равно) 208
» (Сдвиг вправо со знаком) 209
» = (Сдвиг вправо со знаком и
присваиванием) 210
>» (Сдвиг вправо с заполнением нулями) 210
>»= (Сдвиг вправо с заполнением нулями
и присваиванием) 211
abstract 211
ActiveXObject 211
Arguments 2i2
Arguments.callee 213
Arguments.caller 214
Arguments.length 215
Array 216
Array.concat() 218
Array.constructor 219
Array.index 219
Array.input 220
Array.join() 220
Array.lastlndex 221
Array.length 221
Array.pop() 221
Array, prototype 222
Array.push() 223
Array.reverseO 223
Array.shift() 224
Array.slice() 224
Array.sort() 225
Array.splice() 226
Array.toSource() 227
Array.toStringO 228
Array.unshift() 229
Array.unwatch() 229
Array.valueOf() 230
Array watch() 230
Automation 230
boolean 231
Boolean 231
Boolean.constructor 232
Boolean.prototype 232
Boolean.toSource() 233
Boolean.toString() 233
Boofean.unwatch() 233
Boolean.valueOf() 234
Boolean.watch() 234
break 235
byte...
case.,
char..
.235
.236
.236
class 236
const 236
continue 236
Date 238
Оглавление
Date.constructor 240
Date.getDate() 241
Date.getDay() 241
Date.getFullYear() 242
Date.getHours() 242
Date.getMillisecondsO 242
Date.getMinutes() 243
Oate.getMonth() 243
Date.getSeconds() 244
Date.getTime() 244
Date.getTimezoneOffeetO 245
Date.getUTCDate() 245
Date.getUTCDayO 246
Date.getUTCFullYear() 246
Date.getUTCHours() 247
Date.getUTCMilliseconds() 247
Date.getUTCMinutes() 247
Date.getUTCMonth() 248
Date.getUTCSeconds() 249
Date.getVarDate() 249
Date.getYear() 250
Date.parse() 250
Date.prototype 250
Date.setDate() 251
Date.setFullYear() 252
Date.setHours() 252
Date.setMilliseconds() 253
Date.setMinutes() 253
Date.setMonth() 254
Date.setSeconds() 254
Date.setTime() 255
Date.setUTCDate() 255
Date.setUTCFullYear() 255
Date.setUTCHoursO 256
Date.setUTCMillisecondsO 256
Date.setMinutes() 257
Date.setUTCMonth() 257
Date.setUTCSeconds() 258
Date.setYear() 258
Date.toGMTString() 259
Date.toLocaleStringO 259
Date.toSource() 259
Date.toString() 260
Date.toUTCString() 260
Date.unwatch() 261
Date.UTC() 261
Date.valueOf() 262
Date.watch 262
debugger 263
decodeURI() 263
decodeURIComponent() 263
default 264
delete 264
do 265
do...while 265
double 265
else 265
encodeURI() 266
encodeURIComponent() 266
enum 267
Enumerator 267
Enumerator.atEnd() 268
Enumerator.item() 268
Enumerator.moveFirstO 269
Enumerator.moveNextO 269
Error 270
Error.description 270
Error.message 271
Error.name 271
Error.number 272
escape() 272
eval() 273
export 273
extends 274
false 274
final 274
float 274
for 274
for...in 275
function 276
Function() 276
Function.applyO 277
Function.arguments 277
Function.arity 278
Function.call() 278
Function.callee 279
Function.caller 279
Function.constructor 280
Function.length 280
Function.prototype 281
Function.toSource() 281
Function.toStringO 282
Function.valueOf() 282
GetObject 282
Global 283
Global.decodeURI() 284
Global.decodeURIComponent() 285
Global.encodeURI() 285
Global.encodeURIComponent() 286
Global.escape() 286
Global.eval() 287
Global.lnfinity 288
Global.isFinite() 288
Global.isNaN() 289
Global.NaN 289
Global.NumberO 290
Global.parseFloat() 290
Global.parselnt() 291
Global.StringO 291
Global.unescape() 291
Global.undefined 292
goto 292
if 292
if..else 293
implements 293
import 293
in 294
Infinity 294
instanceof. 294
int 295
interface 295
isFinite() 295
isNaN() 296
Java 296
javaArray 297
javaArray. length 297
javaArray.toString 298
javaClass 298
javaObject 298
javaPackage 299
JSException 299
JSException.getWrappedException() 300
JSObject 300
JSObject.call() 301
JSObject.equals() 302
JSObject.eval() 302
Оглавление
JSObjectgetMember() 303
JSObject.getSlot() 304
JSObject.getWindow() 304
JSObjectremoveMemberO 304
JSObject.setMember() 305
JSObject.setSlot() 305
JSObject.toString() 306
label 306
long 306
Math() 306
Math.abs() 308
Math.acos() 308
Math.asin() 309
Math.atan() 309
Math.atan2() 310
Math.ceilO 311
Math.cos() 311
Math.E 312
Math.exp() 312
Math.floorO 313
Math.LNIO 313
Math.LN2 314
Math.logO 314
Math.LOGlOE 315
Math.L0G2E 315
Math.maxO 316
Math.min() 317
Math.PI 317
Math.pow() 318
Math.randomO 318
Math.round() 319
Math.sin() 319
Math.sqrt() 320
Math.SQRT1_2 320
Math.SQRT2 321
Math.tan() 321
Math.toSource() 322
Math.toStringO 322
Math.unwatch() 323
Math.watch() 323
NaN 323
native 323
netscape 324
new 324
null 324
Number() 324
Number() 325
Number.constructor 326
Number.MAX_VALUE 326
Number.MIN_VALUE 326
Number.NaN 327
Number.NEGATIVEJNFINITY 327
Number.POSITIVEJMFINITY 328
Number.prototype 328
Number.toExponential() 328
Number.toFixedO 329
Number.toLocaleStringO 329
Number.toPrecision() 329
Number.toSourceO 330
Number.toString() 330
Number.unwatchO 330
Number.valueOf() 331
Number.watch() 331
ObjectO 332
Object.constructor 332
Object.eval() 333
Object.prototype 333
ObjecttoSourceO 333
ObjecttoStringO 334
Object.unwatch() 334
Object. valueOf() 335
Object. watch() 335
package 336
Packages 336
Packages.dassName 336
Packages.java 337
Packages.netscape 337
Packages.sun 338
parseFloat() 338
parselnt() 339
private 339
protected 339
public 339
RegExp() 339
RegExp.S* 341
RegExp.$& 342
RegExp,$_ 342
RegExp.S" 343
RegExp.S1 343
RegExp.$+ 344
RegExp.$1,$2,..$9 344
RegExp.constructor() 345
RegExp.compile() 345
RegExp.exec() 346
RegExp.global 346
RegExp.ignoreCase 347
RegExp.input 347
RegExp.lastlndex 348
RegExp.lastMatch 348
RegExp.lastParen 349
RegExp.leftContext 349
RegExp.multiline 349
RegExp.prototype 350
RegExp.rightContext 351
RegExp.source 351
RegExp.test() 351
RegExp.toSource() 352
RegExp.toString() 352
RegExp.unwatch() 353
RegExp.valueOf() 353
RegExp.watch() 354
return 354
ScriptEngine 355
ScriptEngineBuildVersion 355
ScriptEngineMajorVersion 355
ScriptEngineMinorVersion 356
short 356
static 356
String (Function) 356
String (Object) 357
String.anchor() 359
String.bigO 360
String.blink() 360
String.bold() 360
String.charAt() 361
String.charCodeAt() 361
String.concat() 362
String.constructor 363
String.fixed() 363
String.fontcolor() 363
String.fontsize() 364
String.fromCharCode() 364
String.indexOf() 365
String.italics() 365
String.lastlndexOf() 366
String.length 366
Оглавление
String.linkO 367
String. localeCompareO 367
String.match() 367
String.prototype 368
String. replace() 369
String.search() 370
String.slice() 370
String.small() 371
String.split() 371
String.strike() 372
String.sub() 373
String.substr() 373
String.substringO 373
String.sup() 374
String.toLocaleLowerCase() 374
String.toLocaleUpperCase() 375
String.toLowerCase() 375
String.toSource() 376
String.toString() 376
String.toUpperCase() 377
String.unwatch() 377
String.valueOf() 378
String.watch() 378
sun 379
super 379
switch 379
synchronized 381
this 381
throw 382
throws 383
transient 383
true 383
try...catch...finally 384
typeof 385
undefined 386
unescapeQ 387
var 387
VBArray 388
VBArray.dimensions() 389
VBArray.getltem() 390
VBArray.lbound() 390
VBArray.toArrayO 391
VBArray.ubound() 392
void 393
volatile 393
while 393
with 394
Глава 8
Клиентская сторона 395
Anchor 395
Anchor.name 397
Anchor.text 397
Anchor.unwatchQ 398
Anchor.watch() 399
Anchor.x 399
Anchor.y 400
Applet 400
Area 401
Area.handleEvent() 403
Area.hash 404
Area.host 405
Area.hostname 406
Area.href 407
Area.onDblClick 408
Area.onMouseOut 408
Area.onMouseOver 409
Area.pathname 409
Area.port 410
Area.protocol 411
Area.search 411
Area.target 412
Area.unwatch() 413
Area.watch() 414
Button 415
Button.blur() 416
Button.click() 417
Button.focus() 418
Button.form 418
Button. handleEvent() 419
Button.name 420
Button. onBlur 420
Button.onClick 421
Button. onFocus 421
Button.onMouseDown 421
Button.onMouseUp 421
Button.type 422
Button.unwatch() 423
Button.value 423
Button.watch() 424
Checkbox 425
Checkbox.blur() 426
Checkbox.checked 427
Checkbox.dick() 428
Checkbox.defaultChecked 429
Checkbox.focus() 430
Checkbox.form 430
Checkbox.handleEvent() 431
Checkbox, name 432
Checkbox.onBlur 433
Checkbox.onClick 433
Checkbox.onFocus 434
Checkbox.type 435
Checkbox.unwatch() 435
Checkbox, value 436
Checkbox. watch() 437
Document 437
document.alinkColor 439
document.all 439
document.all.item() 440
document.all.tagsO 440
document.anchors 441
document.anchors. length 442
document.applets 442
document.applets. length 443
document.bg Color 443
document.captureEventsO 444
document.dasses 445
document.closeO 447
document.contextualO 448
document.cookie 448
document.domain 448
document.embeds 449
document.embeds.length 449
document.fg Color 449
document.formName 450
document.forms 450
document.forms. length 451
document.getSelection() 451
document.handleEvent() 452
document, ids 453
document, images 455
document, images.length 455
document. lastModified 455
document, layers 456
document, layers, length 457
document. linkColor 457
8
Оглавление
document, links 458
document, links, length 458
document.onClick 459
documentonDblClick 459
document.onKeyDown 460
document.onKeyPress 461
document.onKeyUp 461
document.onLoad 462
document.onMouseDown 462
document.onMouseUp 463
document.onUnLoad 463
document.open() 464
document.plugins 464
document.plugins.length 465
document, referrer 465
document. releaseEventsQ 465
document. routeEvent() 466
document.tags 468
document.title 470
document.unwatchO 470
document.URL 471
document. vlinkColor 471
document. watch() 471
document. write() 472
document. writelnQ 472
Embed 473
Event 473
event.data 476
event, height 477
event. layerX 477
event. layerY 478
event.modifiers 479
event.pageX 480
event.pageY 480
event.screenX 481
event.screenY 482
event.target 482
event.type 483
event.unwatch() 484
event. watch() 485
event, which 486
event, width 486
EventABORT 487
EventBLUR 487
Event. CHANGE 488
Event. CLICK 489
Event. DBLCLICK 490
Event. DRAGDROP 490
EventERROR 491
Event.FOCUS 491
Event. KEYDOWN 492
Event. KEYPRESS 493
EventKEYUP 494
Event.LOAD 494
Event.MOUSEDOWN 495
EventMOUSEMOVE 495
EventMOUSEOUT 496
Event.MOUSEOVER 496
Event.MOUSEUP 497
EventMOVE 498
Event.RESET 498
Event. RESIZE 499
EventSELECT 500
EventSUBMIT 500
Event.UNLOAD 501
FileUpload 502
FileUpload.blur() 503
FileUpload.focusQ 504
FileUpload.form 504
FiieUpload.handleEvent() 505
FileUpload.name 506
FileUpload.onBlur 506
FileUpload.onChange 507
FileUpload.onFocus 508
FileUpload.select() 508
FileUpload.type 509
FileUpload.unwatch() 509
FileUpload.value 510
FileUpload.watch() 510
Form 511
Form.action 513
Form.elements 513
Form.elements.length 514
Form.encoding 514
Form.handleEventO 515
Form.length 516
Form.method 516
Form.name 517
Form.onReset 517
Form.onSubmit 518
Form.resetQ 518
Form.submitO 519
Form.target 519
Form.unwatehO 520
Form.watchO 521
Frame 521
Frame.blur() 523
Frame.dearlntervalO 523
Frame.dearTimeoutO 523
Frame.document 523
Frame.focusQ 524
Frame.frames 524
Frame.length 524
Frame.name 525
Frame.onBlur 525
Frame.onFocus 525
Frame.onMove 526
Frame.onResize 526
Frame.parent 526
Frame.print() 527
Frame.self 527
Frame.setlnterval() 527
Frame.setTimeoutO 527
Frame.top 528
Frame.unwatch() 528
Frame.watch() 529
Frame.window 529
Hidden 529
Hidden.form 530
Hidden.name 530
Hidden.type 531
Hidden.unwatch() 531
Hidden.value 532
Hidden.watch() 532
History 533
History.back() 533
History.current 534
History .forward() 534
History.go() 535
History.length 535
History.next 535
History.previous 536
History.unwatch() 536
History.watch() 537
Image 537
Image.border 539
Оглавление
Image.complete 539
lmage.handleEvent() 540
Image.height 540
Image.hspace 540
Image.lowsrc 541
Image.name 541
Image.onAbort 541
Image.onError 541
Image.onKeyDown 542
Image.onKeyPress 542
Image.onKeyUp 542
Image.onLoad 542
Image.src 542
lmage.unwatch() 543
Image.vspace 543
lmage.watch() 544
Image.width 544
Layer 545
Layer.above 546
Layer.background 547
Layer.below 547
Layer.bgColor 548
Layer.captureEvents() 549
Layer.clip.bottom 549
Layer.clip.height 550
Layer.dip.left 550
Layer.dip. right 551
Layer.clip.top 552
Layer.clip.width 552
Layer.document 553
Layer.handleEvent() 553
Layer.left 554
Layer.load() 555
Layer.moveAbove() 555
Layer.moveBelow() 556
Layer.moveByO 556
Layer.moveTo() 556
Layer.moveToAbsoluteO 557
Layer.name 557
Layer.onBlur 558
Layer.onFocus 558
Layer.onLoad 559
Layer.onMouseOut 560
Layer.onMouseOver 560
Layer.pageX 561
Layer.pageY 561
Layer.parentLayer 562
Layer.releaseEvents() 563
Layer.resizeBy() 563
Layer.resizeTo() 564
Layer.routeEvent() 564
Layer.siblingAbove 565
Layer.sibling Below 566
Layer.src 566
Layer.top 566
Layer.unwatch() 567
Layer.visibility 568
Layer.watch() 568
Layer.zlndex 569
Link 570
Link.handleEvent() 571
Link.hash 571
Link.host 572
Link.hostname 573
Link.href 573
Link.onClick 574
Link.onDblClick 574
Link.onKeyDown 574
Link.onKeyPress 575
Link.onKeyUp 575
Link.onMouseDown 576
Link.onMouseOut 576
Link.onMouseOver 576
Link.onMouseUp 577
Link.pathname 577
Link.port 578
Link.protocol 579
Link.search 579
Link.target 580
Link.text 580
Link.unwatch() 581
Link.watch() 581
Location 582
Location.hash 583
Location.host 583
Location.hostname 584
Location.href 585
Location.pathname 585
Location.port 586
Location, protocol 586
Location. reload() 587
Location.replace() 587
Location.search 588
Location. unwatch() 588
Location.watchO 589
MimeType 590
MimeType.description 591
MimeType.enabledPlugin 591
MimeType.suffixes 591
MimeType.type 592
MimeType.unwatchQ 592
MimeType.watch() 592
navigator 593
navigator.appCodeName 594
navigator.appName 594
navigator.appVersion 594
navigatorjavaEnabled() 594
navigator.language 595
navigator.mimeTypes 595
navigator.platform 596
navigator.plugins 596
navigator.plugins.refreshQ 596
navigator.preference() 597
navigator.taintEnabled() 597
navigator.userAgent 597
navigator.unwatch() 598
navigator.watch() 598
Option 598
Option.defaultSelected 599
Option.selected 600
Option.text 600
Option.unwatchO 601
Option.value 601
Option.watch() 602
Password 603
Password.blur() 604
Password.defaultValue 604
Password.focus() 604
Password.form 605
Password.handleEvent() 605
Password.name 606
Password.onBlur 606
Password.onFocus 606
Passwo rd.se lect() 607
Password.type 607
Passwo rd.unwatchQ 607
10
Оглавление
Password.value 608
Password.watch() 608
Plugin 609
Plugin.description 610
Plugin.filename 610
Plugin.length 610
Plugin.name 611
Plugin. unwatch() 611
Plugin.watch() 611
Radio 611
Radio.blur() 612
Radio.checked 613
Radio.dick() 613
Radio.defaultChecked 614
Radio.focusO 614
Radio.form 614
Radio.handleEvent() 615
Radio.name 615
Radio.onBlur 616
Radio.onClick 616
Radio.onFocus() 617
Radio.type 617
Radio.unwatch() 617
Radio.value 618
Radio.watchQ 618
Reset 619
Reset.blur() 620
Reset.click() 620
Reset.focus() 621
Reset.form 621
Reset.handleEvent() 622
Resetname 622
Reset.onBlur 623
ResetonClick 623
ResetonFocus 623
Resettype 624
Reset.unwatch() 624
Reset, value 625
Reset. watch() 625
screen 626
screen. availHeight 627
screen.availLeft 627
screen.availTop 628
screen. availWidth 628
screen. colorDepth 628
screen.height 629
Screen.pixelDepth 629
screen. unwatch() 629
screen.watch() 630
screen.width 630
Select 630
Select.blur() 632
Select.focus() 633
Selectform 633
Select.handleEvent() 634
Select.length 635
Select.name 636
Select.onBiur 636
SelectonChange 637
Select.onFocus 638
Selectoptions 639
Select.options.length 640
Select.options.se lectedlndex 640
Select.options.value 640
Select.selectedlndex 641
Selecttype 641
Select.unwatch() 642
Select. watch() 642
Style 643
Style.align 645
Style.backgroundColor 646
Style.backgroundlmage 646
Style.borderBottomWidth 646
Style.borderColor 647
Style.borderLeflWidth 647
Style.borderRightWidth 648
Style.borderStyle 648
Style.borderTopWidth 648
Style.borderWidths() 649
Style.dear 649
Style.color 650
Style.display 650
Style.fontFamily 651
Style.fontSize 651
Style.fontStyle 652
Style.fontWeight 653
Style.lineHeight 653
Style.listStyleType 654
Style.marginBottom 654
Style.marginLeft 655
Style.marginRight 655
Style.margins() 656
Style.marginTop 656
Style.paddingBottom 657
Style.paddingLeft 657
Style.paddingRight 658
Style.paddings() 658
Style.paddingTop 659
Style.textAlign 659
Style.textDecoration 660
Style.textlndent 660
Style.textTransform 660
Style.unwatch() 661
Style.watch() 661
Style.whiteSpace 662
Style.width 662
Submit 663
Submit.blur() 664
Submit.dick() 665
Submit.focus() 666
Submitform 666
Submit.handleEvent() 667
Submit.name 668
SubmitonBlur 668
SubmitonClick 669
Submit.onFocus 670
Submit.type 670
Submit.unwatch() 671
Submit, value 671
Submit.watch() 672
taint() 672
Text 673
Text.blur() 674
Text.defaultValue 675
Text.focus() 675
Text.form 676
Text.handleEvent() 677
Text.name 678
Text.onBlur 678
TextonChange 679
Text.onFocus 680
Text.onSelect 680
Text.select() 681
Texttype 681
Text.unwatch() 682
Text, value 682
Оглавление
11
Text.watch() 683
Textarea 684
Textarea.blur() 685
Textarea.defaultValue 686
Textarea.focus() 687
Textarea.form 687
Textarea.handleEvent() 688
Textarea.name 689
Textarea.onBlur 690
Textarea.onChange 690
Textarea.onFocus 691
Textarea.onKeyDown 692
Textarea.onKeyPress 692
Textarea.onKeyUp 693
Textarea.onSelect 694
Textarea.se lect() 694
Textarea.type 695
Textarea.unwatch() 695
Textarea.value 696
Textarea.watch() 697
untaint() 697
Window 698
window.alert() 701
window.atobO 702
window.back() 702
window.blur() 702
window.btoa() 703
window.captureEventsQ 704
window.dearlnterval() 705
window.dearTimeout() 705
window.dose() 706
window.dosed 707
window.confirm() 708
window.crypto 709
window.crypto.randomO 709
window.crypto.signText() 709
window.defaultStatus 710
window.disableExternalCapture() 710
window.document 711
window.enableExternalCapture() 713
window.find() 714
window.focus() 714
window.forwardO 715
window.frames 715
window.frames.length 716
window.handleEvent() 716
window.history 717
window. home() 718
window.innerHeight 718
window.innerWidth 719
window, length 719
window, location 720
window, locationbar 720
window, locationbar. visible 720
window.menubar 721
window.menubar. visible 721
window.moveBy() 722
window.moveTo() 723
window.name 723
window.offecreenBuffering 724
window.onBlur 724
window.onDragDrop 725
window.onError 725
window.onFocus 725
window.onLoad 726
window.onMove 726
window.onResize 726
window.onUnload 727
window.open() 727
window.opener 730
window.outerHeight 731
window.outerWidth 732
window.pageXOffiset 732
window.pageYOffiset 733
window.parent 734
window.personalbar 734
window.personalbar. visible 735
window.print() 735
window.promptQ 736
window. releaseEvents() 736
window, res izeBy() 737
window, res izeTo() 739
window. routeEvent() 739
window.screenX 740
window.screenY 741
window.scroll() 741
window.scrollbars 742
window.scrollbars.visible 742
window.scrollBy() 743
window.scrollTo() 744
window.self 744
window.setHotKeys() 745
window.setlnterval() 745
window.setResizable() 746
window.setTimeout() 746
window.setZOptionsQ 747
window.status 747
window.statusbar 748
window.statusbar. visible 748
window.stop() 748
window.toolbar 749
window.toolbar. visible 749
window.top 750
window.unwatch() 750
window. watch() 751
window, window 751
Глава 9
Серверная сторона 752
addClientO 752
addResponseHeader() 753
Application 753
Application.ApplicationOnEnd 754
Application .ApplicationOnStart 754
Application.Contents 755
Application.Contents.RemoveO 755
Application.Contents.RemoveAIIQ 755
Application.Lock() 756
Application.StaticObjects 756
Application.UnlockO 756
ASPError 757
ASPError.ASPCode 757
ASPError.ASPDescription 758
ASPError.Category 758
ASPError.Column 758
ASPError. Description 758
ASPError.File 758
ASPError.Line 759
ASPError. Number 759
ASPError.Source 759
ЫоЬО (функция) 759
blob (объект) 760
blob.bloblmage() 761
blob.blobLink() 762
callC() 762
client 763
clientdestroyQ 764
12
Оглавление
dient.expirationQ 765
dient.property 765
dient.unwatch() 765
client. watch() 766
Connection 766
Connection.beginTransactionQ 768
Connection.commitTransaction() 769
Connection. connected() 769
Connection. cursor() 770
Connection.execute() 770
Connection. majorErrorCodeO 770
Connection. majorErrorMessageO 771
Connection. minorErrorCode() 771
Connection. minorErrorMessageO 772
Connection.prototype 772
Connection.release() 773
Connection.rollbackTransactionQ 774
Connection.SQLTable() 774
Connection.storedProcO 775
Connection.toStringO 776
Connection. unwatch() 777
Connection.watch() 778
Cursor 778
Cursor.dose() 780
Cursor.columnName 780
Cursor.columnNameQ 780
Cursor.columnsO 781
cursor.deleteRow() 782
Cursor. insertRow() 782
Cursor.next() 783
Cursor.prototype 784
Cursor.unwatch 784
Cursor. updateRow() 785
Cursor.watch() 786
database 787
dartabase.beginTransaction() 788
database.commitTransaction 789
database.connect() 790
database.connected 791
database.cursor() 791
database.disconnect 792
database.execute() 792
database.majorErrorCodeO 793
database.majorErrorMessage() 793
database.minorErrorCodeO 794
database.minorErrorMessageO 794
database.prototype 794
database.rollbackTransactionO 795
database.SQLTable() 795
database.storedProcO 796
database.storedProcArgsO 797
database.toString() 798
database.unwatch() 799
database.watchO 800
DbPool 800
DbPool.connect() 802
DbPool.connected 803
DbPool.connection 804
DbPool.DbPool() 804
DbPool.disconnect() 806
DbPool.majorErrorCodeO 806
DbPool.majorErrorMessageO 806
DbPool.minorErrorCodeO 807
database.minorErrorMessageO 807
DbPool. prototype 807
DbPool.storedProcArgsO 808
database.toString() 809
dbpool.unwatch() 810
database.watchO 810
debug() 811
deleteResponseHeader() 812
Rle() 812
File.ByteToStringO 814
File.dearErrorO 815
File.dose 815
File.constructor 815
File.eof() 816
File.errorO 816
File.exists() 816
File.flush() 817
File.getLength() 817
File.getPosition() 818
File.open() 818
File.prototype 819
File.read() 820
File.readByte() 820
File.readln() 821
File.setPosition() 821
File.stringToByteO 822
File.unwatch 822
File.watch() 823
File.write 824
File.writeByte() 824
File.writeln 825
flushO 825
getOptionValue() 826
getOptionValueCount() 827
Lock() 827
Lock.constructor 827
Lock.isValid() 828
Lock.lock() 828
Lock.prototype 829
Lock.unlock 829
Lock.unwatch 830
Lock.watch() 831
ObjectContext 831
ObjectContext. OnTransactionAbort 832
ObjectContext. OnTransactionCommit 832
ObjectContextSetAbortO 833
ObjectContext.SetComplete() 833
project 834
project. lock() 834
project.unlock 835
Lock.unwatch 835
project. watch() 835
redirect() 836
registerCFunction() 836
Request 837
Request. BinaryRead() 837
Request. ClientCertificate 838
Request. Cookies 839
Request.Form 839
Request.Form.Form.Count 840
RequestQueryString 840
Request.QueryString.Count 840
Request.ServerVariables 841
RequestTotalBytes 843
Request 843
request.agent 844
request.formkey 844
request. imageX 845
request. imageY 845
request, ip 845
request, method 845
request.protocol 846
request.unwatchQ 846
Оглавление
13
Request. watch() 847
Response 847
Response.AddHeader() 848
Response.AppendToLog() 848
Response. BinaryWrite() 848
Response. Buffer 848
Response.CacheControl 849
Response.Charset 849
Response.Clear() 849
Response.ContentType 850
Response.Cookies 850
Response. End() 850
Response. Expires 850
Response. ExpiresAbsolute 851
Response. Flush() 851
Response. isClientConnected 851
Response.PICS 852
Response. Redirect 852
Response.Status 852
Response.Write() 852
Resultset 853
Resultset.close() 854
Resultset.columnNameO 854
Resultset.columnsO 855
Resultset.next() 856
Resuitset.prototype 856
Resultset.unwatch() 857
Resultset. watch() 858
ScriptingContext 859
SendMail 859
SendMail.Bcc 861
SendMail.Body 861
SendMail.Cc 861
SendMail.constructor 861
SendMail.errorCodeO 862
SendMail.errorMessage() 862
SendMail.Errorsto 863
SendMail.From 863
SendMail.Organization 863
SendMail.prototype 864
SendMail.Replyto 864
SendMail.send() 865
SendMail.Smtpserver 865
SendMail.Subject 865
SendMail.To 866
SendMail.unwatch() 866
SendMail.watch() 866
Server 867
Server.CreateObjectO 867
Server.Execute() 868
Server.GetLastErrorO 868
Server.HTMLEncode() 868
Server.MapPathQ 868
Server.ScriptTimeout 869
Server.TransferO 869
Server.URLEncode() 869
server 869
server.host 870
server, hostname 870
server.lock() 871
server.port 871
server.protocol 871
server.unlock() 871
server.unwatch() 872
SendMail.watch() 872
Session 872
Session.Abandon 873
Session.CodePage 874
Session.Contents 874
Session. Contents.Remove() 874
Session.Contents.RemoveAII() 875
Session.LCID 875
Session.SessionID 875
Session.SessionOnEnd 875
Session.SessionJDnStart 876
Session.StaticObjects 876
Session.Timeout 876
ssjs_generateClientlD() 877
ssjs_getCGIVariable() 877
ssjs_getClientlD() 878
Stproc 878
StprocdoseO 879
StprocoutParamCountO 879
StprocoutParameters 880
Stprocprtotype 880
Stproc.resultSet() 881
StprocreturnValueO 882
Stproc.unwatch() 883
Stproc. watch() 884
write() 884
Часть IV
Главы с CD-ROM 886
Глава 10
ЯДРО DOM 887
Attr 887
Attr.Name 887
Attr.specrfied 888
Attr.value 889
Attr.ownerElement 889
CDATASection 890
CharacterData 890
CharacterData.data 891
CharacterData. length 891
CharacterData.substringDataO 892
CharacterData.appendData() 892
CharacterData. insertData() 893
CharacterData.deleteData() 893
CharacterData. replaceData() 894
Comment 895
Document 895
Document. createAttribute() 896
Document. createAttributeNSQ 897
Document. createCDATASection() 898
Document. createComment() 898
Document, create DocumentFragment() 899
Document. createElementO 899
Document. createElementNS() 900
Document. createEntityReferenceO 901
Document. createProcessinglnstruction() 901
Document. createTextNode() 902
Documentdoctype 903
DocumentdocumentElement 903
Document.getElementByld() 904
DocumentgetElementsByTagNameO 904
DocumentgetElementsByTagNameNSO 905
Document, implementation 906
Document. importNode() 906
DocumentFragment 907
DocumentType 907
DocumentType.entities 908
DocumentType. internalSubset 909
DocumentType. name 909
DocumentType. notations 910
DocumentType.publidd 910
DocumentType.systemld 911
14
Оглавление
DOMException 911
DOMException.code 912
DOMImplementation 913
DOMImplementation.create DocumentO 914
DOMImplementation.createDocumentType() 915
DOMImplementation.hasFeature() 915
Element 916
Element.getAttribute() 917
Element.getAttributeNode() 918
Element.getAttributeNodeNS() 918
ElementgetAttributeNSO 919
Element.getElementsByTagNameO 919
Element.getElementsByTagNameNS() 920
ElementhasAttributeO 920
Element.hasAttributeNS() 921
Element.removeAttributeO 921
ElementremoveAttributeNodeO 922
Element.removeAttributeNSO 922
ElementsetAttributeO 923
Element.setAttributeNode() 923
ElementsetAttributeNodeNSO 924
ElementsetAttributeNSO 925
Element.tagName 925
Entity 926
Entity. notationName 926
Entity.publicld 927
Entity.systemld 927
Entity. Reference 928
NamedNodeMap 928
NamedNodeMap.getNamedltemO 929
NamedNodeMap.getNamedltemNSO 929
NamedNodeMap. item() 930
NamedNodeMap. length 931
NamedNodeMap.removeNamedltemO 931
NamedNodeMap. removeNamedltemNS() 932
NamedNodeMap.setNamedltemO 932
NamedNodeMap.setNamedltemNSO 933
Node 934
Node.attributes 937
Node.appendChild() 937
Node.childNodes 938
Node.doneNode() 938
Node.firstChild 939
Node.hasAttributesO 939
Node.hasChildNodes() 940
Node.insertBeforeO 941
Node.isSupported() 941
Node.lastChild 942
Node.localName 942
Node.namespaceURI 943
Node.nextSibling 943
Node.nodeName 944
Node.nodeType 944
Node.nodeValue 945
Node.normalizeO 945
Node.ownerDocument 946
Node.parentNode 946
Node.prefix 947
Node.previousSibling 948
Node.removeChildO 948
Node.replaceChild() 949
Notation 949
Notation.publicld 950
Notation.systemld 950
Processinglnstruction 951
Processinglnstruction.data 951
Processinglnstruction.target 952
Text 952
Text.splitText() 953
Глава 11
DOM HTML 954
HTMLAnchorElement 955
HTMLAnchorElementaccessKey 956
HTMLAnchorElement.blur() 956
HTMLAnchorElementcharset 957
HTMLAnchorElement. coords 957
HTMLAnchorElementfocusO 958
HTMLAnchorElementhref 958
HTMLAnchorElementhrefLang 959
HTMLAnchorElement. name 959
HTMLAnchorElement. rel 960
HTMLAnchorElement. rev 960
HTMLAnchorElementshape 961
HTMLAnchorElementtablndex 961
HTMLAnchorElement. target 962
HTMLAnchorElement. type 962
HTMLAppletElement 963
HTMLAppletElementalign 964
HTMLAppletElernent.alt 964
HTMLAppletElementarchive 965
HTMLAppletElement. code 965
HTMLAppletElement. CodeBase 966
HTMLAppletElementheight 966
HTMLAppletElement. hspace 967
HTMLAppletElement. name 967
HTMLAppletElementobject 968
HTMLAppletElementvspace 969
HTMLAppletElement. width 969
HTMLAreaElement 970
HTMLAreaElement.accessKey 970
HTMLAreaElernentalt 971
HTMLAreaElement.coords 971
HTMLAreaElementhref 972
HTMLAreaElement. noHref 973
HTMLAreaElement.shape 973
HTMLAreaElement.tablndex 974
HTMLAreaElementtarget 974
HTMLBaseElement 975
HTMLBaseElementhref 975
HTMLBaseElementtarget 976
HTMLBaseFontElement 977
HTMLBaseFontElement.color 977
HTMLBaseFontElement.face 978
HTMLBaseFontElementsize 978
HTMLBodyElement 979
HTMLBodyElernentaLink 980
HTMLBodyElementbackground 980
HTMLBodyElementbgColor 981
HTMLBodyElement. link 981
HTMLBodyElementtext 982
HTMLBodyElement. vLink 982
HTMLBREIement 983
HTMLBREIementdear 983
HTMLButtonElement 984
HTMLButtonElement.accessKey 985
HTMLButtonElement.disabled 985
HTMLButtonElementform 986
HTMLButtonElement. name 986
HTMLButtonElement.tablndex 987
HTMLButtonElementtype 988
HTMLButtonElement. value 988
HTMLCollection 989
HTMLCollection.length 989
HTMLCollection.item() 990
HTMLCollection.namedltemO 991
HTMLDirectoryElement 991
Оглавление
15
HTMLDirectoryElement.compact 992
HTMLDivElement 993
HTMLDivElementalign 993
HTMLDListElement 994
HTMLDListElement.compact 994
HTMLDocument 995
HTMLDocument.anchors 996
HTMLDocumentapplets 997
HTMLDocumentbody 997
HTMLDocumentdoseO 998
HTMLDocumentcookie 999
HTMLDocument.domain 999
HTMLDocument.forms 1000
HTMLDocumentgetElementsByNameO 1000
HTMLDocument.images 1001
HTMLDocument.links 1002
HTMLDocument.open() 1002
HTMLDocument.referrer 1003
HTMLDocumenttitle 1004
HTMLDocumentURL 1004
HTMLDocument. write() 1005
HTMLDocument. writeln() 1005
HTMLDOMImplementation 1006
HTMLDOMImplementation. create HTML
Document() 1007
HTMLEIement 1007
HTMLEIementdassName 1008
HTMLEIementdir 1009
HTMLEIernentid 1009
HTMLEIement. lang 1010
HTMLEIernenttitle 1010
HTMLFieldSetElement 1011
HTMLFieldSetElementform 1011
HTMLFontElement 1012
HTMLFontElement. color 1013
HTMLFontElementface 1013
HTMLFontElementsize 1014
HTMLFormElement 1014
HTMLFormElementacceptCharset 1015
HTMLFormElementaction 1016
HTMLFormElementelements 1016
HTMLFormElementenctype 1017
HTMLFormElement. length 1018
HTMLFormElementmethod 1018
HTMLFormElementname 1019
HTMLFormElement. reset() 1020
HTMLFormElementsubmitO 1020
HTMLFormElement. target 1021
HTMLFrameElement 1021
HTMLFrameElement.contentDocument 1022
HTMLFrameElement.frameBorder 1023
HTMLFrameElementlongDesc 1023
HTMLFrameElement.marginHeight 1024
HTMLFrameElement.marginWidth 1024
HTMLFrameElement.name 1025
HTMLFrameElement.noResize 1025
HTMLFrameElementscrolling 1026
HTMLFrameElementsrc 1026
HTMLFrameSetElement 1027
HTMLFrameSetElement. cols 1028
HTMLFrameSetElement. rows 1028
HTMLHeadElement 1029
HTMLHeadElementprofile 1029
HTMLHeadingElement 1030
HTMLHeadingElement.align 1030
HTMLHREIement 1031
HTMLHREIernentalign 1032
HTMLHREIernentnoShade 1032
HTMLHREIernentsize 1033
HTMLHREIernentwidth 1033
HTMLHtmlElement 1034
HTMLHtmlElementversion 1034
HTMLFrameElement 1035
HTMLIFrameElementalign 1036
HTMLFrameElement. contentDocument 1036
HTMLFrameElementframeBorder 1037
HTMLFrameElementheight 1037
HTMLFrameElementlongDesc 1038
HTMLFrameElementmarginHeight 1038
HTMLFrameElementmarginWidth 1039
HTMLFrameElement. name 1039
HTMLFrameElementscrolling 1040
HTMLFrameElementsrc 1040
HTMLFrameElementwidth 1041
HTMLImageElement 1042
HTMLImageElementalign 1043
HTMLImageElementalt 1043
HTMLImageElementborder 1044
HTMLImageElementheight 1044
HTMLImageElementhspace 1045
HTMLImageElementisMap 1045
HTMLImageElementlongDesc 1046
HTMLImageElementlowSrc 1046
HTMLImageElementsrc 1047
HTMLImageElementuseMap 1047
HTMLImageElementvspace 1048
HTMLImageElementwidth 1048
HTMLInputElement 1049
HTMLInputElementaccept 1050
HTMLInputElementaccessKey 1051
HTMLInputElementalign 1051
HTMLInputElernentalt 1052
HTMLInputElernentblur() 1052
HTMLInputElementchecked 1053
HTMLInputElernentdickO 1053
HTMLInputElementdefaultChecked 1054
HTMLInputElementdefaultValue 1055
HTMLInputElementdisabled 1055
HTMLInputElementfocus() 1056
HTMLInputElementform 1056
HTMLInputElementmaxLength 1057
HTMLInputElementname 1057
HTMLInputElementreadonly 1058
HTMLInputElementselect() 1058
HTMLInputElementsize 1059
HTMLInputElementsrc 1060
HTMLInputElementtablndex 1060
HTMLInputElementtype 1061
HTMLInputElementuseMap 1061
HTMLInputElement value 1062
HTMLIslndexElement 1062
HTMLIslndexElementform 1063
HTMLIslndexElementprompt 1064
HTMLLabelElement 1064
HTMLLabelElementaccessKey 1065
HTMLLabelElementform 1065
HTMLLabelElernenthtrnlFor 1066
HTMLLegendElement 1066
HTMLLegendElementaccessKey 1067
HTMLLegendElementalign 1068
HTMLLegendElementform 1068
HTMLLIEIement 1069
HTMLLIEIementtype 1069
HTMLLIEIernentvalue 1070
HTMLLinkElement 1070
HTMLLinkElementcharset 1071
16
Оглавление
HTMLLinkElementdisabled 1072
HTMLLinkElementhref 1072
HTMLLinkElement.hreflang 1073
HTMLLinkElement.media 1073
HTMLLinkElernentrel 1074
HTMLLinkElementrev 1074
HTMLLinkElement.target 1075
HTMLLinkElement.type 1075
HTMLMapElement 1076
HTMLMapElement.areas 1077
HTMLMapElement. name 1077
HTMLMenuElement 1078
HTMLMenuElement.compact 1078
HTMLMetaElement 1079
HTMLMetaElement.content 1079
HTMLMetaElement.httpEquiv 1080
HTMLMetaElementname 1080
HTMLMetaElement.scheme 1081
HTMLModElement 1082
HTMLModElernentcite 1082
HTMLModElementdateTime 1083
HTMLObjectElement 1083
HTMLObjectElement.align 1084
HTMLObjectElement.archive 1085
HTMLObjectElement.border 1085
HTMLObjectElement.code 1086
HTMLObjectElement. CodeBase 1086
HTMLObjectElement.codeType 1087
HTMLObjectElement.contentDocument 1088
HTMLObjectElernent.data 1088
HTMLObjectElement.dedare 1089
HTMLObjectElement.form 1089
HTMLObjectElernent.height 1090
HTMLObjectElement. hspace 1090
HTMLObjectElement. name 1091
HTMLObjectElementstandby 1091
HTMLObjectElernent.tablndex 1092
HTMLObjectElement.type 1092
HTMLObjectElement. useMap 1093
HTMLObjectElement. vspace 1093
HTMLObjectElement. width 1094
HTMLOListElement 1094
HTMLOListElement.compact 1095
HTMLOListElementstart 1096
HTMLOListElement.type 1096
HTMLOptGroupElement 1097
HTMLOptGroupElementdisabled 1097
HTMLOptGroupElement. label 1098
HTMLOptionElement 1099
HTMLOptionElementdefaultSelected 1099
HTMLOptionElementdisabled 1100
HTMLOptionElement.form 1101
HTMLOptionElement.index 1101
HTMLOptionElernentlabel 1102
HTMLOptionElementselected 1103
HTMLOptionElement.text 1103
HTMLOptionElement. value 1104
HTMLParagraphElement 1105
HTMLParagraphElement.align 1105
HTMLParamElement 1106
HTMLParamElementname 1106
HTMLParamElement. type 1107
HTMLParamElement. value 1108
HTMLParamElement. valueType 1108
HTMLPreElement 1109
HTMLPreElementwidth 1109
HTMLQuoteElement 1110
HTMLQuoteElement.cite 1110
HTMLScriptElement 1111
HTMLScriptElementcharset 1112
HTMLScriptElement.defer 1112
HTMLScriptElement.event 1113
HTMLScriptElementhtmlFor 1113
HTMLScriptElementsrc 1113
HTMLScriptElement.text 1114
HTMLScriptElement.type 1114
HTMLSelectElement 1115
HTMLSelectElement.add() 1116
HTMLSelectElement.blur() 1117
HTMLSelectElementdisabled 1117
HTMLSelectElernentfocusO 1118
HTMLSelectElementform 1118
HTMLSelectElement. length 1119
HTMLSelectElementmultiple 1120
HTMLSelectElement. name 1120
HTMLSelectElementoptions 1121
HTMLSelectElement. remove() 1121
HTMLSelectElementselectedlndex 1122
HTMLSelectElementsize 1123
HTMLSelectElementtablndex 1123
HTMLSelectElementtype 1124
HTMLSelectElementvalue 1125
HTMLStyleElement 1125
HTMLStyleElernent.disabled 1126
HTMLStyleElementmedia 1126
HTMLStyleElernenttype 1127
HTMLTableCaptionElement 1128
HTMLTableCaptionElementalign 1128
HTMLTableCellElement 1129
HTMLTableCellElernentabbr 1130
HTMLTableCellElernent.align 1130
HTMLTableCellElernent.axis 1131
HTMLTableCellElementbgColor 1131
HTMLTableCellElernentcelllndex 1132
HTMLTableCellElernent.ch 1132
HTMLTableCellElement.chOff 1133
HTMLTableCellElementcolSpan 1133
HTMLTableCellElement. headers 1134
HTMLTableCellElernent.height 1134
HTMLTableCellElement. noWrap 1135
HTMLTableCellElement. rowSpan 1135
HTMLTableCellElementscope 1136
HTMLTableCellElement. vAlign 1136
HTMLTableCellElement. width 1137
HTMLTableColElement 1137
HTMLTableColElernent.align 1138
HTMLTableColElement.cn 1138
HTMLTableColElementchOff 1139
HTMLTableColElementspan 1140
HTMLTableColElement.vAlign 1140
HTMLTableColElement.width 1141
HTMLTableElement 1141
HTMLTableElementalign 1143
HTMLTableElementbgColor 1143
HTMLTableElementborder 1144
HTMLTableElementcaption 1144
HTMLTableElement.cellPadding 1145
HTMLTableElement.cellSpacing 1145
HTMLTableElement.createCaption() 1146
HTMLTableElement.createTFoot() 1146
HTMLTableElementcreateTHeadO 1147
HTMLTableElement.deleteCaption() 1147
HTMLTableElement.deleteRow() 1148
HTMLTableElement.deleteTFoot() 1148
HTMLTableElement.deleteTHead() 1149
HTMLTableElementframe 1149
Оглавление
17
HTMLTableElement.insertRow() 1150
HTMLTableElementrows 1151
HTMLTableElement.ru les 1151
HTMLTableElement.summary 1152
HTMLTableElementtBodies 1152
HTMLTableElementtFoot 1153
HTMLTableElernenttHead 1153
HTMLTableElernent. width 1154
HTMLTableRowElement 1154
HTMLTableRowElementalign 1155
HTMLTableRowElementbgColor 1155
HTMLTableRowElement.cells 1156
HTMLTableRowElementch 1156
HTMLTableRowElementchOff 1157
HTMLTableRowElement.deleteCell() 1158
HTMLTableRowElement.insertCell() 1158
HTMLTableRowElement.rowlndex 1159
HTMLTableRowElement.sectionRowlndex 1159
HTMLTableRowElementvAlign 1160
HTMLTableSectionElement 1160
HTMLTableSectionElementalign 1161
HTMLTableSectionElementch 1161
HTMLTableSectionElement.chOff 1162
HTMLTableSectionElement.deleteRow() 1162
HTMLTableSectionElement.insertRow() 1163
HTMLTableSectionElement.rows 1164
HTMLTableSectionElementvAlign 1164
HTMLTextAreaElement 1165
HTMLTextAreaElement.accessKey 1165
HTMLTextAreaElement.blur() 1166
HTMLTextAreaElement.cols 1167
HTMLTextAreaElement.defaultValue 1167
HTMLTextAreaElementdisabled 1168
HTMLTextAreaElement.focus() 1168
HTMLTextAreaElement.form 1169
HTMLTextAreaElement. name 1169
HTMLTextAreaElement. readonly 1170
HTMLTextAreaElement. rows 1170
HTMLTextAreaElement.select() 1171
HTMLTextAreaElement.tablndex 1171
HTMLTextAreaElementtype 1172
HTMLTextAreaElement. value 1172
HTMLTitleElement 1173
HTMLTitleElement.text 1174
HTMLUListElement 1174
HTMLUListElement.compact 1175
HTMLUListElement.type 1175
Глава 12
События DOM 1177
DocumentEvent 1177
DocumentEvent.createEvent() 1177
Event 1178
Event.type 1179
Event.bubbles 1180
Event.cancelable 1180
Event. currentTarget 1181
Event.eventPhase 1182
Event.initEvent() 1182
Event.preventDefault() 1183
Event.stopPropagationO 1184
Event.target 1184
Event. timeStamp 1185
EventException 1186
EventException.code 1187
EventListener 1187
EventTarget 1188
EventTarget.addEventListener() 1189
EventTargetdispatchEventQ 1190
EventTarget.removeEventListenerO 1191
MouseEvent 1192
MouseEventaltKey 1193
MouseEventbutton 1193
MouseEventdientX 1194
MouseEventdientY 1195
MouseEventctriKey 1195
MouseEvent.initMouseEvent() 1196
MouseEvent.metaKey 1196
MouseEvent.relatedTarget 1197
MouseEvent.screenX 1198
MouseEvent.screenY 1198
MouseEventshiftKey 1199
MutationEvent 1199
MutationEventrelatedNode 1201
MutationEvent.attrChange 1201
MutationEvent.attrName 1202
MutationEvent.initMutationEvent() 1202
MutationEvent.newValue 1203
MutationEvent.prevValue 1204
UlEvent 1204
UlEventdetail 1205
UIEvent.initUIEvent() 1205
UlEvent. view 1206
Глава 13
Каскадные списки стилей DOM 1208
Counter 1208
Counter, identifier 1208
Counter. listStyle 1209
Counter.separator 1210
CSSCharsetRule 1210
CSSCharsetRule.encoding 1211
CSSFontFaceRule 1211
CSSFontFaceRule.style 1212
CSSImportRule 1212
CSSImportRule.href 1213
CSSImportRule.media 1214
CSSImportRule.styleSheet 1214
CSSMediaRule 1215
CSSMediaRule.cssRules 1215
CSSMediaRule.deleteRule() 1216
CSSMediaRule.insertRule() 1216
CSSMediaRule.media 1217
CSSPageRule 1217
CSSPageRule.selectorText 1218
CSSPageRule.style 1219
CSSPrimitiveValue 1219
CSSPrimitiveValue.getCounterValueO 1221
CSSPrimitiveValue.getFloatValueO 1222
CSSPrimitiveValue.getRectValueO 1222
CSSPrimitiveValue.getRGBColorValueO 1223
CSSPrimitiveValue.getStringValueO 1223
CSSPrimitiveValue.primitiveType 1224
CSSPrimitiveValue.setFloatValueO 1224
CSSPrimitiveValue.setStringValueO 1225
CSSRule 1226
CSSRule.cssText 1226
CSSRule.parentRule 1227
CSSRule.parentStyleSheet 1228
CSSRule.type 1228
CSSRuleList 1229
CSSRuleList.item() 1229
CSSRuleList. length 1230
CSSStyleDedaration 1231
CSSStyleDedaration.cssText 1232
CSSStyleDeclaration.getPropertyCSSValue()... 1232
CSSStyleDeclaration.getPropertyPriorityO 1233
CSSStyleDedaration.getPropertyValueQ 1234
18
Оглавление
CSSStyleDedaration.itemO 1234
CSSStyleDedaration.length 1235
CSSStyleDeclaration.parentRule 1235
CSSStyleDeclaration.removePropertyO 1236
CSSStyleDedaration.setPropertyO 1236
CSSStyleRule 1237
CSSStyleRule.selectorText 1238
CSSStyleRule.style 1238
CSSStyleSheet.cssRules 1239
CSSStyleSheet.deleteRule() 1240
CSSStyleSheet.insertRule() 1240
CSSStyleSheetownerRule 1241
CSSUnknownRule 1242
CSSValue 1242
CSSValue.cssText 1243
CSSValue.cssValueType 1244
CSSValueList 1244
CSSValueList.item() 1245
CSSValueListlength 1246
DocumentCSS 1246
DocumentCSS.getOverrideStyle() 1247
DOMImplementationCSS 1247
DOMImplementationCSS.createCSSStyle
Sheet() 1248
ElementCSSInlineStyle 1249
ElementCSSInlineStyle.style 1249
Rect 1250
Rectbottom 1251
Rect.left 1251
Rect, right 1252
Recttop 1252
RGBColor 1253
RGBColor.blue 1253
RGBColor.green 1254
RGBColor.red 1254
ViewCSS.getComputedStyle() 1255
Глава 14
JScript RunTime 1257
Dictionary 1258
Dictionary .Add() 1259
Dictionary.Count 1259
Dictionary.Exists() 1260
Dictionary. ltem() 1260
Dictionary. ltems() 1261
Dictionary.KeyO 1262
Dictionary.Keys() 1263
Dictionary.RemoveO 1264
Dictionary.RemoveAIIO 1264
Drive 1265
Drive.AvailableSpace 1266
Drive. DriveLetter 1267
Drive. DriveType 1267
Drive. FileSystem 1268
Drive. FreeS pace 1269
Drive.lsReady 1269
Drive.Path 1270
Drive. RootFolder 1270
Drive.SerialNumber 1271
Drive.ShareName 1271
Drive.TotalSize 1272
Drive.VolumeName 1273
Drives 1273
Drives.Count 1274
Drives. ltem() 1274
File 1275
File.Attributes 1276
File.Copy() 1277
File.DateCreated 1278
File.DateLastAccessed 1279
File.DateLastModified 1279
File.Delete 1280
File.Drive 1281
File.Move() 1281
File.Name 1282
File.OpenAsTextStream() 1283
File.ParentFolder 1284
File.Path 1285
File.ShortName 1285
File.ShortPath 1286
File.Size 1287
File.Type 1287
Files 1288
Files.Count 1289
Files.ltem 1290
FileSystemObject 1291
FileSystemObject.BuildPath() 1292
FileSystemObjectCopyFile 1292
FileSystemObject. CopyFolder() 1293
FileSystemObjectCreateFolderO 1294
FileSystemObjectCreateTextFileO 1295
FileSystemObject. DeleteFile() 1296
FileSystemObject. DeleteFolder() 1297
FileSystemObject. DriveExists() 1297
FileSystemObject. Drives 1298
FileSystemObject. FileExists() 1299
FileSystemObject. FolderExists() 1300
FileSystemObject. GetAbsolutePathName() 1301
FileSystemObjectGetBaseNameO 1301
FileSystemObject. GetDrive() 1302
FileSystemObject. GetDriveName() 1303
FileSystemObjectGetExtensionNameO 1304
FileSystemObject.GetFile() 1304
FileSystemObject. GetFileName() 1305
FileSystemObject. GetFolder() 1306
FileSystemObject. GetParentFolderNameO 1307
FileSystemObject.GetSpecialFolder() 1307
FileSystemObject. GetTempName() 1308
FileSystemObject. MoveFile() 1309
FileSystemObject.MoveFolder() 1310
FileSystemObject.OpenTextFile() 1310
Folder 1311
FolderAttributes 1313
Folder.Copy() 1314
Folder.DateCreated 1314
Folder.DateLastAccessed 1315
Folder.DateLastModified 1316
Folder.Delete() 1316
Folder.Drive 1317
Folder.Files 1317
Folder. IsRootFolder 1318
Folder.Move() 1319
Folder.Name 1319
Folder.ParentFolder 1320
Folder.Path 1321
Folder.ShortName 1321
Folder.ShortPath 1322
Folder.Size 1323
Folder.SubFolders 1324
Folder.Type 1324
Folders 1325
Folders.Add() 1326
Folders.Count 1326
Folders.ltem 1327
TextStream 1328
TextStream.AtEndOfLine 1329
TextStream.AtEndOfStream 1330
Оглавление
19
TextStream.CloseO 1330
TextStream.Column 1331
TextStream.Line 1331
TextStream.Read() 1332
TextStream.ReadAIIO 1333
TextStream.ReadLine() 1333
TextStream.SkipO 1334
TextStream.SkipLine() 1335
TextStream.Write() 1335
TextStream.WriteBlankLinesO 1336
TextStream.WriteLineO 1336
Глава 15
Windows Script Host 1338
Scripting.Signer 1338
WScript 1339
WScriptArguments 1340
WScript. ConnectObject() 1341
WScript. CreateObjectQ 1342
WScript. DisconnectObject() 1343
WScript.Echo() 1343
WScript.FullName 1344
WScript.GetObject() 1344
WScriptlnteractive 1345
WScriptName 1345
WScriptPath 1346
WScript.Quit() 1346
WScriptScriptFullName 1347
WScriptScriptName 1347
WScript.Sleep() 1348
WScriptStdErr 1348
WScriptStdln 1349
WScript.StdOut 1350
WScript. Version 1350
WScript.WshArguments 1351
WScriptWshController 1351
WScript.WshNetwork 1352
WScript.WshShell 1352
WshArguments 1352
WshArguments.Count 1353
WsnArguments.Count() 1354
WsnArguments.ltemO 1354
WshArguments.length 1355
WshArguments.Named 1356
WsnArguments.ShowUsageO 1357
WshArguments.Unnamed 1358
WshArguments.WshNamed 1359
WshArguments.Wshllnnamed 1359
WshController 1359
WshController.CreateScriptO 1360
WshController.WshRemote 1361
WshEnvironment 1361
WshEnvironment.Count() 1363
WshEnvironment. ltem() 1364
WshEnvironment. length 1364
WshEnvironment.RemoveO 1365
WshNamed 1366
WshNamed.Count() 1367
WshNamed.Exists() 1367
WshNamed.ltem 1368
WshNamed.length 1369
WshNetwork 1369
WshNetwork.AddPrinterConnection() 1370
WshNetwork.AddWindowsPrinterConnection(). 1371
WshNetwork.ComputerName 1372
WshNetwork.EnumNetworkDrivesO 1372
WshNetwork.EnumPrinterConnectionO 1373
WshNetwork.MapNetworkDriveO 1373
WshNetwork.RemoveNetworkDriveO 1374
WshNetwork.RemovePrinterConnectionQ 1375
WshNetwork.SetDefaultPrinter() 1375
WshNetwork.UserDomain 1376
WshNetwork.UserName 1376
WshRemote 1377
WshRemote.End 1378
WshRemote.Error (Event) 1378
WshRemote.Error (Property) 1379
WshRemote.Execute() 1380
WshRemote.WshRemoteError 1380
WshRemote.Start 1380
WshRemote.Status 1381
WshRemote.TerminateO 1382
WshRemoteError 1382
WshRemoteError.Character 1383
WshRemoteError.Description 1384
WshRemoteError.Line 1385
WshRemoteError.Number 1385
WshRemoteError.Source 1386
WshRemoteError.SourceText 1387
WshScriptExec 1387
WshScriptExecStatus 1388
WshScriptExecStdErr 1389
WshScriptExecStdln 1390
WshScriptExecStdOut 1390
WshScriptExecTerminateO 1391
WshShell 1392
WshShell.AppActivate() 1393
WshShell.CreateShortcut() 1393
WshShell.CurrentDirectory 1394
WshShell.Environment 1394
WshShell.Exec() 1395
WshShell.ExpandEnvironmentStringsO 1396
WshShell.LogEvent() 1396
WshShell.PopupO 1397
WshShell.RegDelete() 1398
WshShell.RegRead() 1399
WshShell.RegWriteO 1400
WshShell.Run() 1400
WshShell.SendKeys() 1401
WshShell.SpecialFolders 1403
WshShell.WshShortcut 1403
WshShell.WshUriShortcut 1404
WshShell.WshEnvironment 1404
WshShell.WshSpecialFolders 1404
WshShell.WshScriptExec 1404
WshShortcut 1405
WshShortcutArguments 1406
WshShortcut. Description 1406
WshShortcutFullName 1407
WshShortcut. Hotkey 1407
WshShortcutlconLocation 1408
WshShortcut.Save() 1409
WshShortcutTargetPath 1409
WshShortcutWindowStyle 1410
WshShortcutWorkingDirectory 1411
WshSpecialFolders 1411
WshSpecialFolders.Count 1412
WshSpecialFolders. Item 1413
WshSpecialFolders.length 1413
WshUnnamed 1414
WshUnnamed.Count() 1415
WshUnnamed.ltem 1416
WshUnnamed.length 1417
WshUriShortcut 1417
WshUriShortcutFullName 1418
WshUriShortcut.Save() 1419
WshUriShortcutTargetPath 1419
20 Об авторах
Об авторах
Р. Аллеи Вайк (R. Allen Wyke), Дархем, шт. Северная Каролина, - вице-президент
по исследованиям и развитию компании Engage, занимающейся разработкой решений
электронного маркетинга. В рамках своих обязанностей, он совместно с менеджерами
по разработке и сбыту продукции, маркетологами и разработчиками обеспечивает со-
соответствие продукции как на традиционном, так и в онлайновом рынке . Он также
создавал Web-страницы для intranet-сетей по заказу ведущих телекоммуникационных
компаний, а также работал на нескольких Internet-сайтах.
Вайк является автором семи книг по различным Internet-технологиям, включая
Perl, JavaScript и PHP. В прошлом он был автором ежемесячной колонки Webmaster
в SunWorld и еженедельных статей Integrating Windows and Unix (Интеграция Windows
и Unix) на ITworld.com.
Джексон Д. Джнллиам (Jason D. Gilliam) — разработчик программного обеспе-
обеспечения в компании ichat, Inc., в которой создает программное обеспечение органи-
организации бесед (Web-чат) и дискуссионных групп с использованием языков программи-
программирования C++, JavaScript, HTML, а также различных Internet-технологий. Помимо
своей работы в ichat, он разрабатывал многочисленные локальные Web-страницы и
приложения на C++ для телекоммуникационных компаний, а также работал на
нескольких Internet-сайтах других организаций. Джиллиам также был соавтором тре-
третьего издания книги JavaScript Unleashed, Third Edition («JavaScript.Энциклопедия про-
программиста», выпущенная издательством "ДиаСофт" — прим.ред.). Он получил степень
бакалавра в области вычислительной техники в университете шт. Северная Кароли-
Каролина. Джейсон с супругой проживает в г. Кари, шт. Северная Каролина.
Чарлтон Тинг (Charlton Ting), Вена, шт. Вирджиния, - разработчик программно-
программного обеспечения из компании KOZ Inc. Он начал программировать на JavaScript,
начиная с появления первой бета-версии этого языка. Во время разработки прило-
приложений Internet-телефонии для компании Lucent Technologies интенсивно использо-
использовал многие Internet-технологии. Программирует на нескольких языках программиро-
программирования, в частности, Java, C++, Smalltalk, Perl, HTML, XML и Pascal. Получил ученые
степени в области вычислительной техники и электротехники в университете шт. Се-
Северная Каролина.
Шон Майклз (Sean Michaels) — разработчик программного обеспечения из ком-
компании Avesair, Inc., в которой занимается разработкой и реализацией приложений
мобильной коммерции следующего поколения. Активно использует возможности
Internet, начиная с 1994 г., и обладает обширным опытом разработки распределен-
распределенных отказоустойчивых приложений. В течение многих лет в своей работе постоянно
использовал языки Java, C++ и XML. В прошлом был соавтором книг Official Netscape
ONE и Official Netscape Technologies Developer Guide, выпущенных издательством
Netscape Press. В колледже Миллсапс (Джексон, шт. Миссисипи) Майкле получил
ученую степень по латыни, а в колледже шт. Миссисипи — ученую степень в облас-
области компьютерных наук.
Введение С. I
Введение
Добро пожаловать во второе издание справочника по JavaScript! Эта книга была
написана JavaScript-программистами для JavaScript-программистов.Настоящая редак-
редакция была обновлена по сравнению с предыдущей. В нее вошло описание самой пос-
последней версии языка. Книга задумана как справочное пособие по разработке, тести-
тестированию и развертыванию JavaScript-решений на страницах в рамках Web-сайтов.
Целью книги не было обучение читателя программированию. Напротив, она при-
приводит подробности и семантику языка JavaScript, что позволит программистам ис-
использовать язык в соответствии с собственными требованиями. За последние не-
несколько лет язык JavaScript довольно быстро развивался и проникал во все новые
области; в особенности это справедливо в отношении самых современных браузеров
и серверных сред, большинство из которых подробно описываются в книге. Логичес-
Логически книга разделена на три основных части, содержащие описание концепций, тех-
технологий и синтаксиса. Каждая часть является ощутимым шагом на пути изучения и
применения языка.
Часть I, «Общий обзор JavaScript для программиста», служит «мостом» для про-
программистов, которые в настоящее время используют другие языки программирова-
программирования. В ней рассматриваются некоторые методы программирования, например, при-
применение регулярных выражений, обработчиков событий, исключений и даже отладка
программ. Часто программисты не хотят покупать книги по JavaScript для начина-
начинающих, поскольку они уже знают как программировать. Им необходима книга о спе-
специфике языка. Когда они изучат эту специфику и семантику, синтаксис для них не
будет представлять никаких проблем. Эта часть содержит информацию, которая по-
понадобится для перехода от одного языка к другому.
Часть II, «Программирование на JavaScript», рассказывает о преимуществах и
сильных сторонах JavaScri pt. В ней рассматриваются некоторые доводы «за и против»
использования языка в среде клиента, сервера и даже в среде Windows Script Host.
Читатели узнают как использовать JavaScri pt в реальных условиях. В этой части ис-
исследуются некоторые вопросы, связанные с браузерами, а также описывается про-
процесс обработки Web-данных. Кроме того, приводятся примеры доступа к Java-фун-
Java-функциям аплетов и применения серверных сценариев JavaScript в Internet,
корпоративных и межкорпоративных сетях. После изучения этой части читатели смо-
смогут перейти непосредственно к программированию. А после этого осуществляется
плавный переход к последней части книги.
Часть III, «Справочник по JavaScript», является самой объемной и содержит наи-
наиболее полезную информацию для программистов, которые уже используют JavaScript.
Справочный материал отсортирован по объектам. Подробное описание каждого свой-
свойства, метода и события находится под заголовком соответствующего объекта. Кро-
Кроме того, приводится пример использования. Для каждого объекта указывается вер-
версия языка и среда, в которой этот объект (свойство, метод, событие) поддерживается
(браузер, сервер и т.д.).
Эта часть разделена на девять глав. В первой главе рассматриваются основные
объекты JavaScript и их синтаксис. В следующей главе исследуются объекты, харак-
характерные для клиентской части, на базе которой, собственно, и возник язык JavaScript.
Третья, четвертая, пятая и шестая главы этой части посвящены поддержке в
JavaScript объектной модели документа. В седьмой главе рассмотрены серверные
объекты JavaScript для серверов Netscape и iPlanet Enterprise, а также среды актив-
активных серверных страниц (ASP), широко используемой информационными серверами
Internet компании Microsoft. Предпоследняя глава содержит описание объектов JScri pt
C_ d Введение
процесса выполнения. И, наконец, последняя глава посвящается среде Windows
Script Host.
Вот и все! Добро пожаловать в мир JavaScript! Авторы надеются, что для тех чи-
читателей, кто желает получить хорошее справочное пособие по программированию,
эта книга станет одной из самых полезных и необходимых.
Р. Аллен Вайк
Джейсон Джиллиам
Чарлтон Тинг
Шон Майклз
Условные обозначения в книге
й# — пиктограмма, обозначающая подробное описание объекта, функции, мето-
метода или атрибута.
- пиктограмма, обозначающая типовой пример применения объекта, функции,,
метода или атрибута.
Часть I
Обзор JavaScript
В этой части
1. Основные преимущества JevaScript
2. Языковые конструкции JavBScript
Глава 1
Основные преимущества
JavaScript
Сначала были созданы языки ассемблера и транслируемые языки. Затем возник-
возникли языки написания сценариев, такие как sed, awk и Perl, с помощью которых
программисты решали довольно большое разнообразие задач. После этого, в конце
80-х-начале 90-х появилась всемирная сеть Internet, спровоцировавшая технологичес-
технологическую революцию. В результате любой "счастливый обладатель" модема получил воз-
возможность общаться с пользователями, находящимися во всех уголках земного шара.
По мере увеличения количества пользователей Internet, стало очевидным, что бра-
браузеры, с помощью которых производится просмотр информации, требуют внедре-
внедрения дополнительных возможностей.
Несмотря на все преимущества, язык HTML не обеспечивал того инструмента-
инструментария, который был нужен разработчикам при создании Web-страниц и приложений.
Это привело к тому, что для достижения требуемого разработчикам уровня дина-
динамичности некоторых Web-страниц стали использоваться серверные программы, или
как их часто называли, сценарии.
Такие программы помогали Web-разработчикам расширить функциональные воз-
возможности Web-сайтов и обрабатывать передаваемые пользователями данные. Однако
при передаче пользователем ошибочных или неполных данных CGI-сценарии (common
gateway interface — интерфейс общего шлюза) все же формируют и возвращают не-
некоторый ответ. В свою очередь, это приводило к ненужному обмену данными меж-
между пользователем и сервером. Тем не менее, это было сравнительно небольшой пла-
платой за получаемые взамен возможности.
С течением времени и увеличением объема трафика стало все более очевидным,
что для некоторой разгрузки CGI необходима более интеллектуальная клиентская
часть. При этом возникла необходимость в выполнении проверки на наличие оши-
ошибок, что позволило бы уменьшить временные промежутки, затрачиваемые сервером
на проверку данных. Кроме того, интеллектуальная клиентская часть позволила бы
Web-узлу перенести определенную часть нагрузки сервера на браузер, что означало
бы увеличение общей производительности сайта.
Именно этот недостаток функциональных возможностей и эффективности кли-
клиентской части привел к появлению нового языка сценариев — такого языка, кото-
которой можно было бы использовать в среде браузера, а не сервера. Этот язык можно
было бы применять для выполнения клиентских задач, например, проверки данных
Глава 1. Основные преимущества JavaScript с_ О
форм и создания динамического содержимого Web-страниц, и таким образом вести
в HTML элементы программирования. Так и появился JavaScript.
Добро пожаловать в JavaScript
4 декабря 1995 г. компании Netscape и Sun объявили миру о создании языка
JavaScript 1.0, который первоначально назывался Live Script. Этот язык, в отличие от
его серверных предшественников, мог интерпретироваться браузерами Netscape
Navigator 2. Имея интерпретируемую природу, JavaScript стал дополнением языка
Java и позволил Web-разработчикам создавать и развертывать приложения как в корпо-
корпоративных сетях, так и в Internet. Язык JavaScript предоставил Web-разработчикам
возможности настоящей программы, а не простого форматирования данных, как это
было в случае с HTML.
Помимо управления клиентской частью, которого так долго ждали разработчи-
разработчики, компания Netscape создала серверную часть JavaScript. Это позволило в сервер-
серверной и клиентской частях использовать один и тот же язык. Также в эту версию язы-
языка (именуемую LiveWire) была добавлена поддержка баз данных, в результате чего
разработчики получили возможность выборки данных непосредственно из баз дан-
данных, а также реализовывать пользовательские сеансы в таких приложениях, как ин-
интерактивные магазины. Язык JavaScript фактически ликвидировал разрыв, который
существовал между простым миром HTML и более сложным миром серверных CGI-
программ. Он стал для Web-разработчиков стандартным языком, используемым при
планировании, реализации и развертывании различных приложений в различных сетях.
Причем в этом случае появилась возможность распределения нагрузки.
Следующей ступенью признания JavaScript стала его реализация в браузере
Internet Explorer 3 компании Microsoft - реализация, которая получила название
JScri pt. Подобно компании Netscape, Microsoft реализовала свой язык и в серверной
части (JScri pt 2.0) в среде ASP (Active Server Pages — Активные серверные страни-
страницы). При этом разработчики использовали один и тот же язык как в клиентской, так
и в серверной части. Кроме того, стали доступными такие возможности транслиру-
транслируемых языков, как вызов и использование объектов.
СРАВНЕНИЕ JAVASCRIPT И JSCRIPT, А ТАКЖЕ КРАТКО О ECMASCRIPT
Язык JScript 1.0 был основан на сведениях, приведенных в опубликованной доку-
документации компании Netscape, поэтому он идентичен JavaScript 1.0. Однако JavaScript
были присущи несколько особанностай, которые не упоминались в открытой доку-
документации. Кроме того, некоторые функциональные возможности языка JavaScript не
были е полной маре реализованы компанией Microsoft. В результате мажду JScript
1.0 и JavaScript 1.0 существовала определенная насовмастимость.
После выхода в свет первых браузеров с поддаржкой языков, JavaScript и JScript
были представлены на рессмотрение ессоциеции ЕСМА (Europeen Computer
Menufecturers Associetion — Европейскея ессоциеция производителей компьютеров),
которея занимелесь резреботкой стендертов, и стели стендертом, известным под
незвением ECMAScript (ECMA-262). Вследствие этой стендертизеции язык
JeveScript стел считеться реелизецией стендерте ECMAScript от комлении Netscape,
е язык JScript — от компении Microsoft.
Переея редекция стендерте ECMAScript была утверждене в июне 1997 г., е в
апреле 1998 г. он был принят Междунеродной оргенизецией по стендертизеции и
Междунеродной электротехнической комиссией (ISO/IEC 16262). Вторея редекция
стендерте быле одобрене ессоциецией ЕСМА в июне 1998 г., е третья - в декебре
1999 г.
С. О Часть I. Обзор JavaScript
Iliili\\flnifilll«ni Поскольку родоначальником язь|ков подобного рода был язык
JavaScript компании Netscape, в настоящей книге семейство языков JavaScript, JScript
и ECMAScript именуется JavaScript, если только не требуется более точное указание.
Так что же собой представляет язык JavaScript с точки зрения программиста? По
своей сути этот язык является основанным на объектах, межплатформенным и мно-
многофункциональным языком, который позволяет воспользоваться огромным количеством
различных решений для многих клиентов. Он не только расширяет функциональные
возможности Web-страниц, интерпретируемых браузером, но и позволяет осуществлять
серверную обработку на Web-серверах компаний Netscape и Microsoft.
Кроме того, язык JScript был интегрирован в среду Windows Script Host (WSH),
что позволило программистам писать сценарии для самой операционной системы. А
в последнее время JScript стал базовым языком стратегии .NET компании Microsoft
(подробности см. ниже). В среде WSH язык JScript аналогичен старым командным
файлам DOS, при этом он предоставляет программисту более широкие функцио-
функциональные возможности и больший уровень гибкости. Благодаря наличию подобного
расширения, язык JScript завоевал ведущие позиции в компьютерном мире и про-
продолжает развиваться дальше.
Помимо доступности преимуществ тех сред, в которых используется язык
JavaScript, он может предохранить конечного пользователя от возможности появле-
появления "злонамеренного" кода. Несмотря на небольшой возраст JavaScript, ему прису-
присущи достаточная степень зрелости и мощи. Многие программисты отдают предпочте-
предпочтение именно JavaScript, по причине его широких функциональных возможностей и
гибкости в применении.
Теперь, после краткого введения в суть JavaScri pt, перейдем к обоснованию зна-
значимости этого языка для программиста. Авторы книги сами являются программис-
программистами по специальности, и четко понимают, что несколько голословных утвержде-
утверждений, пусть даже к месту сказанных, не придадут языку должной степени
эффективности. Поэтому сначала рассмотрим характеристика языка, связанная с
базированием на объектах.
Технология, основанная на объектах
Читатели этой книги наверняка ранее уже программировали на JavaScript или на
каком-либо другом языке, пусть даже опыт программисткой деятельности у них был
невелик. Более того, скорее в качестве языка программирования выбирался язык
C++, Java или Perl, каждому из которых присуш свой уровень объектной ориенти-
ориентированности. Наиболее сильно это качество проявляется в Java, в котором все
пользовательские объекты создаются на базе основных классов языка Java или клас-
классов пользователя.
Объектно-ориентированное программирование
Для тех, кто еще не знаком с объектно-ориентированным программированием
(ООП), отметим, что эта концепция программирования обеспечивает создание в
программном коде многократно используемых объектов или классов. Объекту или
классу присущи определенные характеристики и функциональные возможности, ко-
которые определяют то, какие свойства и состояния может принимать объект или
класс. После завершения операций создания и описания появляется возможность
образования новых экземпляров, иногда называемые дочерними объектами или клас-
классами, которые наследуют характеристики родительского объекта или класса.
Глава 1. Основные преимущества JevaScript С_ /
В качестве примера предположим, что создан объект vehicle (транспортное сред-
средство). Этот объект имеет следующие характеристики: количество дверей, цвет и тип
(например, спортивный автомобиль или грузовик). Предположим, что кроме указан-
указанных характеристик обеспечивается возможность приведения автомобиля в движение
и его остановки. Псевдокод для этого типа объекта может выглядеть примерно так:
object vehicle(){
// Характеристики класса venicle
num_doors;
color;
type ;
// Методы, которые используются для приведения автомобиля в
// движение и остановки.
// Обратите внимание, что метод move() использует аргумент
// direction (направление).
// Направление можно указывать такими словами, как, например,
// forward (вперед), backward (назад), left (налево)
// или right (направо).
move(direction);
stop () ;
}
Теперь, когда объект vehicle определен, можно легко создать его экземпляры.
Можно создать красный легковой автомобиль с четырьмя дверьми, можно создать
черный грузовой автомобиль с двумя дверьми. Возможности практически неограни-
неограниченны.
Помимо создания экземпляров в объекте vehicle заложена возможность изменять
состояние экземпляра. Это выполняется за счет указания того, стоит ли автомобиль
или движется. Такой метод программирования делает возможности неограниченны-
неограниченными и, безусловно, многократно используемыми.
С целью иллюстрации возможностей ООП приведем еще один пример псевдоко-
псевдокода. В этом примере создается черный двухдверный грузовик, двигающийся вперед.
// Создать новый экземпляр транспортного средства
myTruck = new vehicle ();
// Определение типа автомобиля, количества дверей и цвета
myTruck.doors = 2 ;
myTruck.color = "черный";
myTruck.type = "грузовик";
// Определение "состояния" грузовика
myTruck.move(forward) ;
Основная идея в приведенном выше коде заключается в том, чтобы создать эк-
экземпляр объекта vehicle, а затем присвоить ему определенные значения характери-
характеристик. Именно эти значения придают уникальность экземпляру объекта, а именно,
определяют реализацию в виде грузовика.
Существование объекта vehicle позволяет легко создать экземпляры с различны-
различными характеристиками. При программировании это самое "легко" приводит к умень-
уменьшению объема кода, что является, несомненно, полезным.
Теперь, когда объект определен, можно создавать его новые экземпляры, кото-
которые наследуют все характеристики объекта без необходимости их повторного опре-
определения. Таким образом, на объеме кода можно сэкономить при каждом частичном
повторении характеристик объектов. Идея заключается в создании обобщенного,
главного объекта, который предоставит возможность порождать от него дочерние
2 О Часть I. Обзор JavaScript
экземпляры со всеми необходимыми функциональными возможностями и характе-
характеристиками.
Можно пойти еще дальше — создать новые объекты (не экземпляры), которые
наследуют характеристики родительских объектов. При этом появляются дочерние
экземпляры дочернего объекта, которые будут наследовать лишь некоторые харак-
характеристики. Можно определить так, чтобы дочерний объект передавал от родительс-
родительского объекта своим дочерним экземплярам только цвет. Подобная модульность за-
заложена в самой концепции объектно-ориентированного программирования.
В следующем примере псевдокода демонстрируется пример создания объекта
airplane, основанного на объекте vehicle:
// Создание объекта, являющегося дочерним для объекта vehicle
object airplane(){
// Наследование объекта vehicle
this = new vehicle () ;
// Определение свойства doors, а затем назначение его свойству
// size, которое более приемлемо для самолета,
this.doors = 47";
this.size = this.doors;
// Определение свойства color
this.color = "silver";
this.type = "American Airlines";
// Определение "состояния" самолета
this.move(up);
// Теперь, когда объекту присвоены значения, вернуть объект,
return this;
}
Не все языки программирования поддерживают концепцию объектной ориенти-
ориентированности, а некоторые языки лишь основываются на ней. Концепция ООП, не-
несомненно, привносит некоторые преимущества в язык, но она вовсе не требуется
для написания хорошего, эффективного, модульного кода.Язык JavaScript представ-
представляет собой идеальный пример применения концепции ООП — он не объектно-ори-
объектно-ориентированный, а лишь основанный на объектах (object-based).
ПРИМЕЧАНИЕ
Подробное описание ООП не является целью книги о JavaScript, но
если читаталь причисляет себя к настоящим энтузиастам программирования, то для
него имеет смысл подробно изучить возможности ООП. Книги по ООП можно найти
практически в любом книжном магазине. Кроме того, информацию по ООП можно
получить на Web-сайте Object Central по адресу http://www.objectcentrel.com.
Так что же собой представляет программирование, основанное на объектах? Оно
очень напоминает ООП, однако, ему присущи не все функциональные возможно-
возможности и характеристики последнего. Понятия наследования, области видимости и фун-
функциональности в программировании, основанном на объектах, несколько ограни-
ограничены. Это не следует считать недостатком JavaScript, поскольку программирование,
основанное на объектах, делает язык проще для изучения и применения. С другой
стороны, использование языка, основанного на применении технологии ООП, мо-
может вызывать немалые проблемы.
Глава 1. Основные преимуществе JavaScript
29
Кроме того, JavaScript компенсирует многие из ограничений ООП, давая воз-
возможность разработчику создавать свои собственные элементы (объекты) и расши-
расширять базовые объекты языка, определяя прототипы новых свойств. Для того чтобы
ухватить основную идею, рассмотрим характеристики объектной ориентации, при-
присущие JavaScript.
Объектно-ориентированные характеристики JavaScript
Перед тем как приступить к описанию объектно-ориентированных характеристик
JavaScript, давайте сначала рассмотрим основные компоненты языка, как клиент-
клиентские, так и серверные. Оба набора объектов характерны для соответствующих им
сред исполнения, поэтому по умолчанию инициализация и создание объектов про-
происходит в разное время. Учитывая этот факт, разобьем рассмотрение языка на не-
несколько частей:
• ядро
• клиентская сторона
• серверная сторона
• специфика JScript
• Windows Script Host.
Ядро
Первое, и самое главное, заключается в том, что очень важно изучить объекты
ядра, или основные объекты, языка JavaScript.Эти объекты присутствуют, как пра-
правило, во всех реализациях. Они определены в стандарте ECMAScript. Объекты ядра
определяют основу общих функциональных свойств, например, математические опе-
операции, массивы, обработка данных, используемых большин-
большинством сценариев. Перечень объектов ядра приведен на рис. 1.1.
Как видно из рисунка, в число объектов ядра входят:
Array, Boolean, Date, Function, Global, Math, Number,
Object, RegExp, Error и String. Помимо этих объектов, и
Netscape, и Microsoft создали объекты, которые используют-
используются в их собственных реализациях ядра. Они не принадлежат к
какой-либо среде, поэтому, по сути, представляют собой
объекты ядра. Эти объекты показаны на рис. 1.2.
Ядро
Клиентская сторона
Клиентская сторона (часть) JavaScript является на сво-
своем нижнем уровне набором объектов, создаваемых при заг-
загрузке Web-страницы в браузере. Кроме того, существуют
объекты, которые имеют отношение к загрузке браузером
Web-страницы, а также другие производные объекты, кото-
которые создаются дескрипторами, находящимися на странице.
Эти производные объекты наследуют некоторые из характе-
характеристик своих родительских объектов и предоставляют доступ
из сценариев к свойствам HTML-дескрипторов.
Понимание иерархии объектов JavaScript требуется при
создании более-менее сложных программ. Следует предельно
четко представлять себе взаимодействие между родительски-
родительскими и дочерними объектами, а также принцип работы с ними.
—
Array
Boolean
Date
Error
Function
Global
Math
Number
Object
RegExp
String
Рисунок 1.1.
Иерархия основных
объектов ECMAScript
30
Часть I. Обзор JavaScript
Для этих целей советуем ознакомиться с рис. 1.3, где
в графическом виде отображается иерархия объектов
клиентской стороны JavaScript.
Как видно из диаграммы, все объекты клиентской
стороны являются производными либо от объекта
Window, либо от объекта navigator. Учитывая, что язык
JavaScript является основанным на объектах, иерархия
подобного вида вполне объяснима. Все объекты на
Web-странице находятся в окне браузера, поэтому все
они являются потомками объекта Window. Через
объект Window программист получает доступ к различ-
различным фреймам, документам, слоям и формам, кото-
которые могут находиться на странице, а также ко множе-
множеству других объектов и свойств.
Объект navigator относится к элементам, которые
являются частью самого браузера. Это, в частности,
относится к установленным подключаемым модулям и
типам MIME (Multipart Internet Mail Extension — Много-
Многоцелевые расширения электронной почты), с которыми
связан браузер. Использование объекта navigator позво-
позволяет проверить версию браузера, определить установ-
установленные подключаемые модули, а также программы,
связанные с зарегистрированными в системе типами
MIME.
Netscape
Microsoft
Arguments
Java Array
Java Class
Java Object
Java Package
JSException
JSObject
Packages
ActiveX
Automation -
Enumerator
VBArray
Рисунок 1.2.
Иерархия объектов ядра для сред
Microsoft и Netscape
Window
Frame
— Document
Location
1— History
Layer
Link
Image
Area
Anchor
Applet
— Plugin
Form
Style
Text Area
Text
FileUpload
Password
Hidden
Submit
Reset
Radio
Checkbox
Button
Select
navigator
Plugin
MimeType
Option
Рисунок 1.З. Иерархия объектов клиентской части JavaScript
Глава 1. Основные преимущества JaveScript
31
DOMException
ExceptionCode
DOMImplementation
DocumentFragment
Document
Node
NodeList
NamedNodeMap
CharacterData
Attr
Element
Text
Comment
CDATASection
DocumentType
Notation
Entity
EntityReference
Processinglnstruction
Рисунок 1.4.
Иерархия объектов модели DOM
HTMLCollection
HTMLDocument
HTMLEIement
HTM LHtml Element
HTMLHeadElement
HTMLLinkElement
HTMLTitleElement
HTMLMetaElement
HTMLBaseElement
HTMLIslndexElement
HTMLStyleElement
HTMLBodyElement
HTMLForm Element
HTMLSelectElement
HTM LOptGroup Element
HTM LOption Element
HTMLInputElement
HTMLTextAreaElement
HTMLButton Element
HTMLLabelElement
HTMLFieldSetElement
HTMLLegendElement
HTMLUListElement
HTMLOListElement
HTMLDListElement
HTM LDirectoryElement
HTMLMenuElement
HTMLLIEIement
HTMLBIockquoteElement
HTMLDivElement
HTMLParagraphElement
HTMLHeading Element
HTMLQuoteElement
HTMLPreElement
HTMLBREIement
HTMLBaseFontElement
HTMLFontElement
HTMLHREIement
HTMLModElement
HTMLAnchorElement
HTMLImageElement
HTMLObjectElement
HTMLParamElement
HTMLAppletElement
HTMLMapElement
HTMLAreaElement
HTMLScriptElement
HTMLTableElement
HTMLTableCaptionElement|
HTMLTableColElement
HTMLTableSectionElement
HTMLTableRowElement
HTMLTableCellElement
HTMLFrameSetElement
HTMLFrameElement
HTMLIFrameElement
32
Часть I. Обзор JavaScript
Помимо указанных клиентских объектов, в браузеры, начиная с версий Internet
Explorer 5 и Netscape 6, была введена поддержка объектной модели документа (DOM
— Document Object Model). Модель DOM — это способ, который может использовать-
использоваться для доступа к документам. Более подробно модель DOM будет рассматриваться в
главе 4, а объекты, входящие в состав этой модели, показаны на рис. 1.4.
Серверная часть
Подобно клиентской части, серверная часть JavaScript содержит несколько
объектов, на которых основаны все остальные объекты. Корневыми объектами сер-
серверной части для реализаций Netscape и iPlanet являются объекты DbPool и database,
которые позволяют получить доступ к базам данных, а также курсорам, хранимым
процедурам и сгенерированным результирующим наборам. В среде Microsoft ASP до-
доступны несколько дополнительных объектов, например, Response, Session и Request.
Иерархия объектов серверной части приведена на рис. 1.5.
ПРИМЕЧАНИЕ
Программисты, которые знакомы с Java, заметят, что все это очень
напоминает язык Java. В языке JavaScript не так много объектов/классов, тем не
менее, сама структура и принципы доступа аналогичны.
Среда JScript Runtime
Как и практически в любом языке программирования, созданном компанией
Microsoft, реализация JScript от Microsoft содержит объекты, характерные для ее
среды исполнения. Поскольку механизм JScript используется в нескольких приложе-
приложениях, разработанных Microsoft, и является очень важной частью проекта .NET, те,
кто работали с COM (Component Object Model — Компонентная объектная модель),
заметит, сочтут многие объекты достаточно знакомыми.
Microsoft ASP
Netscape/iPlanet
DbPool
Connection
Cursor
Stproc
Resultset
database
Cursor
Stproc
—I Resultset
Application
ASPError
ObjectContext |
Request
Response
Server
1— Session
Рисунок 1.5. Иерархия объектов серверной части
Глава 1. Основные преимущества JavaScript
33
Среда Windows Script Host
Помимо специфических объектов JScript,
компания Microsoft также реализовала объек-
объекты, которые являются частью среды Windows
Script Host. Эти объекты и соответствующий
код используются администраторами для вы-
выполнения повседневных заданий (ранее для
этой цели применялись командные файлы).
Однако среда Windows Script Host гораздо
мощнее, нежели устаревшие командные фай-
файлы, и может оказаться неплохим выбором для
выполнения административных задач. Иерархия
объектов среды Windows Script Host показана
на рис. 1.7.
JScript RunTime
Доступ к объектам
Dictionary
Drive
Drives
Files
File System Object
Рисунок 1.6.
Folder
Folders
Text Stream
Иерархия объектов JScript Run Time
Благодаря использованию возможностей
описанной иерархии объектов, доступ к раз-
различным элементам и объектам на Web-стра-
Web-странице реализуется за счет средств самой иерархии. Если необходимо получить доступ
к определенному текстовому полю формы на странице, сделать это можно с помо-
помощью следующего фрагмента кода:
window.document.formName.textboxName.value
ШааЭШ Язык JevaScript дает программистам возможность создавать свои собственные
объекты или расширять набор объектов ядра, определенных языком. Объяснение процесса
создания объектов и несколько примеров можно найти в главе 2, в разделе, посвященном
рассмотрению функций. Если требуется дополнительная информация относительно расши-
расширения функциональных возможностей существующих объектов, обратитесь к справочной
части книги, в которой опйсены объекты, имеющие свойство prototype.
WScript
WshArguments
— WshController
—| WshNetwork
WshShell
WshNamed
WshUnnamed
Wsh Remote
WshShortcut
WshUrlShortcut
WshEnvironment
— WstiSpecial Folders |
— WshScript Exec |
Wsh Remote Error
Рисунок 1.7. Иерархия объектов Windows Script Host
ОН Часть I. Обзор JavaScript
Поскольку JavaScript является языком, основанным на объектах, автоматичес-
автоматически обеспечивается множество преимуществ за счет применения модульного подхо-
подхода. Создавая объекты, разработчик получает возможность более эффективно поддер-
поддерживать код, с которым он имеет дело. Разработанный код может использоваться
повторно. Зачем создавать практически идентичный код многократно, когда можно
написать его один раз и наделить характеристиками, которые отличают данный
объект от других подобных ему объектов?
Модульное программирование
Модульное программирование в JavaScript связано с тремя ключевыми момен-
моментами. Их использование позволяет создавать код, который может применяться в не-
нескольких проектах. Вот эти три момента:
• Создание пользовательских объектов
• Объявление общих функций, выполняющих стандартные задачи
• Сохранение повторно используемого кода во внешних файла исходного кода
JavaScript (как правило, файлах с расширением .js).
ПРИМЕЧАНИЕ
Как и а случаа использования других языков программирования, па-
памятуйте о том, что качастаанное комментироааниа и документирование кода часто
являются одним из наиболее привлекательных аспактов программирования.
Поскольку создание пользовательских объектов будет рассматриваться в главе 2,
давайте посмотрим, как определять функции, предназначенные для выполнения
стандартных задач. Как и в других языках программирования, в JavaScript бывают
случаи, когда один и тот же процесс приходится выполнять по нескольку раз. При
выполнении процесса могут назначаться различные значения передаваемых парамет-
параметров, но суть самого процесса при этом не изменяется.
В качестве примера рассмотрим проверку вводимой пользователем даты. Пользо-
Пользователь должен ввести месяц, число и год в формате, который будет передаваться
серверу для дальнейшей обработки. При этом программист должен позаботиться о
том, чтобы дата была представлена только в формате ММ/ДД/ГГГГ, т.е. месяц и день
выражается двумя цифрами, а год — четырьмя.
Для выполнения поставленной задачи можно создать одну функцию, которая при
передаче ей в качестве параметра одной цифры вместо двух будет добавлять цифру
0. Такая функция могла бы просто проверять, меньше ли переданное число числа
10, и в случае соблюдения условия добавлять 0. Организовав этот процесс в форме
функции, программист получит возможность использовать одну и ту же функцию как
для проверки месяца, так и для проверки даты. Таким образом, исключается необ-
необходимость написания отдельных функций для выполнения каждой проверки подоб-
подобного рода. Даже несмотря на относительную простоту, пример, тем не менее, де-
демонстрирует преимущества повторного использования функций и кода.
Кроме того, модульный поход можно организовать за счет включения кода во
внешние файлы исходного кода JavaScript. Это позволит ввести код один раз, сохра-
сохранить его в определенном файле и использовать на множестве страниц, просто ука-
указывая место расположения файла. Если в функцию необходимо внести изменения,
затрагивается только один файл, а не все файлы, использующие данную функцию.
Подобные несложные методы позволяют сэкономить часы и даже дни рабочего вре-
времени.
Глава 1. Основные преимущества JaveScript 3 U
ИиикжИ Используете ли вы рекламные беннеры не своих Web-стреницех? Если да,
то дескрипторы реклемных баннеров лучше размещать во внешних JevaScript-фейлех.
Это позволит при необходимости изменять дескрипторы по всему Web-сейту. Однако
в некоторых устаревших бреузерах в теких случеях могут возникеть определенные
проблемы, поэтому перед использованием внешних фейлов следует убедиться, что вне-
внешние фейлы поддерживеются соответствующими браузереми.
Безопасность
Одной из самых сложных проблем, с которыми сталкиваются Web-разработчи-
Web-разработчики на сегодняшний день, по праву считается обеспечение безопасности. Невозмож-
Невозможно разработать ни одного приложения, будь оно основано на Web или разработано
для Web, не реализовав средств безопасности. В конечном счете, именно средства
безопасности приложения могут определять его практическую полезность для пользо-
пользователя. Если коду приложения можно нанести вред или уничтожить его полностью
с помощью другой программы, такое приложение вряд ли заслуживает права на даль-
дальнейшее использование.
Поскольку JavaScript чаще всего интерпретируется в среде браузера, источником
разрушения может стать сам пользователь, написав программный код, преследую-
преследующий некоторые преступные цели. Фактически браузер является частью операцион-
операционной системы, что означает, что он имеет доступ к файловой системе пользователя.
Это открывает для программы на языке JavaScript брешь в системе безопасности
браузера, в результате чего она получает неограниченный доступ к файловой сис-
системе. После этого возможны любые действия, вплоть до просмотра личных докумен-
документов или даже их удаления. В результате пользователь остается на "милость" взломщика.
Проблему обеспечения безопасности JavaScript-сценариев фактически можно раз-
разбить на два аспекта. Первый — это ответственность, которая ложится на програм-
программиста. Он должен гарантировать, что выполняемый пользователем сценарий не яв-
является злонамеренным. Второй — ответственность, которая ложится на самих
пользователей. В конечном счете, пользователи должны принимать окончательное
решение запускать сценарий в своих системах или нет; упомянутые функциональные
возможности должны быть присущи браузеру.
Принимая во внимание потенциально катастрофические ситуации, предусматри-
предусматривается несколько уровней безопасности, на которые,могут полагаться пользовате-
пользователи и программисты на JavaScript. Как уже говорилось, часть бремени ответственно-
ответственности ложится на программиста, в то время как другая часть включает средства
браузера, которые позволяют пользователю управлять запускаемыми в системе сце-
сценариями.
Существующие меры безопасности
Когда язык JavaScript 1.0 был впервые реализован в браузерах Navigator 2.0,
Internet Explorer 3.0 (JScript 1.0) и Opera 3.0, единственная мера безопасности зак-
заключалась в возможности включения/отключения JavaScript. Сам браузер контроли-
контролировал, среду исполнения языка и соответствующие средства безопасности.
При реализации подобной модели, в случае активизации JavaScript защита пользо-
пользователя от злонамеренного кода ложилась на браузер. Первоначально это казалось
довольно простым решением — переложить заботы по безопасности пользователя на
плечи профессионалов. Однако вскоре стали очевидными некоторые недостатки.
Один из недостатков, грозивший перерасти в проблему, возникал в случае Web-
сайтов с фреймовой организацией. Поскольку при использовании фреймов в каждой
36 Честь I. Обзор JevaScript
определенной области загружаются различные документы, была возможной загруз-
загрузка документов с нескольких различных доменов и серверов в одном окне браузера.
Проблема возникала в том случае, когда переменные языка JavaScript с одного сер-
сервера были доступны для просмотра и изменения с другого сервера. Но это были лишь
первые бреши в системе безопасности. Со временем появились и другие проблемы.
С целью устранения возможных проблем, связанных с использованием фреймов
в браузерах Navigator 2, Internet Explorer 3 и Opera 3, начала внедряться политика
Same Origin Policy (Политика одного источника). При этом запрещался доступ к
JavaScript-коду, отправленному с одного сервера, к свойствам документа, передан-
переданного с другого сервера, порта или другого протокола, и выполнялся возврат данных
исходному серверу.
Очевидно, что подобная политика влияет не на все элементы документа, но
включает, по крайней мере, основной набор. На момент написания этой книги про-
проверке источника подвергались свойства документа, описанные в табл. 1.1.
Поскольку может возникать необходимость из сценария получить доступ к пере-
переменным, расположенным на странице, передаваемой с другого сервера в том же
домене, описанная модель безопасности обладала одной особенностью. По опреде-
определению было бы невозможно получить доступ и выгружать свойства документа во
фрейме, который поддерживается сайтом http://myscripts.purejavascript.com, из другого
фрейма, обслуживаемого сайтом http://mydocs.purejavascript.com. Даже несмотря на
то, что домен является одним и тем же, полные URL-адреса различны.
Для преодоления подобной проблемы программисты могут присвоить свойству
document.domain суффикс текущего домена. В результате обеспечивается доступ к свой-
свойствам JavaScript для страниц, обслуживаемых другими серверами данного домена. В
рассматриваемом случае с целью активизации данного свойства используется следу-
следующая строка:
document.domain = "purejavascript.com";
Установка свойства document.domain позволяет получить доступ к другим поддоме-
нам внутри текущего домена.
Сегментирование данных
Вреализации JavaScript 1.1 в браузере Navigator 3.0 компания Netscape расширила
возможности системы безопасности за счет так называемого сегментирования данных
(data tainting). Вдобавок к модели безопасности, которая присутствовала в первом
Таблица 1.1. Объекты документа, для которых выполняется проверка источника
Объект
document
image
layer
location
window
Свойство/метод
Чтение/запись: anchors, applets, cookie, domain, elements, embeds,
forms, lastModified, length, links, referrer, title, URL, каждый
экземпляр формы и каждый класс Java, доступный в JavaScript через
LiveConnect.
Запись: все остальные.
lowsrc, src
src
все кроме location.X и location.Y
find
Глава 1. Основные преимущества JavaScript
37
поколении браузеров JavaScript, сегментирование данных позволяло пользователю и
программисту указать, хотят ли они, чтобы со сценариев обеспечивался доступ к
свойствам документов, находящихся на других серверах. Если сегментирование данных
не используется (по умолчанию), пользователь получает сообщение, уведомляющее,
что доступ к свойствам документов, поступающих с других серверов, запрещен.
ПРИМЕЧАНИЕ
Сегментирование двнных появилось лишь в JavaScript 1.1 и, поскольку
в настоящее аремя большинство пользоветелей применяют браузеры, которые поддержи-
поддерживают более новые версии языке, не стоит использовать подобный подход поддержки
безопасности. Этот рездел приведен лишь в качестве исторического обзора системы
поддержки безопасности в JavaScript, e также в качестве ответа не некоторые вопросы,
возникеющие при необходимости создания кода для браузеров семейства Navigator 3.
Пользователи могут активизировать сегментирование данных, если требуется,
чтобы сценарии на странице имели глобальный доступ к другим сценариям и свой-
свойствам документа. При этом возникает риск, однако он может быть вполне оправдан-
оправданным в корпоративной среде, в которой реализованы другие меры безопасности. Для
активизации сегментирования данных потребуется присвоить значения переменным
окружения браузера, в котором исполняется сценарий. В табл. 1.2 показано, как это
делается в различных операционных средах.
Установка указанной переменной влияет на несколько свойств документа. Перечень
объектов документа, которые сегментируются по умолчанию, перечислен в табл. 1.3.
И'гИ! Проверке наличия сегментирования двнных в Nevigator 3 выполняется с
помощью методе navigator.taintEnabled(). Пример использования этого мвтоде мож-
можно найти а глеве 8.
Помимо того, что пользователь может разрешить или запретить сегментирование,
программист может указать, или маркировать, объекты или данные, которые не
должны передаваться от одного сценария к другому без разрешения пользователя.
При попытке такой передачи на экране отображается диалоговое окно, в котором
пользователь выбирает, следует, ли осуществлять передачу данных.
Таблица 1.2. Сегментирование данных в браузере Navigator
Операционная
система
Windows
UNIX
Macintosh
OS/2
Переменная
окружения
NS_ENABLE_TAINT=1
NS_ENABLE_TAINT=1
Удаление двух косых
черт (//) комментария
перед NS_ENABLE_TAINT
NS_ENABLE_TAINT=1
Примечание
Эта строка должна присутствовать в
файле autoexec.bat во всех операционных
систем семейства Windows.
В зависимости от используемого
интерпретатора команд, при присвоении
переменной значения используется одна
из форм: set env или env.
Требуемую строку можно найти,
редактируя ресурс с типом Envi и
номером 128 в окне Navigator. Она
должна находится близко к концу.
Запись строки в файл config.sys.
38
Часть I. Обзор JavaScript
Таблица 1.3. Объекты документа, которые сегментируются по умолчанию
Объект
document
Form
Каждый экземпляр объекта Form
history
image
Link
location
Option
Plugin
window
Сегментируемое свойство
cookie, domain, forms, lastModified, links, referrer,
title, URL
action, name
checked, defaultChecked, defaultValue, name, selected,
selectedlndex, text, toString, value
current, next, previous, toString
name
hash, host, hostname, href, pathname, port, protocol,
search, toString
hash, host, hostname, href, pathname, port, protocol,
search, toString
#
defaultSelected, selected, text, value
name
defaultStatus, name, status
ПРИМЕЧАНИЕ
Допопнительные сведения о сегментировании данных можно нейти в
руководстве по клиентской части JaveScript (Client-Side JavaScript Guide) на Web-сейте
DevEdge компании Netscape по адресу http://developer.netscape.com.
Поскольку сегментирование данных не обеспечивало реальную модель безопас-
безопасности для JavaScript, в версии JavaScript 1.2 компания Netscape отказалась от его
использования, заменив на подписанные сценарии. Эта модель применяется и по сей
день и является наиболее полной среди тех моделей, которые были реализованы
ранее. Именно эта модель должна использоваться JavaScript-разработчиками, стоящи-
стоящими на передовых позициях.
Подписанные сценарии
Подписанные сценарии (signed scripts) дают программисту возможность доступа
к закрытым данным (после соответствующей авторизации пользователя). При реали-
реализации подобной модели, которая была основана на модели подписанных объектов
из Java, задействуются LiveConnect и Java Capabilities API. При использовании этой
модели четко определяется область допустимых действий программиста на компью-
компьютере пользователя.
Дополнительную информацию по Java Capabilities API можно найти на Web-
сайте DevEdge компании Netscape no адресу http://developer.netscepe.com/docs/
menuals/signedobj/ capabilities.
При использовании модели подписанных сценариев разработчик имеет возмож-
возможность подписывать внешние файлы исходного кода JavaScript (вызываемые с помо-
шыо атрибута src дескриптора <script>), обработчики событий и содержащийся на
странице код. Само "подписание" выполняется с помощью инструмента Page Signer
компании Netscape, который можно найти по адресу http://developer.netscape.com.
Глава 1. Основные преимущества JavaScript 3 У
Инструмент Page Signer позволяет создать файл JAR (Java Archive, т.е. архив Java),
который включает сертификат безопасности программиста и код. Как только при
отображении в окне браузера встречается дескриптор <script> с установленным атри-
атрибутом archive, перед запуском на выполнение сценария инициируется процедура про-
проверки. В процессе проверки на экран выводится диалоговое окно Java Security, в ко-
котором пользователь может активизировать или запрещать запуск сценария. Ниже
приводится пример синтаксиса, применяемого на странице с подписанными сцена-
сценариями.
<script src="myScripts.js" archive="sample.jar"X/script>
Если код является встроенным, JAR-файл будет включать только сертификат
программиста. При этом вызов требуемого JAR-файла будет выглядеть следующим
образом (атрибут src отсутствует, а код содержится между начальным и конечным
дескрипторами <script>):
<script archive="sample.jar" id="purejs">
// Здесь находится код
</script>
Даже несмотря на то, что подписанные сценарии основаны на модели Java, они
имеют немало своих особенностей, которые несколько усложняют обеспечение бе-
безопасности JavaScript-кода. В отличие от JavaScript, программист в коде Java может
защищать, делать приватными или финальными переменные и методы. В этом слу-
случае код защищается от взломщиков, поскольку к указанным элементам невозмож-
невозможно получить доступ и нельзя изменить — таковыми их определяет сам язык Java.
Доступ к отдельным расширенным привилегиям может быть получено с помо-
помощью метода netscape.security.PrivilegeManager.enabIePrivilege(), который придает коду
большую гибкость. Этот метод Java позволяет программисту попытаться разрешить
одну привилегию из имеющегося набора привилегий, предлагая пользователю разре-
разрешить или запретить доступ. Как и в случае с другими подписанными сценариями,
пользователь должен будет выбирать между разрешением доступа и отказом в нем.
Ниже приводится перечень привилегий, которые может запросить программист:
• UniversalBrowserAccess — обеспечивает с помощью браузера чтение и запись
привилегированных данных.
• UniversalBrowserRead — обеспечивает с помощью браузера чтение привилеги-
привилегированных данных. Эта привилегия требуется при использовании about: (но не
about:blank), при определении значения любого свойства объекта history и оп-
определении значения свойства data события DragDrop.
• UniversalBrowserWrite — обеспечивает с помощью браузера запись привилеги-
привилегированных данных. Эта привилегия требуется при установке значения любого
свойства объекта event, добавления или удаления какой-либо панели браузе-
браузера (строки адреса, меню, строки состояния и т.д.), а также при использова-
использовании отдельных методов и установке отдельных свойств объекта Window.
• UniversalFileRead — разрешает сценарию считывать файлы из файловой систе-
системы компьютере, на котором выполняется данный сценарий. Эта привилегия
необходима для загрузки файлов внутри сценария.
• UniversalPreferencesRead - позволяет сценарию считывать установки браузера.
• UniversalPreferencesWrite — позволяет сценарию сохранять настройки браузера.
• UniversalSendMail — позволяет сценарию отсылать электронную почту от име-
имени пользователя.]
40 Часть I. Обзор JavaScript
В языке JavaScript имеется достаточно большой набор доступных программисту
средств обеспечения безопасности. Однако программист должен использовать имею-
имеющиеся средства максимально эффективным образом. Если этого не делать, появля-
появляется риск взлома сценариев.
Теперь, когда читатели изучили доступные в JavaScript средства поддержки безопас-
безопасности, рассмотрим некоторые общие преимущества применения языка JavaScript в ка-
качестве средства развертывания решений как в Internet, так и в корпоративных сетях.
Преимущества JavaScript
До этого момента читатели могли не замечать тех случаев, когда язык JavaScript
мог бы оказать помощь. Известно, что JavaScript - это язык, основанный на объек-
объектах, который может интерпретироваться средствами браузера, имеющего определен-
определенные средства обеспечения' безопасности; однако то же самое можно сказать и о Java.
Теперь, когда браузеры поддерживают подключаемые модули и элементы управле-
управления ActiveX, появилась возможность обеспечить все необходимые функциональные
возможности клиентской части с помощью более распространенных языков, подоб-
подобных C++ или Visual Basic. Так что же реально дает разработчику JavaScript?
Следует отметить, что этот язык не зависит от платформы. Это является его ос-
основным преимуществом по сравнению с элементами управления ActiveX и подклю-
подключаемыми модулями, поскольку на сегодняшний день, когда применяется большое
разнообразие платформ, потребуется повторная компиляция либо даже повторное
создание элементов управления ActiveX и подключаемых модулей. Так, например,
предшествующие версии браузера Navigator и новая версия Netscape 6 могут выпол-
выполняться на многих платформах и даже, несмотря на то, что большинство этих плат-
платформ представляют собой различные версии Unix, элементы управления ActiveX и
подключаемые модули придется перекомпилировать с учетом использования 16- и 32-
разрядных версий Windows, операционных систем MacOS, Unix, BeOS, OS/2 и т.д.
Кроме того, различные версии Unix и Linux могут выполняться на нескольких ти-
типах процессоров (MIPS, Intel, PowerPC и т.п.), a Windows NT - на машинах Intel
и Alpha. Поэтому, при разработке кода на языке, зависящем от платформы, при-
пришлось бы поддерживать достаточно длинный список компонентов.
Еще одно преимущество JavaScript заключается в том, что Web-серверы Netscape
и Microsoft имеют встроенные интерпретаторы. Компании Netscape и Microsoft ре-
реализовали интерпретаторы различными способами, однако Web-разработчики име-
имеют возможность использовать один и тот же язык во время программирования как
клиентской, так и серверной части. В этом отношении единственным реальным кон-
конкурентом JavaScript является Java с технологией Java-аплетов и сервлетов.
Независимость от платформы
Независимость от платформы, по-видимому, является решающим фактором в
пользу применения языка JavaScript для разработки приложений.Справедливости ради
стоит отметить, что в некоторых средах JavaScript интерпретируется несколько от-
отличным образом, но большая часть языка интерпретируется одинаково. Таким об-
образом, можно создать код один раз и возложить заботы по его интерпретации на
среду выполнения.
Это простая концепция, тем не менее, она может стать решающим фактором
при выборе типа реализации. Программисты не желают прибегать к изменению кода
для адаптации его к разным операционным системам или повторной компиляции
кода для разных процессоров. Они хотят создавать код раз и навсегда. Изменения
желательно вносить легко и быстро без необходимости перекомпиляции по 10-15 раз.
Глава 1. Основные преимуществе JavaScript 4 I
Гибкость клиентской и серверной части языка
До сих пор большая часть обсуждения была посвящена использованию JavaScript
для написания клиентских приложений. Однако, даже для первой версии языка
JavaScript существовала реализация в виде серверной части на серверах Netscape/
iPlanet и Microsoft. Серверный код содержит большое количество объектов и мето-
методов, которые применяются в клиентской части, а также включает свои специфичес-
специфические объекты, характерные только для серверной среды. Эти объекты, которые по-
позволяют связываться с базами данных, запрашивать данные и получать результаты.
При этом производится обработка данных перед их отправкой браузеру.
Возможность обработки данных на сервере предоставляет программисту возмож-
возможность создания динамических страниц, реализующих выполнение встроенных сервер-
серверных сценариев. Кроме того, серверная часть JavaScript может использоваться для
хранения пользовательских данных при переходе между страницами в пределах одного
и того же Web-сайта. Подобный тип хранения данных часто используется на коммер-
коммерческих сайтах при организации интерактивных магазинов. В этом случае серверная
часть JavaScript применяется для отслеживания и хранения выбранных пользовате-
пользователем товаров.
Компания Microsoft также реализовала определенный тип серверной части JScript
на своем информационном сервере Internet (IIS— Internet Information Server). Этот вид
реализации используется в активных серверных страницах (ASP — Active Server
Pages), в которых ASP-фильтр обрабатывает страницы Web-сайта перед их отправ-
отправкой запрашивающему браузеру. Кроме того, язык JScript является весьма важной
составляющей частью в рамках инициативы .NET компании Microsoft, которая по-
позволяет разработчикам воспользоваться языком для создания Web-служб, функцио-
функционирующих в качестве СОМ-объектов, но в сети Internet. Как и в реализации Netscape,
это позволяет Web-разработчикам перед отправкой страниц браузеру выполнять ди-
динамическую сборку их содержимого.
Помните, что язык JScript компании Microsoft аналогичен
языку JavaScript.
Страницы ASP поддерживают применение языка JScript для вызова серверных
компонентов (таких как элементы управления ActiveX), передачу необходимых па-
параметров и отображение результатов на экране. Благодаря наличию функциональные
возможностей по созданию Web-страниц с отдельными компонентами, выполняю-
выполняющими конкретные задачи, JScript может применяться для обработки запросов и дан-
данных этих модулей, а также для отображения на странице полученных результатов.
Область применения JavaScript
При использовании JavaScript одним из важных моментов является область его
применения. Даже несмотря на то, что JavaScript реализует функциональные воз-
возможности, требуемые для большинства сценариев, зачастую его применение ничем
не обосновано. Причина заключается в том, что в случае применения этого языка
не всегда осуществляется корректная интерпретация кода.
С точки зрения программиста, желательно иметь возможность создания кода (про-
(простого или сложного), который будет выполняться корректно. Однако в некоторых
браузерах присутствуют ошибки, препятствующие выполнению кода JavaScript так,
как было задумано программистом. Прежде чем приступать к созданию программы
на JavaScript, необходимо изучить и попытаться осознать смысл ошибок, присущих
4 с Часть I. Обзор JavaScript
браузерам. Таким образом можно сэкономить время при отладке кода. Часто переч-
перечни известных ошибок JavaScript можно найти в Internet, поэтому начните работу с
просмотра раздела ресурсов, приведенного в конце книги.
Попытайтесь определить, действительно ли на данной странице необходимо ис-
использование JavaScript.Задайте себе вопрос, используется ли JavaScript с целью рас-
расширения функциональных возможностей страницы или же просто для улучшения ее
внешнего вида. Язык JavaScript может оказаться весьма полезным при его использо-
использовании на Web-странице, но если в средах некоторых браузеров в ходе интерпрета-
интерпретации может возникнуть ошибка, от JavaScript лучше отказаться. Между расширени-
расширением функциональных возможностей и потенциальными проблемами существует
весьма тонкая грань, поэтому перед использованием кода следует его протестиро-
протестировать, воспользовавшись максимально возможным количеством браузеров и платформ.
В зависимости от намерений программиста, с которыми он отдает предпочтение
JavaScript, по отношению к используемому браузеру могут предъявляться определен-
определенные требования. Если Web-страницы будут просматриваться лишь с помощью брау-
браузеров Netscape 6, Internet Explorer 5 и более поздних версий, тогда при написании
сценариев можно безопасно применять JavaScript 1.3 или более ранние версии. Это
сразу же исключит необходимость обеспечения совместимости с более старыми вер-
версиями браузеров и позволит существенно сократить объем кода. Возможно, что Web-
разработчики не могут применить подобные ограничения по отношению к своим
Web-сайтам, но, как правило, для Web-приложений применение подобных ограни-
ограничений вполне оправданно.
Вообще говоря, при использовании JavaScript программисты, в первую очередь,
должны руководствоваться здравым смыслом. Необходимо рассмотреть назначение
создаваемого Web-сайта и предполагаемый круг пользователей. Располагая подобны-
подобными данными, можно проанализировать проект и определить тип создаваемого кода. Во
многих случаях описанный подход намного проще, нежели решение задачи "в лоб".
Теперь, когда кратко были исследованы общие вопросы, которые необходимо
проанализировать перед использованием JavaScript, рассмотрим, какие задачи ре-
решаются с помощью JavaScript. В следующем разделе будут описаны отдельные приме-
примеры общего назначения, а также некоторые более сложные и специфические примеры.
Расширение возможностей Web-страницы
Одной из первых реальных областей применения JavaScript было расширение
функциональных возможностей Web-страниц. Пользователи Internet, начавшие с бра-
браузера Netscape Navigator 2, возможно, помнят раздражающие прокручивающиеся
сообщения в строке состояния браузера. Эти сообщения были результатом одной из
первых модификаций, реализованной с помощью JavaScript.Несмотря на то что со-
сообщения и раздражали пользователей, тем не менее, они привлекали внимание.
Еще одной популярной областью применения JavaScript было отображение на
странице текущей даты и времени. Некоторые Web-страницы сохраняют дату и вре-
время последнего изменения, а некоторые — текущую дату и время. Подобное расши-
расширение часто используется на Web-сайтах групп новостей, где читателю весьма важ-
важно знать дату создания документа.
И'гШ Отображение на страницах даты и времени - отличный элемент для органи-
организации в виде модуля. Если код реализован в виде функции, его можно легко включить
в состав всех страниц и вызывать при необходимости. Если в серверной части задей-
ствуется определенный вид интеллектуальности браузера, функцию можно включать на
основе конкретного браузера, запрашивающего данные страницы. Если браузер может
интерпретировать JavaScript, включите функцию в состав страницы, а если браузер не
поддерживаат JavaScript, откажитесь от использования функции.
Глава 1. Основные преимущества JavaScript 4 и
В качестве последнего примера применения JavaScript для расширения функци-
функциональных возможностей Web-страниц можно рассмотреть использование элементов
управления. Как правило, в этом качестве JavaScript используется для изменения
изображений при перемещении над ними указателя мыши. Кроме того, можно оп-
определить отдельное изображение для случая, когда пользователь нажимает и удержи-
удерживает на изображении кнопку мыши. Несмотря на достаточную простоту этого рас-
расширения, оно придает странице более профессиональный вид. В результате
пользователь получает возможность ощутить эффект работы с привычным приложе-
приложением, будь то Web-браузер, текстовый редактор или другая программа.
Три указанных области применения JavaScript для расширения функциональных
возможностей Web-страниц кажутся достаточно простыми, но на этом возможнос-
возможности JavaScript далеко не исчерпываются. Многие Web-сайты задействуют JavaScript для
организации рекламных объявлений, создания всплывающих навигационных окон,
перенаправления страниц и проверки данных форм. Поскольку язык JavaScript вы-
выполняется в среде браузера и часто используется в качестве дополнения к HTML,
его возможности практически неограниченны.
При использовании языка JavaScript с целью расширения возможностей
Web-страниц следуат отдавать себе отчат, что этот язык не можат решить все про-
проблемы. Создание Web-сайта сладует начинать с проектирования структуры самого
сайта. Именно структура самого сайта должна быть хорошо продуманной, причем по-
потребуется принять решение относительно того, как этого можно добиться средствами
JavaScript.
Интерактивная электронная почта
Идея интерактивной электронной почты берет свое начало от приложений элек-
электронной почты. Не так давно многие такие приложения могли использоваться лишь
при считывании текста электронных сообщений. Теперь, используя возможности
обновленного интерфейса, возможна интерпретация электронных сообщений в фор-
формате HTML, что существенно расширяет доступные пользователю возможности по
форматированию электронных писем. Это не только улучшает внешний вид писем,
но и улучшает их восприятие со стороны пользователей. Например, если пользова-
пользователь желает выделить курсивом определенную часть текста, программист должен дать
ему такую возможность.
Поскольку электронная почта на базе HTML получила широкое применение в
Internet, этот формат начинают поддерживать все большее и большее число почто-
почтовых приложений. Новейшие почтовые программы, разработанные компаниями
Netscape и Microsoft, допускают в теле электронного сообщения исггользования языка
JavaScript (при условии, что пользователь активизирует соответствующую опцию).Это
позволяет отправлять электронные сообщения в формате HTML, содержащие код
JavaScript, который будет интерпретироваться при чтении сообщения получателем.
Программист должен учитывать тот факт, что почтовая программа не является
браузером. Пользователи весьма разборчивы в отношении того, что они получают по
электронной почте, и чрезмерное использование возможностей JavaScript может
вызвать лишь раздражение у получателя. В электронных сообщениях язык JavaScript
должен использоваться только в незначительных объемах. Его следует применять толь-
только для простых расширений возможностей, таких, например, как элементы управ-
управления изображениями или ссылками, либо для вызова рекламных сообщений. При
интерпретации сценариев, содержащих другие элементы, в почтовом приложении
могут возникать ошибки.
44 Часть I. Обзор JavaScript
Приложения, основанные на Web
Приложения, основанные на Web, являются, наверное, наиболее благодатной
областью применения языка JavaScript. Такие приложения позволяют программисту
установить требования к браузеру пользователя, которые, в свою очередь, дают воз-
возможность выбрать используемую версию языка. Кроме того, это приводит к мини-
минимизации вероятности возникновения проблем, вызванных ошибками браузеров, по-
поскольку программисты могут определять типы поддерживаемых браузеров.
Пожалуй, наиболее часто в приложениях, основанных на Web, язык JavaScript
используется для управления формами на странице. В понятие "управление" может
включаться все, от проверки введенных пользователем данных перед их передачей
серверу, до динамического изменения значений в зависимости от выбранных пользо-
пользователем данных. Применение возможностей языка JavaScript на этом уровне позво-
позволяет уменьшить количество ошибок в данных, переданных серверу. При этом гаран-
гарантируется отсутствие ошибок во время ввода номеров кредитных карточек, не
допускается использование имен пользователей и паролей в качестве адресов элек-
электронной почты, а также обеспечивается заполнение форм.
Кроме того, JavaScript применяется в более полноценных Web-приложениях. Та-
Такие приложения не обязательно должны быть предназначены для рядового пользо-
пользователя Internet. Они могут служить в качестве интерфейсов для корпоративных при-
приложений, используемых в рамках какой-либо компании. Более типовые приложения
могут использоваться для создания отчетов, пересылки рекламных сообщений и
менеджмента. Поскольку содержимое страниц приложения является динамическим
и постоянно изменяется, то разработчик для обеспечения динамической генерации
содержимого страниц, как правило, связывает приложение с базой данных или с
каким-то системным процессом. Использование JavaScript позволяет разработчикам
выполнять необходимую проверку до отправки запроса, а также добавлять элемен-
элементы оформления, улучшающие внешний вид приложения.
Написание сценариев для Windows
Среда Windows Script Host компании Microsoft существует в средах операционных
систем Windows 98, Windows 2000 и может быть установлена в системах Windows 95 и
NT 4. Эта среда не зависит от конкретного языка и предназначения для написания сце-
сценариев ActiveX для 32-разрядных систем Windows. Независимость от языка означает, что
в среде могут использоваться различные языки программирования. Причина, по кото-
которой среда Windows Script Host описывается в этой книге, связана с тем, что она под-
поддерживает JScript, т.е. реализацию стандарта ECMAScript компании Microsoft.
Крома языка JScript, среда создания сценариев Windows Script Host
поддерживает язык Visual Basic Script (VBScript), а также другие языки программиро-
программирования, например, Perl, REXX, TCL и Python.
Применение языка JScript в среде написания сценариев позволяет администра-
администратору или пользователю создавать сценарии, которые будут выполнять различные
функции в операционной системе. Если пользователь работает в среде Microsoft
Windows, подобная реализация JScript может оказаться весьма удобной.
Более полную информацию по среда Windows Script Host можно найти на
Web-сайте компании Microsoft по адресу http://msdn.microsoft.com/scripting, вос-
воспользовавшись ссылкой Windows Script Host.
Глава 1. Основные преимущества JavaScript
45
Ресурсы JavaScript
Если программист использует какой-либо определенный язык программирования,
особенно, если этот язык связан с Internet, ему приходится просматривать много
ресурсов. Кроме того, если создается большой объем кода на каком-либо определен-
определенном языке, особенно на языке, связанном с Internet,-приходится иметь дело со
множеством ресурсов. Поэтому в заключение этой вводной главы приводятся неко-
некоторые ресурсы по JavaScript.Они содержат практически все, от общих сведений до
подробной документации и ссылок на группы новостей. Вся эта информация посвя-
посвящена языку JavaScript и доступна в интерактивном режиме.
Общие сведения
Одним из важнейших типов ресурсов любого языка программирования являют-
являются общие сведения. Даже если в какой-то книге можно найти все подробности по оп-
определенной теме, материал может содержаться в форме, непонятной для пользовате-
пользователя. По этой причине возникает потребность в изучении той же темы, но с точки зрения
другого автора. Ниже, в табл. 1.4 перечислены некоторые ресурсы подобного рода.
Таблица 1.4. Ресурсы общего характера
Ресурс
About.com Focus on
JavaScript DevEdge Online
Danny Goodman's
JavaScript Pages
JavaScript.com
Developer.com
Doc JavaScript
The JavaScript Workshop
JavaScript World
Java/JavaScript
Resources on the Internet
Microsoft Developer's Network
Timothy's JavaScript Examples
Using JavaScript and
Graphics
Using JavaScript's
Built-in Objects
Voodoo's Introduction
to JavaScript
WebCoder.COM
Yahoo! Computers and
Internet, Programming
Languages, JavaScript
Open Directory Top,
Computers, Programming,
Languages, JavaScript
URL
http://javascript.about.com/compute/
javascript/mbody.htm
http://developer.netscape.com/tech/javascript/index.html
http://www.dannyg.com/javascript
http://www.javascript.com
http://developer.earthweb.com/dlink. index-jhtml.72.13i3.-.0.jhtml
http://www.webreference.com/js
http://www.starlingtech.com/books/javascript
http://www.jsworld.com
http://www.dezines.com/dezines/javalinks.html
http://msdn.microsoft.com/scripting
http://www.essex1.com/people/timothy/js-index.htm
http://www.javaworld.com/javaworld/
jw-08-1996/jw-08-javascript.html
http://www.javaworld.com/javaworld/
jw-05-1996/jw-05-javascript.html
http://rummelplatz.uni-mannheim.de/
~skoch/js/script.htm
http://webcoder.com
http://dir. yahoo. com/computers_and_
internet/programmingjanguages/javascript
http://dmoz.org/Computers/
Programming/Languages/JavaScript
46
Часть I. Обзор JavaScript
Справочная документация
Еще одним важным для программиста типом ресурсов является справочная до-
документация. Эта документация содержит данные о языке программирования в том
виде, в котором он определен стандартами или компаниями, которые разработали
или реализовали язык. Перечень интерактивных ресурсов, включающих существую-
существующую на сегодняшний день справочную документацию, перечислен в табл. 1.5.
Группы новостей
И последний тип ресурсов из числа упоминаемых в книге — это старый добрый
Usenet, или группы новостей. Группы новостей зачастую представляют собой весьма
интересные форумы, на которых обсуждаются различные вопросы и проблемы и
приводятся ответы на вопросы, заданные другими программистами. Это глобальное
сотрудничество в своей лучшей форме, о котором на практике часто забывают. Не-
Некоторые основные группы новостей перечислены в табл. 1.6.
Резюме
Эта глава содержит общий обзор языка JavaScript. Очевидно, что JavaScript яв-
является мощным языком написания сценариев, который обладает множеством пре-
преимуществ. В нем присутствуют средства обеспечения безопасности и другие элемен-
элементы, которые гарантируют, что время, которое программист потратит на изучение
языка, не пропадет зря.
В следующей главе язык будет рассматриваться более детально. Подробности, при-
приведенные в главе, позволят понять специфику использования операторов, типов дан-
данных, переменных, функций, циклов и условий. Кроме того, будет показано, как
встраивать JavaScript в тело HTML-документа.
Таблица 1.5. Справочная документация
Ресурс
Ecma-262 (ECMAScript)
Microsoft Scripting
Technologies (JScript)
Mozilla.org
Netscape's Core
JavaScript 1.4 Reference
Netscape's Server-Side
JavaScript 1.2 Side
Netscape's Client-Side
JavaScript 1.3 Reference
URL
http://www.ecma.ch/ecma1/STAND/ECMA-262.HTIV1
http://msdn.microsoft.com/scripting/
default.htm?/scripting/jscript/techinfo/jsdocs.htm
http://www.mozilla.org/js
http://developer.netscape.com/docs/
manuals/js/core/jsref/index.htm
http://developer.netscape.com/docs/
manuals/js/server/jsref/index, htm
http://developer. netscape.com/docs/
manuals/js/client/jsref/index.htm
Таблица 1.6. Группы новостей
Сервер
secnews.netscape.com
secnews.netscape.com (Secure)
Public Newsgroups
Группа новостей
netscape.public.mozilla.jseng
netscape.dev.js-debugger
netscape.dev.jsref
netscape.dev.livewire
netscape.dev.livewi re.dbconfig
netscape.dev.livewire. programming
netscape, dev. visual-javascript
netscape.devs-livescript
comp.lang. javascript
Глава 2
Языковые конструкции
JavaScript
Опытные программисты, которые хотят быстро перейти на новый язык програм-
программирования, ищут аналогию между новым языком и теми языками, которые ис-
использовались ими ранее. Аналогия обычно относится к операторам, определяющих
выполнение программы, переменным, выделяющим в программе область памяти,
и возможности применять одну и ту же операцию по отношению к нескольким раз-
различным объектам. Если вы хотите начать программировать в JavaScript, то понима-
понимание принципа использования основных элементов языка будет просто необходимо.
Если же вы уже достаточно долго занимаетесь программированием, особой не-
необходимости в чтении данной главы нет. Но, поскольку JavaScript, — это все еще
молодой язык программирования с некоторыми "огрехами", которые еще предсто-
предстоит выровнять, имеет смысл изучить его особенности с целью достижения обратной
совместимости. Время, затраченное на проверку функционирования основных эле-
элементов языка, может значительно облегчить процесс программирования.
Что следует знать о синтаксисе JavaScript
Перед тем как "с головой окунуться" в изучение основных элементов языка
JavaScript, рассмотрим несколько моментов, которые должен изучить программист
при освоении синтаксиса языка. Знание этих моментов поможет быстрее перейти к
самому процессу программирования.
Точка с запятой
Если вы ранее программировали на С, C++ или Java и создали даже такую про-
простую программу, которая просто выводит строку "Здравствуй, мир!", вы на 75% уже
знаете все что необходимо знать о применении точки с запятой (;) в языке JavaScript.
Как и в С и C++, в JavaScript точка с запятой ставится в конце оператора для ука-
указания того, что код между началом строки и точкой с запятой должен быть выпол-
выполнен перед тем, как произойдет переход к следующей части кода. Если в С в конце
строки пропустить точку с запятой, при компиляции возникнет ошибка, а в
JavaScript ошибки не возникает. Поскольку JavaScript - это язык со свободно опре-
определенным синтаксисом. Если в конце строки точка с запятой не указана, предпола-
предполагается, что точка с запятой должна присутствовать, поэтому выполнение кода
4 О Часть I. Обзор JavaScript
происходит с учетом этого предположения. Это не означает, что точки с запятой
можно не указывать! Правила хорошего программирования требуют, чтобы точки
с запятой были в конце каждой строки, за исключением операторов for, while и if.
Даже несмотря на то, что правила хорошего программирования требует, чтобы
в каждой строке находится лишь один функциональный блок кода, часто предпоч-
предпочтительнее будет разместить в одной строке два независимых блока кода. В таком случае
для разделения блоков кода должна использоваться точка с запятой. В коде листинга 2.1
точка с запятой используется для разделения двух независимых частей кода объявления
переменных, которые располагаются в одной строке. Обратите внимание, что точки с
запятой указаны в каждой строке, хотя в JavaScript это и не обязательно.
Листинг 2.1. Использование точки с запятой
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Объявление в одной строке двух числовых переменных
var fiveDollars = 5; var salesTax = 0.06;
// Вычисление налога с оборота 5 долларов и для вывода результата
// на экран применение функции document.write().
document.write("Налог с оборота $");
document.write(fiveDollars);
document.write(" составляет $");
document.write(fiveDollars*salesTax);
//-->
</script>
</html>
Использование дескриптора <script>
При первом знакомстве с новым языком программист пытается изучить основ-
основные элементы синтаксиса, которые необходимы, чтобы начать программировать. В
языке JavaScript таким основным элементом является HTML-дескриптор <script>.
Дескриптор <script> говорит браузеру, что все находящееся между <script> и
</script> должно интерпретироваться интерпретатором, указанным в атрибуте type.
Количество используемых дескрипторов <script> не ограничивается, но каждому дес-
дескриптору <script> должно соответствовать дескриптор </script>.
Обратите внимание, что браузер интерпретирует код, находящийся между деск-
дескрипторами <script>, на основании значения атрибута type. Поскольку атрибуту type
не присвоено значение, заданное по умолчанию, очень важно, чтобы его значение
было задано в каждом используемом дескрипторе <script>. Чтобы браузер для интер-
интерпретации кода использовал последнюю версию JavaScript, необходимо указать сле-
следующую строку: <script type="text/javascript">. Кроме того, можно вынудить браузер
использовать более старую версию JavaScript (например, <script type="text/
javascriptl.2">) или другой язык, например, JScript (type="text/jscript").
lllM4lUt=lir«ilUl4 До появления версии HTML 4 атрибут language дескриптора <script>
был единственной возможностью определения языка сценариев. В HTML 4 етрибут
languaga был земенен описенным выше атрибутом typa. В приведенных в книге при-
мерех для обеспечения обратной совместимости в дескрипторах <script> укезены оба
типа атрибутов.
Глава 2. Языковые конструкции JevaScript 4-У
Комментарии
Язык JavaScript весьма щедр на синтаксис комментариев — в нем используются
дескрипторы /* */ из С, // из C++ и <!-- --> из HTML. Как в С и C++, дескрип-
дескриптор /* */ позволяет добавлять комментарии, занимающие несколько строк, указав
текст комментария между двумя дескрипторами. Дескриптор // позволяет приводить
комментарии между символами // и концом строки. Как было указано, JavaScript
имеет один дескриптор комментария, который знаком тем, кто работал с HTML —
это дескриптор <!--. Язык JavaScript интерпретирует этот комментарий также как и
символы //. Вы можете спросить зачем нужны два дескриптора комментария, если
они делают одно и то же? Некоторые более старые браузеры, которые не поддер-
поддерживает дескрипторы <script>, будут выводить на экран весть код, находящийся между
дескрипторами <script> и стандартным HTML-текстом. Для этого дескриптор <!-- ука-
указывают в строке после дескриптора <script>, а дескриптор //--> — в строке перед ко-
конечным дескриптором </script>. Это приводит к тому, что в браузерах, не поддержи-
поддерживающих JavaScript, код JavaScript будет считаться HTML-комментарием, а в браузерах,
поддерживающих JavaScript код будет интерпретироваться. Примеры подобного исполь-
использования комментариев можно увидеть во многих приведенных в книге примерах.
ПРИМЕЧАНИЕ
Символы комментария // должны находится перед конечным деск-
дескриптором —> HTML-комментария, поскольку в противном случае JavaScript будет ин-
терпретироветь --> как постфиксную оперецию декремента.
Типы данных и переменные
Перед рассмотрением операторов JavaScript необходимо изучить типы данных
JavaScript и переменные. Это те основы, без которых невозможно движение вперед.
К счастью, в отличие от других языков программирования, реализация типов дан-
данных в JavaScript достаточно проста и удобна в использовании. Помимо простых ти-
типов данных, в JavaScript намного проще работать с переменными, поскольку нет
ограничений на типы значений переменных.
Числа
Принятый в JavaScript подход к обработке чисел отличается от подхода, опре-
определенного в других языках программирования. В данном случае любое число счита-
считается числом с плавающий десятичной точкой. JavaScript поддерживает целые числа,
числа в восьмеричной и шестнадцатиричной системах исчисления на уровне форма-
форматирования. Однако, на низком уровне в JavaScript все числа представляются в виде
чисел с плавающий десятичной точкой. В следующем разделе более подробно рас-
рассматриваются различные форматы, с помощью которых осуществляется представ-
представление чисел на высоком уровне.
Целые числа
Целые числа — это числа, которые не содержат дробной части. Они могут быть
положительными либо отрицательными, и в JavaScript представляются в десятич-
десятичном, восьмеричном или шестнадцатеричном формате. Поскольку в JavaScript все
числа фактически являются числами с плавающей десятичной точкой, они могут
быть очень большими.
• Целые числа в десятичном представлении программисты используются чаще
всего. Этот тип целых чисел состоит из цифр от 0 до 9 и не может содержать
начальных нулей.
50 Часть I. Обзор JavaScript
• Целые числа в восьмеричном представлении несколько отличаются от деся-
десятичных целых чисел тем, что они могут содержать начальные нули. Каждая
цифра после начального нуля может иметь значение от 0 до 7.
• Целые числа в шестнадцатиричном представлении должны начинаться с Ох или
ОХ. Каждая цифра после начального нуля может иметь значение от 0 до 15,
причем цифры от 10 до 15 представляются в виде букв от а (или А) до f (или F).
Числа с плавающей десятичной точкой
В отличие от целых чисел, числа с плавающей десятичной точкой могут содер-
содержать дробную часть и с целью увеличения степени точности могут представляться
в экспоненциальном виде. Числа с плавающей точкой состоят из целого числа в де-
десятичном представлении, за которым следует точка (.) и дробная часть числа.
В экспоненциальном представлении к числу с плавающей точкой добавляется е
или Е, за которым следует целое число в десятичном представлении длиной не более
трех цифр. Подобное представление указывает на то, что число с плавающей точкой
необходимо умножить на 10 в степени, показатель которой указывается после буквы е.
Встроенные значения
Поскольку компьютерные программы часто используются для решения различ-
различных научных задач, в программах должны быть определены числовые константы,
которые используются в математических и научных расчетах. Для упрощения про-
программирования в JavaScript в объект Math включены некоторые часто используемые
числовые константы. Перечень встроенных констант приведен в таблице 2.1.
Таблица 2.1. Встроенные числовые константы JavaScript
Математическая
константа
Math.E
Math.LN2
Math.LMO
Math.L0G2E
Math.LOGlOE
Math. PI
Math.SQRT1_2
Math.SQRT2
Описание
Основание натурального логарифма
Натуральный логарифм числа 2
Натуральный логарифм числа 10
Двоичный логарифм числа е
Десятичный логарифм числа е
Число Я
Квадратные корень числа 1/2
Квадратные корень числа 2
Специальные значения
В языке JavaScript определены некоторые специальные значения, которые часто
используются в математике, но гораздо реже в компьютерных вычислениях. Эти специ-
специальные значения доступны с помощью объекта Number, как показано в таблице 2.2.
Строки
С помощью строк программы получают возможности интерактивного общения с
пользователем. Строки настолько важны, что на сегодняшний день было бы нево-
невообразимо создать язык программирования, в котором не использовались бы строки.
Глава 2. Языковые конструкции JavaScript
Таблица 2.2. Специальные
Числовая константа
Number.MAX_VALUE
Number.MIN_VALUE
Number.NaN
Number.POSiTIVEJNFINITY
Number.NEGATIVE_INFINITY
числовые значения
Описание
Наибольшее представимое число
Наименьшее представимое число
Не число
Положительная бесконечность
Отрицательная бесконечность
м
Строки в JavaScript
В мире С и C++ работа со строками чем-то напоминает визит к стоматологу. Ра-
Работа со строками в JavaScript — это как поход в кондитерский магазин.Строки мо-
могут содержать любое число символов или не содержать символов. Строки объявля-
объявляются путем указания составляющих их символов, заключенных между начальными
и конечными двойными (" ") или одинарными (' ') кавычками. А что делать в слу-
случае, если строка должна содержать двойные или одинарные кавычки? Нет проблем.
JavaScript интерпретирует одинарные кавычки как часть строки, если они находят-
находятся между двойными кавычками. Аналогично, двойные кавычки считаются частью
строки, если они находятся между одинарными кавычками. Если единственной аль-
альтернативой при объявлении строки, содержащей одинарные кавычки, являются
одинарные кавычки, или если при объявлении строки, содержащей двойные кавычки,
должны использоваться двойные кавычки, то в этом случае необходимо использовать
управляющие последовательности (см. следующий раздел, "Специальные символы").
Специальные символы
Как и в С и C++, управляющие последовательности, которые обозначаются сим-
символом обратной косой черты (\), позволяют использовать специальные символы,
которые другим способом не могут быть присвоены строковой переменной. Перечень
возможных управляющих символов приведен в таблице 2.3.
Другие типы данных
Вне компьютерного мира существуют неопределенности и неопределенные зна-
значения, с которыми мы сталкиваемся каждый день. Компьютерные программы, ко-
которые имитируют реальный мир, должны уметь справляться со всеми такими нео-
неопределенностями и неопределенными значениями. С целью предотвращения
возникновения подобных ситуаций в JavaScri pt предусмотрены некоторые специаль-
специальные типы данных.
Булев тип данных
Булев тип данных намного проще других типов данных, поскольку может пред-
представлять лишь одно из двух возможных значений: true или false. Иногда в выражени-
выражениях, использующих булев тип, значение true легче представить как включенное со-
состояние или "да", а значение false — как выключенное состояние или "нет". В
JavaScript true и false часто представляются как 1 (true) и 0 (false).
Ключевое слово null
В JavaScript предусмотрено ключевое слово null, которое соответствует ситуации,
когда переменная не содержит значения. В некоторых языках null и 0 считаются эк-
эквивалентными, но в JavaScript эти значения считаются разными.
52
Часть 1. Обзор JavaScript
Таблица 2.3. Управляющие последовательности и соответствующие им символы
Управляющая
последовательность
\ь
\f
\п
\г
\t
V
\"
\\
\ххх
\ XX
\ иХХХХ
Символ
Символ забивки
Прогон страницы
Новая строка
Возврат каретки
Табуляция
Одинарная кавычка
Двойная кавычка
Обратная косая черта
Символ, заданный тремя восьмеричными цифрами XXX
(от 000 до 377)
Символ, заданный двумя шестнадцатиричными цифрами
XX (от 00 до FF)
Символ Unicode, заданный четырьмя шестнадцатиричными
цифрами ХХХХ (от 0000 до FFFF)
Неопределенные значения
До сих пор у читателей могло возникнуть предположение, что по своей сути зна-
значения undefined и null идентичны, но это не так. В действительности undefined пред-
представляет собой скорее концепцию, не тип данных, как в случае с ключевым сло-
словом null.
Для чисел ключевое слово undefined эквивалентно ключевому слову NaN, для
строк используется значение undefined, а для булевых значений — значение false.
Обзор переменных
Компьютерные программы бесполезны, если отсутствует временная память,
предназначенная для хранения данных. Переменные обеспечивают возможность хра-
хранения данных во время выполнения программы. В некоторых языках программиро-
программирования, например, в С и C++, на использование переменных накладываются жест-
жесткие ограничения, но в JavaScript переменные использовать легко и удобно.
Именование переменных
Одним их ключевых условий написания хорошего кода является присваивание пере-
переменным удобных имен. В этом случае программист, вносящий изменения в чужой код,
может легко запомнить какие данные хранятся в каждой переменной. Перед тем, как
приступить к именованию переменных, необходимо запомнить следующие правила:
• Первым символом имени должна быть буква или символ подчеркивания (_).
• Второй и последующие символы могут быть буквами, символом подчеркива-
подчеркивания или цифрой.
• Буквы могут быть как в верхнем так и в нижнем регистре. JavaScript различа-
различает буквы верхнего и нижнего регистра. Так, например, переменная jobTitle от-
отличается от переменной JOBtitle.
Глава 2. Языковые конструкции JavaScript Э о
Присваивание значений
После выбора имени переменной пора объявить переменную и присвоить ей зна-
значение. Для объявления переменной используется ключевое слово var, за которым
следует имя переменной. Многие программисты с целью уменьшения объема созда-
создаваемого кода предпочитают с помощью одного оператора var объявлять несколько
переменных. В таких случаях имена переменных разделяются запятыми. После объяв-
объявления переменных они содержат значение undefined, поскольку значения им еще не
присвоены. Следует помнить, что в языке JavaScript undefined - это специальное зна-
значение.
После объявления переменной с помощью оператора присваивания (=) можно
назначить значение. Часто объявление переменной и присваивание ей значения вы-
выполняется за один шаг. При попытке присвоить значение переменной, которая не
была объявлена с помощью ключевого слова var, JavaScript автоматически создаст
глобальную переменную. Пример объявления переменной и присваивания ей значе-
значения показан в листинге 2.2. При выполнении кода в окне браузера появляется пред-
предложение "Джеймсу 49 лет, его рост 180 см".
Листинг 2.2. Объявление переменных и присваивание значений
<html>
<script type="text/javascript" language="JavaScript">
<!--
//Объявление переменной без присваивания
var firstName;
//Присваивание значение переменной без ее объявления
firstName = "Джеймсу";
//Объявление переменных и присваивание им значения
var age = 49, height = 180;
//Вывод на экран результата
document.write(firstName," ",age," лет, его рост ",height," см.");
//-->
</script>
</html>
ITi*ri"ll Чтобы избежать проблем с областью действия переменных, всегда объявляй-
объявляйте переменные с помощью ключевого слова var.
Область видимости
В JavaScript переменная может быть либо глобальной, либо локальной. Все пе-
переменные являются глобальными, если они объявлены не в функции. Переменные,
объявленные в функции, являются локальными для этой функции. В JavaScript до-
допускается использование двух переменных с одинаковым именем, если одна из пе-
переменных является глобальной, а вторая - локальной в функции. При использова-
использовании переменной в функции будет вызываться локальная переменная, при
использовании переменной вне функции, будет вызываться глобальная переменная
(см. листинг 2.3).
ПРЕДОСТЕРЕЖЕНИЕ
При объявлении переменных в функции необходимо всегда исполь-
использовать ключевое слово var, в противном случае будет создана глобальная переменная.
54
Часть I. Обзор JavaScript
Листинг 2.3. Пример области видимости переменных
<html>
<Ь2Хи>Прайс-лист по мониторам</и></Ь2>
<script type="text/javascript" language="JavaScript">
<!--
//Инициализация глобальных переменных
color = "зеленого";
var size = 15;
//Объявление функции вывода на экран прайс-листа мониторов
function monitorSpecs()
{
//Объявление в функции переменных м присвоение им значений
color = "пурпурного";
price = "$300.00";
var size = 17;
document.write("Цена ", size,"-дюймового ",color);
document.write(" монитора - ",price);
}
//Вызов функции monitorSpecs()
monitorSpecs () ;
//Вывод на экран значения переменных вне функции
document.write("<Ьг>Цена ", size,"-дюймового ",color);
document.write(" монитора — ",price);
II —>
</script>
</html>
Результаты выполнения сценария примера в теле HTML-документа приведены на
рис. 2.1. Код начинается с объявления двух глобальных переменных: color и size. В
функции monitorSpecs() создается новая переменная с именем size, область видимо-
видимости которой ограничивается только данной функцией. Поскольку в функции не ука-
указано ключевое слово var значение глобальной переменной color было изменено с
"зеленого" на "пурпурного". Кроме того, была объявлена новая глобальная перемен-
переменная price, при объявлении которой не использовалось ключевое слово var.
Преобразование типов
В таких языках как С и C++, преобразование типов очень важный и сложный
процесс, но в JavaScript преобразование типов выполняется без труда. В отличие от
других языков программирования в JavaScript переменная может содержать любой
тип данных. Это означает, что переменной можно вначале присвоить строковое зна-
значение, а затем записать в нее целое число. Кроме того, язык JavaScript пытается сам
выполнять все необходимые преобразования типов, например, преобразование строк
в числа и наоборот.
Рисунок 2.1.
У 17-дюймового монитора те же цвет
и цена, что у 15-дюймового, поскольку
использовались глобальные переменные
: Нф-
Прайс-лист по мониторам
Цена 17-дюймового пурпурного монитора - $300 00
Цена 15-дюймового пурпурного монит рд % пи ПО
Глава 2. Языковые конструкции JeveScript UU
Массивы
Массивы позволяют программисту хранить данные в одной структуре данных под
определенным номером, который называется индексом. Индексация массивов все-
всегда начинается с 0. Кроме того, JavaScript позволяет использовать вложенные мас-
массивы, которые называются многомерными массивами.
Реализация массивов в JavaScript не оставалась неизменной. Первоначально мас-
массивы в JavaScript 1.0 фактически были не массивами, а объектами JavaScript с боль-
большим набором свойств. Объект Array появился в версии JavaScript 1.1, а в более по-
поздних версиях возникли дополнительные возможности. На сегодняшний день массивы
являются мощным элементом с большим количеством различных возможностей, но
поскольку реализация массивов изменялась от версии к версии, программисту при-
приходится тратить время на изучение параметров массивов в разных версиях JavaScript.
Начать следует с последних версий JavaScript и постепенно переходить к более ран-
ранним, до версии JavaScript 1.1, в которой массивы были использованы впервые.
Одномерные массивы
Для создания экземпляра массива используется оператор new совместно с объек-
объектом Array. Массив можно объявить четырьмя способами. Во-первых, пустой массив
можно создать, с помощью конструктора без указания параметров, как показано в
следующем примере кода JavaScript:
var x = new Array () ;
Второй способ создания массива — заполнить список параметров конструктора
элементами массива. Одной из отличительных особенностей массивов в JavaScript
является возможность хранения в одном массиве данных различного типа. Например,
приведенная ниже строка кода создает массив, в котором содержаться три строки,
"красный", "желтый" и "зеленый" и целые числа 1, 5 и 8:
var х = new Array("красный","желтый","зеленый",1,5,8);
Третий метод создания массива — указание в списке параметров конструктора
размера массива. При этом инициализируется массив с целью хранения указанного
количества элементов, но не определяются значения самих элементов. Например,
приведенная строка кода создает массив, в котором могут находиться 6 элементов:
var х = new Array F) ;
illHШгагД||Шгя Приведенный формет war x = new Array(n); не распознается в
версии JaveScript 1.2, поэтому число, укезенное в списке переметров, записывается
как элемент с индексом О.
Четвертый и самый быстрый способ создания массива - использование стандар-
стандартных для массива квадратных скобок и заполнение массива данными:
var х = ["храсный","желтый","зеленый",1,5,8];
После создания массива считывание и запись данных осуществляется с помощью
оператора [] посредством указания индекса элемента.
Строковые индексы
До сих пор рассматривался доступ к элементам массива только с помощью чис-
числового индекса, но индексацию в массив можно осуществлять и с помощью строк,
при этом в операторе [] указывается строковой индекс. Пример использования строк
56
Часть I. Обзор JavaScript
для индексации в массив количества товара в магазине одежды приведен в листинге
2.4. На рис. 2.2 приведен инвентарный перечень товаров из магазина одежды.
Листинг S.4. Использование строк для индексации в массиве
<html>
<Ь2Хи>Инвентарный перечень товаров в магазине одежды</и></Ь2>
ocript type="text/javascript" language="JavaScript">
<!--
//Заполнение массива данными о количестве товара
function populateArray(products)
{
products["рубашки"]=46;
products["брюки"]=23;
products["шляпы"] =14;
products["носки"]=153;
}
//Вывод на экран данных о запасов товаров
function displayArray(products)
document.write(products['рубашки']
document.write(products['брюки'],"
document.write(products['шляпы'],"
document.write(products['носки'], "
" рубашек.<br>")
брюк.<Ьг>");
шляп.<Ы>") ;
пары носков.");
//Создание массина, описывающего запасы товаров
var productQty = new Array() ;
//Определение запасов товара
populateArray(productQty);
//Отображения количества
//товаров
displayArray(productQty);
</script>
</html>
Размер массивов
В отличие от массивов в С и C++, в языке JavaScript размер массива может из-
изменяться динамически. Например, в массиве можно сохраняться элемент с индек-
индексом, который даже не был объявлен с помощью оператора []. Кроме того, длину
массива можно изменить с помощью атрибута length объекта Array. Если первона-
первоначально длина массива составляла 10, но за счет изменения значения атрибута length
объекта уменьшается до 5, элементы с индексами от 5 до 9 теряются.
Одним из преимуществ использования объекта Array является наличие у него
различного рода методов для работы с массивами. Описание некоторых методов
объекта Array приведены в таблице 2.4. Описание приведенных методов можно най-
найти в главе 7 данной книги.
Рисунок 2.2. Для вывода на экран
инвентарного перечня товаров из
магазина одежды используется
индексация с помощью строк
Инвентарный перечень товаров в
магазине одежды
46 рубашек.
23 брюк
И шляп
153 пары носков.
.-Si CS
Глава 2. Языковые
Метод
join()
reverse()
sort()
concat()
slice()
spiice()
push()
pop()
unshift()
shift()
toString()
конструкции JavaScript 5 7
Таблица 2.4. Методы объекта Array.
Описание
Выполняет конкатенацию всех элементов массива в одну строку.
Изменяет порядок элементов массива на обратный.
Сортирует элементы массива.
Выполняет конкатенацию массива с другим массивом.
Вычленяет подмассив массива.
Вставляет элементы в массив и удаляет элементы из массива.
Добавляет элементы в конец массива.
Удаляет последний элемент массива.
Добавляет элементы в начало массива.
Удаляет начальные элементы массива.
Преобразует элементы в строку.
Многомерные массивы
Чтобы создать в JavaScript много- 1и11^|шаи^а'шл1^шц|т'н^н'!ДЯИМ1и«М1ШИпш
мерные массивы, необходимо чтобы т е* *т *а*** ь*> я* и*«" ~Щ
элементы массива сами были масси-
массивами. Доступ к элементам внутрен-
него массива можно получить с „
Номер Наименование Номер модели Количество,
помощью двух последовательно рас-
расположенных операторов []. Пример
использования многомерного массива
для хранения перечня автозапчастей
(тормозная система) приведен в лис- %)<>«»'
Опись деталей тормозов
1 Тормозные колодки :39D48G Ш
2 Тормозные башмаки I7D9UK3 :!45
3 Втулки 97WOST W
■31
тинге 2.5. Как видно из рис. 2.3, доступ Рисунок 2.3. Использование многомерного массива
к перечню автозапчастей осуществля- для отображения перечня деталей тормозов
ется с помощью двойного оператора
[]. Затем элементы перечня отображаются на экране в виде таблицы.
Листинг 2.5. Пример использования многомерного массива
<htrol>
<Ь2Хи>0пись деталей тормозов</иХ/Ь2>
<script type="text/javascript" language="JavaScript">
<!--
//Отображение описи деталей тормозов в виде таблицы
function displaylnventory(table)
{
document.write("<table border=on>");
document.write("<th>HoMep</th><th>HaHMeHOBaHHe</th>");
document.write ("<th>HoMep
//Отображение на экране каждой детали
for(K=l; x<=3;
document.write("<tr><td>",x,"</td>");
//Отображение сведений относительно каждой детали
for(y=0; у<=2;
UO Часть I. Обзор JavaScript
document.write("<td>",table[x] [y],"</td>") ;
}
document.write("</tr>");
)
document.write("</table>");
}
//Создание перечня деталей тормозов с помощью
//многомерного массива
parti = new Array("Тормозные колодки",9D48G",78);
part2 = new Array("Тормозные башмаки",D9UK3",45);
part3 = new Array("Втулки","97WOST",4");
brakeParts = new Array("",parti,part2,part3);
//Отображение перечня деталей тормозов
displaylnventory(brakeParts) ;
//-->
</BCript>
</html>
Использование массивов в качестве объектов
Поскольку массивы фактически являются объектами JavaScript, доступ к элементам
массива при использовании строковых индексов осуществляется так же, как и к его
свойствам. Вместо оператора [] используется запись с помощью точки. Например, при-
пример с магазином одежды, приведенный в листинге 2.4, при использовании свойств бу-
будет выглядеть так, как показано в листинге 2.6. Обратите внимание, что для доступа к
элементам массива может использоваться как оператор [], так и точечная запись. Ре-
Результаты выполнения этого кода аналогичны результатам, показанным на рис. 2.2.
Листинг 2.6. Пример использования свойств массива
<html>
<Ь2Хи>0пмсь товара магазина одежды</и></Ь2>
<script type="text/javascript" language="JavaScript">
<! --
//Заполнение массива данными о количестве товара
function populateArray(products)
{
products.рубашки=4 6;
products.брюки=23;
products["шляпы"]=14;
products["носки"]=153 ;
>
//Отображение количества товара на экран
function displayArray(products)
{
document.write(products['рубашки']," рубашек.<br>");
document.write(products f'брюки']," брюк.<br>");
document.write(products.шляпы," шляп.<Ьг>");
document.wri te(products.носки," пары носков.");
}
//Создание массива, определяющего количество товара
var productQty = new Array();
//Установка количества товара
populateArray(productQty);
//Отображение количества товара на экран
displayArray(productQty);
//-->
</script>
</html>
Глава 2. Языковые конструкции JavaScript ЗУ
Массивы в JavaScript 1.0
Как уже упоминалось ранее, для создания массивов в JavaScript l.O первоначально
использовался конструктор Object(). Поскольку доступ к свойствам объекта Object()
можно было получить с помощью оператора [], создается иллюзия наличия массива.
В соответствии с такой концепцией новый объект создавался с помощью конст-
конструктора Object(). После этого объект можно заполнить элементами с помощью опе-
операторов []. Поскольку это основной объект, задача отслеживания длины массива
ложилась па самого программиста. Самым простым способом отслеживания длины
массива является создание свойства length. К сожалению, свойства используют ячейки
массива, доступ к которым осуществляется с помощью оператора [], поэтому свой-
свойство length занимало бы в массиве ячейку с индексом 0.
В листинге 2.7 приведен пример создания массива, представляющего собой инст-
инструментальный ящик, с использованием конструктора Object(). Код выводит на эк-
экран предложение: "В инструментальном ящике находятся: молоток гаечный ключ
гвозди".
Листинг 2.7. Создание массива в JavaScript 1.0
<html>
<script type="text/javascript" language="JavaScript">
<! --
//С помощью конструктора Object() создается массив
var toolbox = Object();
toolbox.length=3; //Элемент массива с индексом 0
toolbox[1]="молоток";
toolbox[2]="гаечный ключ";
toolbox[3]="гвозди" ;
//Отображение на экране переченя находящихся в ящике инструментов.
document.write("В инструментальном ящике находятся: ") ;
for(x=l; x<=toolbox.length; х++)
{
document.write(toolbox[x]," " ) ;
</script>
</html>
Операции
В JavaScript присутствует большинство общих операций, которые есть в любом
языке программирования. Благодаря существующим в JavaScript методам работы со
строками, некоторые из операций выглядят несколько проще, чем в других языках.
Арифметические операции
Как и любой другой язык программирования, JavaScript позволяет выполнять
большое количество арифметических операций. В число арифметических операций
входят сложение и вычитание, которые используются всеми программистами, а так-
также менее распространенные операции определения остатка от целочисленного де-
деления и операции инкремента/декремента.
UlliUIVT&'jftulin Перед выполнением всех арифметических операций JavaScript преоб-
преобразовывает строки в числа, если это возможно. Если строку нельзя преобразовать в
число, возвращается значение IMalM (не определено).
60
Часть I. Обзор JavaScript
Те, кто имеет опыт программирования на других языках, обнаружит, что язык
JavaScript очень гибок в отношении поддержки операций и математических функций.
Это обусловлено не только наличием встроенных операций, но и возможностью
использования более сложных математических операций, реализуемых объектом Math.
Функции объекта Math перечислены в табл. 2.5, а их описание приведено в главе 7.
Таблица 2.5. Дополнительные математические методы
Метод
Math.abs()
Math.acos()
Math.asin()
Math.atan()
Math.atan2()
Math.ceil()
Math.cos()
Math.exp()
Math.floor()
Math.log()
Math.max()
Math.min()
Math.pow()
Math.random()
Math.round()
Math.sin()
Math.sqrt()
Math.tanQ
Описание
Абсолютное значение
Арккосинус
Арксинус
Арктангенс
Арктангенс
Наименьшее целочисленное значение, большее или равное аргументу
Косинус
Экспонента
Наибольшее целочисленное значение, меньшее или равное аргументу
Натуральный логарифм
Большее из двух чисел
Меньшее из двух чисел
Степень числа
Случайное число
Округление
Синус
Квадратный корень
Тангенс
Операция сложения
Операция сложения (+) относится в числу наиболее часто используемых опера-
операций. Если значения по обе стороны от операции сложения являются числами, про-
производится их сложение. Если значения являются строками, выполняется конкатена-
конкатенация строк. Следующая строка кода
var resultOfAdd = 34 + 12;
установит значение переменной resultOfAdd равным 46, а строка
var resultOfAdd = "a" + "corn";
установит значение переменной resultOfAdd равным строке "acorn".
Операция вычитания
Операция вычитания (-) вычитает число, расположенное справа от операции, из
числа, расположенного слева от операции. Если хотя бы один из операндов являет-
Глава 2. Языковые конструкции JavaScript О I
ся строкой, выполняется попытка преобразования строки в числа. Так, например,
следующие строки кода
var aNum = String(02");
var resultOfSub = 25 - aNum;
перед выполнением операции вычитания преобразуют строку, хранящуюся в пере-
переменной aNum, в число. Результат вычитания (-77) присваивается переменной
resultOfSub.
Операция умножения
Операция умножения (*) используется точно так же, как и в любых других языках
программирования, — выполняет умножение значений операндов. Операция умноже-
умножения в отношении обработки строк ничем не отличается от операции вычитания. Если
хотя бы один из операндов является строкой, выполняется попытка преобразования
строки в числа. Так, например, следующие строки кода
var aNum = String(02");
var resultOfSub = 25 - aNum;
перед выполнением операции умножения преобразуют строку, хранящуюся в пере-
переменной aNum, в число. Результат умножения C5) присваивается переменной
resultOfMult.
Операция целения
Операция деления (/), несмотря на кажущуюся простоту, после целого дня про-
программирования может сбить с толку: "Какое число делится на какое число?" Левое
значение делится на правое значение. Как и при использовании предыдущих опера-
операций, если хотя бы один из операндов является строкой, выполняется попытка пре-
преобразования строки в числа. Так, например, следующие строки кода
var aNum = String (") ;
var resultOfDiv = 42 / aNum;
перед выполнением операции деления преобразуют строку, хранящуюся в перемен-
переменной aNum, в число. Результат деления F) присваивается переменной resultOfDiv.
Операция определения остатка от деления
Несмотря на то что операция определения остатка от деления (%) применяет-
применяется реже других операций, его использование, как правило, означает небольшой ма-
математический трюк. Действие этой операции начинается, как и операции деления, —
делением левого значения на правое, но вместо обычного результата деления, воз-
возвращается остаток от деления. Как и в предыдущих операциях, если хотя бы один
из операндов является строкой, выполняется попытка преобразования строки в чис-
числа. Так, например, следующие строки кода
var aNum = String(");
var resultOfMod = 26 % 3;
перед выполнением операции определения остатка от деления преобразуют строку,
хранящуюся в переменной aNum, в число. Остаток от деления 2 присваивается пе-
переменной resultOfMod.
Префиксная операция инкремента
Префиксная операция инкремента (++) объединяет две часто выполняемых про-
программистами операции в одну, сокращая объем кода и упрощая его. Эта операция
особенно удобна при организации циклов for. В коде префиксная операция инкремента
Ос. Часть I. Обзор JavaScript
записывается непосредственно перед переменной, значение которой необходимо
увеличить. Операция начинается с увеличения значения переменной на 1. В резуль-
результате возвращается полученное значение. Если переменная содержит строку, она пре-
преобразуется в число. Так, например, следующий блок кода
//Цена составляет 5.00 долларов
var price = String(");
//После приращения цены добавить фрахтовую ставку C.00 доллара)
var pricePlusShipping = (++price) + 3 ;
перед выполнением префиксной операции инкремента преобразует строку, содер-
содержащуюся в переменной price, в число. Выполнение префиксной операции инкремента
приводи к тому, что значение переменной price увеличивается с 5 долларов до 6, а
переменной pricePlusShipping присваивается значение 9.
Постфиксная операция инкремента
Постфиксная операция инкремента (++) по внешнему виду не отличается от
префиксной операции инкремента. Отличие проявляется в другом расположении этой
операции, что сказывается на ее поведении. Во-первых, постфиксная операция ин-
инкремента располагается непосредственно после переменной. Во-вторых, в отличие от
префиксной операции инкремента, постфиксная операция инкремента возвращает
значение переменной, которое она имела до увеличения на 1. Если переменная со-
содержит строку, она преобразуется в число. Так, например, следующий блок кода
//Цена составляет 5.00 долларов
var price = String(") ;
//Добавление фрахтовой ставку C.00 доллара) перед приращением цены
var pricePlusShipping = (price++) + 3 ;
перед выполнением постфиксной операции инкремента преобразует строку, присво-
присвоенную переменной price, в число. Выполнение постфиксной операции инкремента
приводит к тому, что значение переменной price увеличивается с 5 долларов до 6,
но с фрахтовой ставкой складывается первоначальное значение цены — т.е. 5 долларов.
В результате, переменной pricePlusShipping присваивается значение 8.
Префиксная операция декремента
Префиксная операция декремента (--) очень похожа на префиксную операцию
инкремента по месту своего расположения (слева от переменной) и порядку выпол-
выполнения. Существует только одно различие: префиксная операция декремента умень-
уменьшает значение переменной на 1. Как и в случае с предыдущими операциями, если
переменная содержит строку, она преобразуется в число. Так, например, следующий
блок кода
//Цена составляет 20.00 долларов
var price = String(0");
//Вычесть скидку F.00 долларов) из цены после ее уменьшения
var priceMinusDiscount = (--price) - 6 ;
перед выполнением префиксной операции декремента преобразует строку, присво-
присвоенную переменной price, в число. Выполнение префиксной операции декремента при-
приводит к тому, что значение переменной price уменьшается с 20 долларов до 19, а в
переменной priceMinusDiscount присваивается значение 13.
Постфиксная операция декремента
Постфиксная операция декремента (--) очень похожа на постфиксную операцию
инкремента по месту своего расположения (справа от переменной) и порядку вы-
Глава 2. Языковые конструкции JavaScript fc) о
полнения. Но как предполагает имя операции, оиа уменьшает значение переменной
на 1. Если переменная содержит строку, оиа преобразуется в число. Так, например,
следующий блок кода
//Цена составляет 20.00 долларов
var price = 20
// Вычесть скидку F.00 долларов) из цены перед ее уменьшением
var priceMinusDiscount = (price--) - б ;
перед выполнением постфиксной операции декремента преобразуют строку, содер-
содержащиеся в переменной price, в число. Выполнение постфиксной операции декремента
приводит к тому, что значение переменной price уменьшается с 20 долларов до 19,
но для вычисления значения цены со скидкой, присваиваемого переменной
priceMinusDiscount, используется значение 20.
Унарная операция отрицания
Унарная операция отрицания (-) используется в математических вычислениях при
необходимости изменения знака числа. При изменении знака переменной следует
иметь в виду, что содержимое самой переменной не изменяется, операция изменяет
знак только возвращаемого значения. Как и во всех других операциях, если значе-
значение является строкой, выполняется попытка преобразования ее в число. Так, напри-
например, следующий блок кода
var aNumber = String(7") ;
var resultOfNeg = -aNumber;
перед выполнением операции изменения знака преобразуют строку, присвоенную
переменной aNumber, в число. В результате операции переменной resultOfNeg присва-
присваивается значение -67.
Строки
При обработке строк операция сложения (+) выполняет особую функцию. Если
оба операнда операции являются строками, выполняется их конкатенация. Если стро-
строкой является только одно значение, второе значение преобразовывается в строку и
конкатенируется с первым. Чтобы быстрее освоить различные комбинации при ис-
использовании операции сложения чисел и строк изучите код из листинга 2.8.
Листинг 2.8. Использование операции сложения для сложения числовых
и строковых значений
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Объявление 2 числовых переменных и 2 строковых переменных
var sStringVarl = "Здравствуй";
var sStringVar2 = "мир";
var nNumVarl = 5 ;
var nNumVar2 = 10;
// Выполнение трех операций сложения
var sStringTotal = sStringVarl + sStringVar2;
var nNumTotal = nNumVarl + nNumVar2;
var sStringNumTotal = sStringTotal + nNumTotal;
// С помощью функции document.write() отображение результатов на
// экране. Обратите внимание, что операция сложения используется
// даже вместо запятой для конкатенации результатов сложения с
// текстом на странице.
64
Часть I. Обзор JavaScript
document.write("<Ь>Строковое значение: </b>"+sStringTotal+"<br>");
document.write('" <Ь>Числовое значение: </b>",nNumTotal,"<br>") ;
document.write("<Ь>Строка + число: </Ь>",sStringNumTotal) ;
II —>
</script>
</html>
Результат выполнения кода, включенного в тело HTML-документа,приведен на
рис. 2.4. Как видно из рисунка, при применении операции сложения по отношению
к двум строкам или строке и числу выполняется конкатенация строк. При сложении
двух чисел, как и ожидалось, вычисляется их сумма.
Присваивание
Зачем нужны переменные, если бы им нельзя было присвоить значения? Как и
во всех других языках, в JavaScript существует оператор присваивания, который по-
позволяет записывать в переменные данные. Пример формата оператора присваивания
приведен ниже. В данном примере переменной х присваивается значение 6.
х = 6;
Помимо такого однократного присваивания, оператор присваивания может ис-
использоваться и для совместного присваивания, при котором одновременно присва-
присваиваются значения нескольким переменным. Пример совместного присваивания при-
приведен в следующей строке кода, в которой переменным х, у и z присваивается
значение 6:
х = у
z = 6;
Выполнение оператора совместного присваивания выполняется справа налево. Так
в приведенном выше примере, сначала значение 6 получит переменная г. После этого
переменная у получит значение, хранящееся в переменной z и, наконец, значение,
хранящееся в переменной у будет присвоено переменной х. В результате всем пере-
переменным будет присвоено значение 6.
Поскольку оператор присваивания аналогичен операциям сложения (+) и вычи-
вычитания (-), его можно использовать в различного рода выражениях. Это позволяет
выполнять присваивание и вычислять математические выражения за один шаг:
у = (х
3) + 4;
В приведенном примере переменной х присваивается значение 3, которое затем
складывается со значением 4. Затем значение суммы присваивается переменной у.
После вычисления выражения переменная у будет содержать значение 7. В приведен-
приведенной строке выполняются одновременно три операции: присваивание значения пере-
переменной х, сложение и присваивание значения переменной у. Такие особенности де-
делают язык JavaScript гибким и простым в использовании.
После рассмотрения оператора присваивания можно привести более сложный
пример — пример, в котором присутствуют все описанные типы присваивания и даже
некоторые более сложные. Код примера приведен в листинге 2.9, а результат его
выполнения - на рисунке 2.5.
«Netscape
Fte
Рисунок 2.4.
Пример использования операции
сложения для сложения чисел и
конкатенации строк.
Строковое значение Здравствуймир
Числовое значение; 15
Строк л + чшл.0- -?дравствуймир15
И»-*]* Diruraenf Don
Глава 2. Языковые конструкции JavaScript
65
Рисунок 2.5.
Результат выполнения
присваиваний различного типа
Jg Netscape
■File Edit View '• Go' :Comtnjnicafor: M^l
После одиночного присваивания
JF=7
z=9
После совместного присваивания
х=14
у=14
z=14
После совместного присваивания в выражении
х=21
у=17
z=2
^t - ■] г и ос ument D опв - ^
Листинг 2.9. Пример использования операторов присваивания в языке JavaScript
<html>
<script type="text/javascript" language="JavaScript">
помощью одиночного присваивания
// Объявление переменных с
х = 3;
у = 7;
z = 9;
//Отображение значений, которые были присвоены переменным с помощью
//одиночного оператора присваивания
document.write("<и>После одиночного присваивания</и><Ьг>");
document.write("x=",х,"<br>y=",у,"<br>z=",z,"<br>");
//Выполнение совместного присваивания
x = y = z = 14;
//Отображение значений, которые были присвоены переменным
//с помощью совместного присваивания
document, write ("<и>После совместного присваивания</иХЫ>" ) ;
document.write("х=",х,"<Ьг>у=",у,"<br>z=",z,"<br>");
//Выполнение совместного присваивания в выражении
х = (у = 17) + B * (z = 2)) ;
//Отображение значений переменных после совместного присваивания
//в одном выражении,
document.write(
"<u> После совместного присваивания в выражении</и><Ьг>");
document.write("x=" ,х,"<br>y=",у,"<br>z=",z,"<br>") ;
</script>
</html>
Кроме основного оператора присваивания в JavaScript имеется несколько допол-
дополнительных операторов, которые расширяют возможности операции присваивания. Эти
операторы объединяют возможности основного оператора и других операторов в
один оператор. Дополнительные операторы присваивания и эквивалентные им опе-
операции приведены в табл. 2.6. Описание операторов приведено в главе 7.
66
Оператор
+=
-=
*=
/=
%=
<<=
»=
>»=
&=
1 =
"=
Часть 1. Обзор JaveScript
Таблица 2.6. Дополнительные операторы присваивания
Пример
х+=у
х-=у
х*=у
х/=у
х%=у
х<<=у
х»=у
х»>=у
х&=у
х|=у
х"=у
Эквивалентные операции
х = х + у;
х = х - у;
х = х * у;
х = х / у;
х = х % у;
х = х << у;
х = х >> у;
х = х >>> у;
х = х & у;
х = х | у;
х = х " у;
Все дополнительные операторы присваивания, за исключением +=, перед выпол-
выполнением операции пытаются преобразовать строки в числа. При использовании строк
с оператором += левый операнд конкатенируется с правым операндом. Например,
в листинге 2.10 переменной у будет присвоена строка "lighthouse" и на экран будет
выведено "у= lighthouse".
Листинг 2.10. Пример использования оператора сложения с целью конкатенации строк
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Объявление строки
у = "light";
//Добавление строки "house" к концу строки,
//содержащейся в переменной у
у += "house";
// Отображение результатов
document.write("у= ",у) ;
//-->
</script>
</html>
До сих пор рассматривалось только присваивание значений переменным. При этом
возникает вопрос, можно ли назначить переменной ссылку? При использовании опе-
оператора присваивания к основным значениям (числам, строкам, булевым значени-
значениям, null и undefined), создается лишь копия значения. При использовании оператора
присваивания по отношению к объектам JavaScript оператор присваивания копиру-
копирует ссылку на объект. Для иллюстрации этого различия рассмотрим код из листинга
2.11, в котором создается переменная и массив чисел. Значение переменной копи-
копируется в другую переменную, а ссылка на массив копируется в другой массив. Что-
Чтобы продемонстрировать различие в работе оператора присваивания изменяется зна-
значение одной переменной и изменяется один из массивов, после чего все значения
выводятся в окне браузера, как показано на рис. 2.6.
Глава 2. Языковые конструкции JavaScript
67
'■ Ete: £rf* View : Go •■•■ Communicator Jielp*
Рисунок 2.6. Переменным numberl и
number2 значения присваиваются с
помощью передачи значений, в то
Лу.лг , : atrayOfNuml[0]=23
время как массивам arrayOfNuml и
arrayOfNum2 значения передаются
по ссылке
number 1=94
пшпЬег2=2Э
arrayOfNum2[0]=23
arrayOQTum2[lH7
k' " Dofumefif Done
Листинг 2.11. Присваивание значений и ссылок
<html>
<script type="text/javascript" language="JavaScript" >
<!--
//Объявление переменной и массива
var numberl = 94;
var arrayOfNuml = new ArrayB3,86);
// Присваивание значений
var number2 = numberl;
//Выполнение присваивания ссылки
var arrayOfNum2 = arrayOfNuml;
i
//Изменение значения, хранящиеся в скопированной переменной и массиве
number2 = 29;
array0fNum2[l] = 4 7;
//Отображение значений переменных и массивов
document.write("numberl=",numberl,"<br>");
document.write("number2=",number2,"<br>");
document.write("arrayOfNuml[0]=",arrayOfNuml[0],"<br>");
document.write("arrayOfNuml[1]=",arrayOfNuml[1],"<br>");
document.write("arrayOfNum2[0]=",arrayOfNum2[0],"<br>");
document.write("arrayOfNum2[1]=",arrayOfNum2[1],"<br>");
II —>
</script>
</html>
Логические операции
Вязыке JavaScript имеются три логических операции. Без их применения програм-
программы были бы длинными и сложными. Большинство программистов полагают, что они
уже знают, как функционируют эти операции, но в действительности необходимо
более глубокое изучение. Незнание принципа функционирования логических опера-
операций может привести к возникновению, на первый взгляд, случайных ошибок, при-
причину которых выяснить и исключить будет практически невозможно. Поэтому не
пожалейте времени и прочтите описание каждой логической операции.
В JavaScript значение true определено кек любое значение кроме О
[нуль], "" (пустая строка), null, undefined и, конечно, false.
Логическая операция И
Логическая операция И (&&) возвращает значение true, если значение выраже-
выражения слева от операции и значение выражения справа от операции равны true. Если
значение левого выражения, значение правого выражения или значения обоих вы-
выражений равны false, результатом операции будет false.
6 О Часть 1. Обзор JavaScript
К сожалению, реализация логической операции И в JavaScript несколько слож-
сложнее, чем было описано выше. Она начинается с вычисления левого операнда. Если
его значение равно false, базовая логика операции И завершается и значение пра-
правого операнда не вычисляется. Но если значение левого операнда равно true, для
получения окончательного результата выполнения операции потребуется вычислить
правый операнд. В любом случае результатом операции логического И является зна-
значение последнего вычисленного операнда.
Логическая операция ИЛИ
Логическая операция ИЛИ (||) возвращает значение true, если значение левого
выражения или значение правого выражения равно true. Если значения обоих выра-
выражений равны false, результатом операции будет false.
Как и для логической операции И, в случае с операцией ИЛИ очень важно по-
понять принцип вычисления возвращаемого результата. Выполнение логической опера-
операции ИЛИ начинается с вычисления значения левого операнда. Если его значение
равно true, базовая логика операции ИЛИ завершена и значение правого операнда
не вычисляется. Но если значение левого операнда равно false, для получения окон-
окончательного результата операции потребуется вычислить и правый операнд. В любом
случае результатом выполнения логической операции ИЛИ является значение пос-
последнего вычисленного операнда.
Логическая операция НЕ
Логическая операция НЕ (!) проще двух описанных выше операций. Значение
выражения, указанное после знака операции, инвертируется. Если значение выраже-
выражения будет true, результатом операции будет false. Если значение выражение равно
false, результатом операции будет true. Если результатом вычисления выражение яв-
является не булево значение, перед выполнением логического НЕ оно преобразовы-
преобразовывается в true или false.
Операции сравнения
В JavaScript предусмотрены те же операции сравнения, что и в большинстве язы-
языках программирования, и, кроме того, имеются две более специфических операции.
Впервые годы существования в JavaScript наблюдалась некоторая противоречивость
операций, что привело к возникновению нескольких необычных операций сравне-
сравнения. По этой причине очень важно понять принцип работы операций сравнения.
Равенство
В ходе выполнения операции равенства (==) сравниваются значение находяще-
находящееся слева от знака операции, со значением, находящимся справа от знака операции.
Если значения равны, операция возвращает значение true. Если значения не равны,
возвращается значение false.
В первых версиях JavaScript перед выполнением операции равенства операнды пре-
преобразовывались к одному типу. Например, если левый операнд операции равенства
является числом, а правый — строкой, JavaScript пытался преобразовать строку в
число и сравнить два числа. С учетом того, что в то время ожидался выпуск стан-
стандарта ECMAScript, было принято решение в JavaScript 1.2 не выполнять преобра-
преобразование типа операндов в операции равенства. Несколько позже выпущенный стан-
стандарт ECMAScript предусматривал преобразование типов, поэтому в версии JavaScript
1.3 снова перед выполнением операции равенства операнды преобразовывались к од-
одному типу.
Глава 2. Языковые конструкции JavaScript О У
Тип поведения JavaScript при выполнении операции равенства устанавливается с
помощью дескриптора <script>. Преобразование типов будет производиться при ус-
установке значения атрибута language дескриптора <script> равным "JavaScript". При
установке значения атрибута language равным "JavaScriptl.2" преобразование типов
производиться не будет.Пример такого поведения JavaScript приведен в листинге 2.12.
Листинг 2.12. Преобразование типов и операция равенства
<html>
<script type="text/javascript" language="JavaScript">
<! --
// Преобразование типов разрешено
document.write(
"Операция == при включенном преобразовании типов возвращает: ") ;
document.writeC==");
// -->
</script>
<script type="text/javascriptl.2" language="JavaScriptl.2">
<! --
// Преобразование типов запрещено
document.write(
"<Ьг>Операция == при выключенном преобразовании типов возвращает: ") ;
document.writeC==");
// -->
</script>
</html>
ы!ш1 Избегайте установки значения атрибута language рааным "JavaScriptl.2",
поскольку по стандарту производится преобразование типов операндов операции равен-
равенства.
До сих пор читатели получили представление о том, что при выполнении опе-
операции равенства выполняется преобразование типов, но принцип преобразования
типов так не был описан. Понимание принципа преобразования типов поможет сэ-
сэкономить время при отладке программы. Преобразование типов производится по сле-
следующим правилам:
• перед выполнением сравнения true преобразовывается в число 1, a false - в
число О,
• если значение хотя бы одного из операндов равно NaN, операция равенства
' возвращает значение false,
• значения null и undefined равны,
• значения null и undefined не равны ни 0 (нуль), ни "" (пустая строка), ни false,
• при сравнении строки и числа делается попытка преобразовать строку в чис-
число и сравнить два числа,
• при сравнении объекта и строки делается попытка преобразовать объект в стро-
строку и сравнить две строки,
• при сравнении объекта и числа делается попытка преобразовать объект в число
и сравнить два числа,
• если оба операнда операции равенства являются объектами, сравниваются их
адреса.
70 Часть I. Обзор JavaScript
Операция неравенства
Операция неравенства (!=) сравнивает значение выражения слева от знака опе-
операции со значением справа от знака операции. Если значения не равны, возвраща-
возвращается true. В противном случае возвращается значение false. Операция != претерпела все
те же изменения, касающиеся преобразования типов операндов, что и операция ==.
Как и в случае с операцией ==, для указания требуемого поведения используется
атрибут language дескриптора <script>.
Операция больше чем
Операция больше чем (>) сравнивает значение слева от знака операции со зна-
значением справа от знака операции. Если значение слева больше, чем значение спра-
справа, возвращается значение true. Если значение слева от меньше или равно значению
справа, возвращается значение false. Если одно из значений является строкой, пе-
перед выполнением операции оно преобразуется в число.
Операция меньше чем
Операция меньше чем (<) сравнивает значение слева от знака операции со зна-
значением справа от знака операции. Если значение слева меньше, чем значение спра-
справа, возвращается значение true. Если значение слева больше или равно значению
справа, возвращается значение false. Если одно из значений является строкой, пе-
перед выполнением операции оно преобразуется в число.
Операция больше либо равно
Операция больше либо равно (>=) сравнивает значение слева от знака операции
со значением справа от знака операции. Если значение слева больше или равно зна-
значению справа, возвращается значение true. Если значение слева меньше значения
справа, возвращается значение false. Если одно из значений является строкой, пе-
перед выполнением операции оно преобразуется в число.
Операция меньше либо равно
Операция меньше либо равно (<=) сравнивает значение слева от знака опера-
операции со значением справа от знака операции. Если значение слева меньше или рав-
равно значению справа, возвращается значение true. Если значение слева больше зна-
значения справа, возвращается значение false. Если одно из значений является строкой,
перед выполнением операции оно преобразуется в число.
Операция идентичности
Операция идентичности (===), которую иногда называют операцией жесткого
равенства, сравнивает значение слева от знака операции со значением справа от
знака операции. Если значение слева равно значению справа, возвращается значение
true. Если значения не равны, возвращается значение false. При проведении операции
проверки идентичности преобразование типов операндов не производится.
Операция неидентичности
Операция неидентичности (!==), которую иногда называют операцией жесткого
неравенства, сравнивает значение слева от знака операции со значением справа от
знака операции. Если значение слева не равно значению справа, возвращается зна-
значение true. Если значения равны, возвращается значение false. При проведении опе-
операции проверки неидентичности преобразование типов операндов не производится.
Глава 2. Языковые конструкции JavaScript
71
ПРИМЕЧАНИЕ
Операции идентичности и неидентичности имеются только в версиях,
начиная с JavaScript 1.3.
Условный оператор
Многие программисты незнакомы с условным оператором (?:), даже несмотря
на то, что он имеется во многих языках. Большинство программистов вместо услов-
условного оператора используют стандартный оператор if, хотя эти два оператора иден-
идентичны. Условный оператор несколько сложнее для чтения, нежели стандартный опе-
оператор if, но намного компактнее, что бывает особенно важно при жестких
требованиях к времени загрузки кода.
Формат условного оператора может немного сбить с толку. Выражение, резуль-
результатом которого является булево значение всегда располагается слева от знака воп-
вопроса (?). Если значение этого выражения равно true, оператор возвращает значение,
расположенное между знаком вопроса и двоеточьем (:). Если значение выражения
равно false, оператор возвращает значение, расположенное после двоеточья. В лис-
листинге 2.13 приведен пример использования стандартного оператора if наряду с услов-
условным оператором. Результаты выполнения кода из листинга приведены на рис. 2.7.
Листинг 2.13. Сравнение условного оператора и оператора if
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Установка почтового флага равным "YES"
mailFlag = "YES"
var messagel;
var message2;
//Стандартный оператор if
if (mailFlag == "YES")
messagel = "Ван поступило электронное сообщение!";
else
messagel = "Новых сообщений нет.";
//То же, но с использованием условного оператора
message2 = (mailFlag == "YES") ? "Вам поступило электронное
сообщение!" : "Новых сообщений нет.";
// Отображение сообщения
document.write("Оператор if возвращает: ",messagel,"<br>");
document.write("Условный оператор возвращает: ",message2); ,
II —>
</script>
</html>
Рисунок 2.7. Результаты
выполнения оператора if и
условного оператора
идентичны
Ш Netscape
Оператор if возвращает: Вам поступило электронное сообщение!
Условный оператор возвращает Вам поступило электронное сообщение!
af ~-ф™:1" ' ■. 'Dncumenf Done ~ /
/ С. Часть I. Обзор JavaScript
Поразрядные операции
Поразрядные операции подобны операциям сравнения, но их функции отлича-
отличаются. Если вы работали с таблицами истинности, описанные в этом разделе опера-
операции могут быть знакомы. Поразрядные операции в JavaScript используются совмест-
совместно с целыми числами длиной в 32 разряда. Если длина целого числа не равна 32
разряда, оно преобразовывается в 32-разрядное число, поскольку поразрядные опе-
операции работают только с двоичными числами, где используются только 1 и 0. По-
Поразрядные операции в программировании используются редко, но в некоторых слу-
случаях они незаменимы.
Операция Поразрядное И
При выполнении операции Поразрядное И (&) полагается, что целые числа,
расположенные по обе стороны от него, представлены 32-разрядными двоичными
числами. Затем по отношению к каждому отдельному разряду из 32 разрядов числа
слева и справа от знака операции применяется логическая операция И (&&), кото-
которая была описана ранее в этой главе. После чего 32-разрядный результат логической
операции И преобразуется в целое число, которое возвращается операцией пораз-
поразрядного И.
Операция Поразрядное ИЛИ
При выполнении операции Поразрядное ИЛИ (|) полагается, что целые числа, рас-
расположенные по обе стороны от него, представлены 32-разрядными двоичными числа-
числами. Затем к каждому отдельному разряду из 32 разрядов числа слева от операции и числа
справа от операции применяется логическая операция ИЛИ (||), которая был описан
выше в этой главе. После чего 32-разрядный результат логической операции ИЛИ пре-
преобразуется в целое число, которое возвращается операцией поразрядного ИЛИ.
Операция Поразрядное исключающее ИЛИ
При выполнении операции Поразрядное исключающее ИЛИ (л) полагается, что
целые числа, расположенные по обе стороны от него, представлены 32-разрядными
двоичными числами. В отличие от операции поразрядного ИЛИ, операция поразрядно-
поразрядного исключающего ИЛИ для вычисления битов возвращаемого значения применяет спе-
специальную версию логической операции ИЛИ, которая называется исключающее ИЛИ.
ПРИМЕЧАНИЕ
Операция Исключающае ИЛИ возвращает значение true, если зна-
значение только одного из операндов операции равно true, но не обоих операндов одно-
одновременно. Если значения обоих оперендов равны false или true, результатом выпол-
выполнения операции будет false.
Операция Исключающее ИЛИ применяется по отношению к каждому отдельно-
отдельному разряду из 32 разрядов числа слева от знака операции и числа справа от знака
операции. После этого 32-разрядный результат логической операции исключающего
ИЛИ преобразуется в целое число, которое возвращается из операции поразрядно-
поразрядного исключающего ИЛИ.
Операция Поразрядное НЕ
Операция поразрядного НЕ (~) проще операций поразрядного И, ИЛИ и исклю-
исключающего ИЛИ. В операции поразрядного НЕ полагается, что целое число, располо-
расположенное справа от знака операции, будет 32-разрядным двоичным числом. Затем зна-
значение каждого разряда числа меняется на противоположное: единицы становятся
Глава 2. Языковые конструкции JavaScript 7 О
нулями, а нули — единицами. После этого 32-разрядный результат операции преоб-
преобразуется в целое число, которое возвращается из операции поразрядного НЕ.
Операция Смещение влево
При выполнении операции смещения влево (<<) полагается, что целое число,
расположенное слева от знака операции, будет 32-разрядным двоичным числом. При
выполнении операции все разряды этого числа смещаются влево на количество по-
позиций, задаваемое числом, расположенным справа от знака операции. При смеще-
смещении разрядов влево, освободившиеся разряды заполняются нулями. Поскольку дли-
длина числа может составлять только 32 разряда, те разряды, которые вышли влево за
границу в 32 разряда, теряются. 32-разрядный результат операции преобразуется в
целое число, которое возвращается из операции смещения влево.
Операция Смещение вправо со знаком
Операция смещения вправо со знаком (>>) аналогична операции смещения влево.
При выполнении этой операции полагается, что целое число, расположенное сле-
слева от знака операции, является 32-разрядным двоичным числом. При выполнении
операции все разряды этого числа смещаются вправо на количество позиций, зада-
задаваемое числом, расположенным справа от знака операции. При смещении разрядов
влево, освободившиеся разряды заполняются либо единицами, либо нулями. Если
операнд положительный, слева добавляются единицы, в противном случае добавляются
нули. Поскольку длина числа может составлять лишь 32 разряда, те разряды, которые
вышли вправо за границу в 32 бита, теряются. 32-разрядный результат операции преоб-
преобразуется в целое число, которое возвращается из операции смещения вправо со знаком.
Операция Смещение вправо с заполнением нулями
Операция смещения вправо с заполнением нулями (»>) аналогична операции
смещения вправо со знаком, но независимо от знака числа левые разряды всегда
заполняются нулями.
Приоритет операций
Язык JavaScript, как и другие языки программирования, позволяет в одном вы-
выражении использовать несколько операций. Поскольку операции в выражении могут
находиться практически в любом положении, при определении порядка вычисления
операций JavaScript следует определенным правилам. Приоритет операций JavaScript
приведен в таблице 2.7. В столбце "Порядок вычисления" указано в каком порядке
(слева направо, или справа налево) вычисляются операции с одинаковым уровнем
приоритетов. Порядок вычисления операций можно изменить с помощью скобок.
Используйте скобки чтобы добиться необходимого порядка вычисления опе-
операций и упростить воспринимаемость программного кода при чтении.
Операторы цикла и условные операторы
Операторы цикла и условные операторы позволяют организовать выбор решений
в программе, а также выполнять задачи произвольное количество раз. В языке
JavaScript предусмотрены стандартные структуры условий и циклов, которые при-
присутствуют в большинстве языков программирования. Фактически, эти структуры были
позаимствованы з С, C++ и Java, поэтому если читатели ранее программировали на
одном из этих языков, этот раздел не вызовет у них вопросов
74
Часть I. Обзор JavaScript
Приоритет
Высший
Низший
Таблица
Порядок
вычисления
слева направо
слева направо
справа налево
слева направо
слева направо
слева направо
слева направо
слева направо
слева направо
слева направо
слева направо
слева направо
слева направо
справа налево
справа налево
слева направо
2.7. Приоритет
Операция
■Л)
0. new
++, -, +,-, !,
*, /, %
+, -
«, >>, >»
<, <=. >, >=
==, !=, ===,
&
1
&&
II
= , * = , /=, %=
-=, « = , >> =
>» = , &=, " =
операций
Тип операции
Доступ к элементам объекта
Вызвать/создать экземпляр
Префиксный/постфиксный
инкремент/декремент, void
и т.д., delete, typeof
Умножение, деление,
остаток от деления
Сложение, вычитание
Поразрядное смещение
Операции сравнения
!== Операции равенства
Поразрядное И
Поразрядное исключающее ИЛИ
Поразрядное ИЛИ
Логическое И
Логическое ИЛИ
Условный оператор
=, +=, Операции присваивания
Составные вычисления
Условные конструкции
Условные конструкции позволяют организовать в программах выбор решений на
основе заранее заданных условий, в которых используются операторы, рассмотрен-
рассмотренные ранее в этой главе.
Оператор if
Оператор if является наиболее часто используемым оператором, хотя бы толь-
только благодаря его простоте и удобству в применении. Формат оператора if выглядит
следующим образом:
i f (виражение)
оператор;
Если значение выражения в скобках равно true, выполняется указанный ниже
оператор, в противном случае этот оператор пропускается. Конструкция оператор
может указываться и в той же строке, что и оператор if, но, как правило, код легче
читать, если он указывается в строке после оператора if, как это показано в при-
приведенном примере псевдокода Если при соблюдении некоторого условия необходи-
необходимо выполнить несколько операторов, для выделения блока, принадлежащего опе-
оператору if должны использоваться фигурные скобки,{}.
С целью расширения фунциональных возможностей оператора if используется
ключевое слово else, которое позволяет выполнять альтернативные операции при
Глава 2. Языковые конструкции JavaScript / О
несоблюдении условия в операторе if. Формат комбинации if...else выглядит следую-
следующим образом:
if (выражение)
оператор1;
else
оператор2;
В этом случае, если значение выражение 1 равно true, выполняется onepamopl, в
противном случае выполняется оператор2. В листинге 2.1.4 приведен пример исполь-
использования оператора if совместно с ключевым словом else на примере определения
наличия свободных номеров в гостинице. При выполнении кода на экран выводит-
выводится сообщение: "Для 5 гостей свободных номеров недостаточно".
Листинг 2.14. Пример использования структуры if...else
<html>
<script type="text/javascript" language="JavaScript">
//Объявление переменных
var emptyRooms = 2; //Два человека претевдуют на одив номер
var numberOfGuests = 5;
if (emptyRooms == 0)
document.write("Свободных номеров нет.");
else
{
if ((emptyRooms*2) >= numberOfGuests)
document.write("Для ",numberOfGuests,
" гостей номеров достаточно.");
else
document.write("Для") ;
document.write(numberOfGuests ," гостей номеров ведостаточно.");
</script>
</html>
Обратите внимание на использование в коде листинга 2.14 фигурных скобок для
организации вложенных структур if...else. Вложенность предоставляет программе боль-
больше возможностей по принятию решений, но ухудшает читабельность кода.
Конструкция else...if
Конструкция else...if используется вместо вложенных структур if...else для улуч-
улучшения читабельности кода. За каждой структурой else...if следует выражение в скобках.
При необходимости можно использовать вложенные структуры else...if. Для указания
кода, который будет выполняться в случае, если значения всех условных выраже-
выражений равны false, используется ключевое слово else. Код листинга 2.15 выполняет те
же действия, что и код из листинга 2.14, но в нем используется конструкция else...if.
Как и в предыдущем примере на экран выводится сообщение: "Для 5 гостей номе-
номеров недостаточно".
Листинг 2.15. Улучшение читабельности вложенных операторов if...else с помощью
конструкции else...if
<html>
<script type="text/javascript" language="JavaScript">
<!--
//Объявление переменных
/ Ь Часть I. Обзор JavaScript
var emptyRooms = 2; //Два человека претендует на один номер
var numberOf Guests = 5;
if (emptyRooms == 0)
document.write("Свободных номеров нет.") ;
else if ((emptyRooms*2) >= numberOfGuests)
document.write("Для ",numberOfGuests,
" гостей номеров достаточно.");
else
document.write("Для ",numberOfGuests,
" гостей номеров недостаточно.");
II —>
</script>
</html>
switch
В качестве альтернативы конструкции if...else в JavaScript существует оператор
switch. Оператор switch особенно эффективен при проверке всех возможных значений
некоторого выражения. Формат оператора switch выглядит следующим образом:
switch (выражение)
{
case метка1:
опера.тор1 ;
break;
case ыетка.2:
опера.тор2;
break;
default:
операторЗ;
>
Вычисление значения оператора switch начинается с вычисления выражение, по-
подобно тому, как это делается в операторе if. Затем значение выражения сравнива-
сравнивается с метками структур case, которые находятся после оператора switch. Если зна-
значение выражения совпадает с одной из меток, выполняется оператор(ы) в
соответствующей структуре case. Для выполнения каких-либо операторов в случае, если
значение выражения не совпадает ни с одной меткой структуры case, используется
структура default. Пример использования структуры switch приведен в листинге 2.16.
Листинг 2.16. Пример использования структуры switch
<html>
<script type="text/javascript" language="JavaScript">
< ! --
//Объявление переменных
var color = "зеленый";
//Отображение цвета автомобиля в зависимости от
//значения переменной "color"
switch (color)
{
case "красный":
document.write("Автомобиль красного цвета.");
break;
case "синий" :
document.write("Автомобиль синего цвета.");
break;
case "зеленый" :
document.write("Автомобиль зеленого цвета.");
break;
default:
document.write("Автомобиль пурпурного цвета.");
}
Глава 2. Языковые конструкции JavaScript / /
switch
</script>
</html>
Относительно формата структуры switch в коде листинга 2.16 можно отметить
несколько ключевых моментов. Во-первых, обратите внимание, что за меткой все-
всегда следует двоеточие (:). Во-вторых, для объединения всех структур case использу-
используются фигурные скобки { }, но фигурные скобки не используются внутри структур
case даже при выполнении в одной структуре нескольких операторов. И, наконец,
для выхода из структуры switch после того как соответствие найдено используется
ключевое слово break. Это предотвращает случайное выполнение структуры default. В
результате выполнения кода из листинга 2.16 на экран будет выведена строка "Ав-
"Автомобиль зеленого цвета".
Циклы
Бывают случаи, когда некоторую часть кода необходимо выполнить много раз с
несколько измененными значениями. Для этого используются циклы, выполнение
которых контролируется с помощью некоторого условия.
Цикл for
Цикл for - это структура, которая выполняется указанное количество раз. В
JavaScript используется цикл for из С и C++.Данный цикл является достаточно гиб-
гибким, что делает его использование очень эффективным.
Цикл for состоит из двух основных частей: условия и оператора. Условие цикла
определяет сколько раз будет выполняться цикл, а оператор выполняется при каждом
выполнении цикла.
Условие цикла заключается в скобки и состоит из трех частей, разделенных дво-
двоеточием (;). Первая часть условия устанавливает начальное значение переменной. В
большинстве случаев в этой части переменная объявляется и инициализируется. Во
второй части условия содержится само условие, которое определяет количество вы-
выполнений цикла. Третья и последняя часть указывает каким образом переменная,
которая была инициализирована в первой части, изменяется при каждом выполне-
выполнении цикла. Эта третья часть делает цикл for более гибким, позволяя увеличивать,
уменьшать, умножать и выполнять другие операции над переменной цикла. Формат
цикла for выглядит следующим образом:
for (начальное значение; условие окончания цикла;
изменение переменной цикла)
оператор; Etui's» e>
_ Таблица \множения для числа 4
Очень важно перед использованием
цикла for хорошо продумать его реализа-
реализацию, поскольку по ошибке можно со-
создать бесконечный цикл. В частности,
необходимо убедиться, что на определен-
определенном этапе переменная цикла приведет к
невыполнению условия. В большинстве
случаев переменную цикла имеет смысл
использовать в теле цикла, но при этом * •"• . : D°"™'.D»;:*.
не стоит изменять переменную цикла та- Рисунок 2.8. Таблица умножения, созданная
ким образом, который может привести к с помощью цикла for
4X0 = 0
4X1=4
4X2 = 8
4Х4 = !б
4 X 5 = 20
4 X 6 = 24
4X7-28
4 X 8 = 32
4X9 = 36
4Х 10 = 40
7 о Часть I. Обзор JavaScript
появлению бесконечного цикла. В примере листинга 2.17 цикл for используется для
создания таблицы умножения, показанной на рис. 2.8.
Листинг 2.17. Создание таблицы умножения с помощью цикла for
<html>
<script type="text/javascript" language="JavaScript">
<! --
document.write("<Ь2>Таблица умножения для числа 4</h2>");
for (var aNum = 0; aNum <= 10; aNum++)
{
document.write( X ",aNum," = ",4*aNum,"<br>");
}
</script>
</htirtl>
Цикл while
Если по каким-либо причинам для определенной части кода применение цикла
for неэффективно, можно воспользоваться циклом while. Цикл while может делать все
то же, что и цикл for, но не так просто. Так зачем тогда его использовать? Цикл
while предоставляет большие возможности, нежели цикл for, не накладывая огра-
ограничений на количество итераций цикла.
Принцип работы цикла while легко понять, если помнить фразу: "Пока true, вы-
выполнять цикл". Эта фраза означает, что операторы цикла будут выполняться до тех
пор, пока значение выражения в скобках равно true. После завершения последнего
оператора выполнение цикла снова продолжается с вычисления значения условно-
условного выражения. Если значение выражения равно false, следующим будет выполнен
оператор, расположенный после структуры while. Чтобы предотвратить возникновение
бесконечных циклов в теле цикла должен быть оператор, который изменяет перемен-
переменную в условном выражении. Формат цикла while выглядит следующим образом:
while (выражение)
{
оператор;
}
Поскольку значение параметра выражение вычисляется перед началом цикла,
возможны случаи, когда тело цикла не будет выполняться вообще, если при пер-
первой проверке значение выражения равно false. В листинге 2.18 использование цикла
while показано на примере автоматического светофора.
Листинг 2.18. Пример автоматического светофора с использованием цикла while
<html>
<script type="text/javascript" language="JavaScript">
<!--
//Объявление переменных
var light = "красный"; //Свет светофора
var counter — 1; //Создание автомобильного движения
var carsInLine = new Array(); //Автомобили, ожидающие проезда
//Пропуск через перекресток 5 автомобилей
while (counter <= 5)
{
document.write("Автомобиль № ",counter,
" подъезжает к перекрестку.<br>");
carsInLine[carsInLine.length++] = counter;
//Когда проезда будет ожидать 2 автомобиля, включить зеленый свет
if (carsInLine.length == 2)
Глава 2. Языковые конструкции JavaScript /У
light = "зеленый";
document.write("На светофоре зажегся ",light," свет<Ьг>"};
}
//Пока горит зеленый свет, автонобили пересекают перекресток
while (light == "зеленый")
{
document.write("Автонобиль № " , carsInLine[carsInLine.length-1]);
carsInLine.length--;
document.write(" проезжает через перекресток.<br>"};
//При отсутствии автонобилей, ожидающих проезда
//включить красный свет
if (carsInLine.length == 0)
{
light = "красный";
document.write("На светофоре зажегся ",light," свет<Ьг>"};
}
}
counter++; //Следующий автомобиль
</script>
</html>
В коде листинга 2.18 с целью имита-
1 £йе Ed* View Go Communicator
ции светофора используется два цикла
Автомобиль№ 1 подъезжает к перекрестку
Автомобиль № 2 подъезжает к перекрестку.
На светофоре зажегся зеленый свет
Автомобиль № 2 проезжает через перекресток
Автомобиль № 1 проезжает через перекресток.
На светофоре зажегся красный свет
Автомобиль № 3 подъезжает к перекрестку
Автомобиль № 4 подъезжает к перекрестку.
На светофоре зажегся зеленый свет
Автомобиль №4 проезжает через перекресток.
Автомобиль № 3 проезжает через перекресток
На светофоре зажегся красный свет
while. Первый цикл while можно было бы
организовать и с помощью цикла for,
но второй цикл реализовать с помощью
цикла for было бы практически невоз-
невозможно. Цикл while легко справляется с
подобной задачей. Из рис. 2.9 видно, что
на светофоре автоматически загорается
зеленый свет, если на перекрестке ос-
остановились два автомобиля. После про-
проезда через перекресток двух автомоби- ^£. '_ ; - - i
лей на светофоре автоматически Рисунок 2.9. Имитация светофора с помощью
загорается красный свет. двух циклов while
Цикл do...while
Цикл do...while представляет собой разновидность оцисанного выше цикла while.
Кроме синтаксиса единственным его отличием от цикла while является то, что пе-
перед первой проверкой условия цикл выполняется один раз. Это различие можно уви-
увидеть на примере формате цикла do...while:
do
{
оператор;
}
while (выражение);
После первого выполнения цикла вычисляется значение параметра выражение. Если
его значение равно true, цикл выполняется еще раз. Если значение выражения равно
false, выполняется оператор, который находится после цикла do...while. Как и в случае
с циклом while, для предотвращения организации бесконечного цикла в теле цикла дол-
должен содержатся оператор, который изменяет переменную, присутствующую в параметре
выражение. Кроме того, обратите внимание, что в конце строки с оператором while ука-
80 Часть I. Обзор JavaScript
зывается точка с запятой (;). В листинге 2.19 приведен код такого же светофора, что и
в коде листинга 2.18, в котором вместо цикла while используется цикл do...while.
Листинг 2.19. Пример автоматического светофора с использованием цикла do...while
<html>
<script type="text/javascript" ,language="JavaScript">
<! --
// Объявление переменных
var light = "red"; // Цвет светофора
var counter = 1; // Создание автомобильного движения
var carsInLine = new ArrayO; // Автомобили, ожидающие проезда
//Пропустить через перекресток 5 автомобилей
while (counter <= 5)
{
document.write("Автомобиль № ",counter,
" подъезжает к перекрестку.<br>");
carsInLine[carsInLine.length++] = counter;
//Если свет зеленый, выполнить цикл больше одного раза
do
{
//Когда проезда будут ожидать 2 автомобиля, включить зеленый свет
if (carsInLine.length == 2)
{
light = "зеленый";
document.write("На светофоре зажегся ",light," свет <br>");
}
// При отсутствии автомобилей, ожидающих проезда
// включить красный свет
if (carsInLine.length == 0)
{
light = "красный";
document.write("На светофоре зажегся ",light," свет<Ьг>");
}
//Пока горит зеленый свет, автомобили пересекают перекресток
if (light == "зеленый")
{
document.write("Автомобиль № ",carsInLine[carsInLine.length-1]);
carsInLine.length--;
document.write("проезжает через перекресток.<br>");
}
}
while (light == "зеленый");
counter++; // Следующий автомобиль
}
//-->
</script>
</html>
Результат выполнения кода из листинга 2.19 выглядит так же, как и результат
выполнения кода из листинга 2.18.
Цикл for...in
Цикл for...in не следует путать с циклом for, поскольку они совершенно различны.
Единственным подобием является то, что оба цикла выполняются указанное чис-
число раз, на этом сходство заканчивается. Цикл for...in - это специальный цикл, ко-
который имеется только в языке JavaScript и используется для доступа к нумерован-
нумерованным свойствам объектов JavaScript. В число таких объектов входит и объект Array,
поскольку его элементы хранятся тем же образом, что и свойства других объектов.
Оператор(ы) в теле цикла выполняются для каждого свойства объекта. Не нумеро-
Глава 2. Языковые конструкции JavaScript О 1
ванные части объекта, например, методы и некоторые свойства, не могут исполь-
использоваться в цикле for...in. Формат цикла for...in выглядит следующим образом:
for (переменная in объект)
{
оператор;
}
Перед выполнением операторов цикла имя свойства объекта объект, указанно-
указанного справа от ключевого слова in, присваивается параметру переменная, расположен-
расположенному слева от ключевого слова in. После этого переменная будет использоваться в
теле цикла. Этот процесс будет продолжаться до тех пор, пока не завершится про-
просмотр всех свойств объекта. К сожалению, порядок доступа к свойствам может ва-
варьироваться, поэтому не стоит привязываться к определенному порядку. Пример
доступа к свойствам простой HTML-кнопки приведен в листинге 2.20.
Листинг 2.20. Доступ к именам свойств объекта Button с помощью цикла for...in
<html>
<form name="aForm">
<input type="button"
name="Big_Button"
value="Большая кнопка"
onClick="alert('Большая кнопка была нажата!')">
</form>
<script type="text/javascript" language="JavaScript">
<! —
var aProperty;
for (aProperty in document.aForm.Big_Button)
{
document.write(aProperty,"<br>");
}
</script>
</html>
Обратите внимание, что на рис. 2.10 на экран выводятся имена свойств объек-
объекта, а не значения, хранящие в этих свойствах.
Ключевое слово break
Ключевое слово break позволяет i~i.uiui.p.h.iui——— ним ■»■——■ ■ \ щ т >
ssKey
преждевременно выходить из цикла и &> и* у»* fa«e« х«*> и*
оператора switch. В большинстве случа-
случаев ключевое слово break указывается
в строке само по себе, но в некото-
некоторых случаях за ним может находить-
находиться метка. При таком использовании
break JavaScript выходит из области,
обозначенной меткой и продолжает
выполнение кода со строки, находя-
находящейся непосредственно после этой
области.
alt
attribute
caflHaveChildien
checked
childNodas
children
chentHeiglit
chentLeft
chentTop
rbntWidth
complete
rentStyle
В языке JavaScript метки можно
считать заполнителями. Чтобы отме-
отметить меткой определенный оператор,
выполнение которого нужно пре- ..ff.D""" 1н£Оя»л
рвать, необходимо перед НИМ указать Рисунок 2.10. Свойства объекта "Большая кнопка"
dstaFld
dataFoi
dataJ»
О С. Часть I. Обзор JavaScript
имя метки, за которым следует двоеточие (:). Метки эффективны при работе со вло-
вложенными циклами, как показано в листинге 2.21.
Листинг 2.21.
Пример использования ключевого слова break и меток.
<html>
<script type="text/javascript" language="JavaScript">
//Создание внешнего цикла
forLoopl :
for (var counterl = 1; counterl <= 5; counterl++)
//Создание внутреннего цикла
for (var counter2 = 1; counter2 <= 5; counter2++)
//Отображение значений переменных обоих циклов
document.write("Counterl=",counterl);
document.write(" Counter2=",counter2,"<br>");
//Определение условий выхода из цикла
if (counter2 == 3)
break;
if (counterl == 3)
break forLoopl;
document.write("Готово!");
</script>
</html>
Обратите внимание, что при использовании ключевого слова break без метки (рис.
2.11) завершается только внутренний цикл. При использовании ключевого слова break
с меткой JavaScript получит инструкции относительно того, для какого цикла бу-
будет прервано выполнение.
Оператор continue
В отличие от структуры break, применение оператора continue приводит к тому,
что цикл начинает выполняться сначала. Подобно ключевому слову break ключевое
слово continue, как правило, используется без меток, но в редких случаях оно мо-
может применяться и с меткой. При наличии метки JavaScript переходит к началу цик-
цикла, обозначенного меткой.
В зависимости от типа структуры, началом цикла могут считаться различные эле-
элементы. Точки, с которых продолжается выполнение кода после выполнения ключе-
ключевого слова continue, приведены в табл. 2.8.
Рисунок 2.11.
Результат использования меток
во вложенных циклах
Bte £<iit View &о £ommunic3tor Help
Counterl—1 Counter2=l •
Counterl=l Counter2=2
Counterl=l Counter2=3
Counterl=2 Counter2=l
Counterl=2 Counter2=2
Counterl=2 Counter2=3
Counterl=3 Counter2=l
Готово!
к
« «3» J-J СЗ \£-
Глава 2. Языковые конструкции JavaScript О о
Тип
структуры
for
while
do...while
for...in
Таблица 2.8. Точка перехода
Точка перехода
■ Выражение в скобках
Выражение в скобках
Выражение в скобках
Следующее свойство
ключевого слова continue
после ключевого слова
после ключевого слова
после ключевого слова
данного объекта
for
while
while
ПРЕДУПРЕЖДЕНИЕ
Ошибка в браузере Navigetor 4 приводит к тому, что выраже-
выражение в скобках после ключевого слова while при переходе на него с помощью continue
не выполняется. Вместо этого выполнение кода продолжается с начала цикла, распо-
расположенного после оператора continue.
Как уже указывалось в описании ключевого слова break, в языке JavaScript мет-
метки можно считать заполнителями. Чтобы отметить меткой определенный оператор,
с которого нужно продолжить выполнение, необходимо перед ним указать имя мет-
метки, за которым следует двоеточие (:). Пример использования меток в операторе
continue приведен в коде листинга 2.22.
Листинг 2,22, Использование оператора continue и меток,
<html>
<script type="text/javascript" language="JavaScript">
//Создание внешнего цикла
outerLoop:
for (var counterl = 1; counterl <= 2; counterl++)
{
document.write("Начало внешнего цикла.<Ьг>");
//Создать внутренний цикл
innerLoop:
for (var counter2 = 1; counter2 <= 2; counter2++)
{
// Отображение значений переменных обоих циклов
document.write("Начало внутреннего цикла.<br>");
document.write("Counterl=",counterl,"<br>");
document.write("Counter2=",counter2,"<br>");
//Определить точки, с которой продолжается выполнение кода
if (counter2 == 2)
{
document.write("Начать с начала внешнего цикла.<br>");
continue;
}
if (counterl == 2)
{
document.write("Начать с начала внутреннего цикла.<br>");
continue outerLoop;
}
document.write("Конец внутреннего цикла.<br>");
}
document.write("Конец внешнего цикла.<br>");
}
document.write("Готово!");
//-->
</script></html>
84
Часть I. Обзор JavaScript
Код примера несколько сложноват,
поэтому сравните код из листинга 2.22 с
его результатами, показанными на рис.
2.12. Обратите внимание, что после "На-
"Начать с начала внутреннего цикла." не
было напечатано "Конец внутреннего
цикла.", так как выполнение кода про-
продолжилось с начала внутреннего цикла.
При использовании оператора continue
совместно с меткой, выполнение кода
продолжилось с начала цикла с меткой
outerLoop.
tuj . Help
ПРЕДОСТЕРЕЖЕНИЕ
Несмотря на то
что в JavaScript предусмотрены метки и
операторы continue и break, их нужно испо-
использовать с осторожностью, поскольку при не-
неправильном использовании они могут вызвать
ошибки, которые будет трудно обнаружить.
Начало внешнего цикла
Начало внутреннего цикла
Counteti=l
Counter 2—1
Конец внутреннего цикла
Начало внутреннего цикла
Counterl=l
Counter 2=2
Начать с начала внешнего цикла
Конец внешнего цикла
Начало внешнего цикла.
Начало внутреннего цикла
Counterl=2
Counter2=l
Начать с начала внутреннего цикла
Готоео'
Рисунок 2.12. Результат использования
оператора continue во вложенных циклах
Оператор with
Объектно-ориентированный принцип построения JavaScript достаточно часто
требует применения длинных конструкций для доступа к свойствам и методам объек-
объектов. В JavaScript предусмотрен специальный оператор with, который позволяет умень-
уменьшить длину строк кода доступа к свойствам и методам объектов. Оператор with фун-
функционирует путем указания повторяющейся части пути" к объекту в скобках после
ключевого слова with. После этого в начало всех свойств или методов, используемых
внутри оператора with, будет автоматически добавляться повторяющаяся часть пути к
объекту (указанная в скобках). В листинге 2.23 приведен пример использования оператора
with для сокращения длины строк кода при установке значений текстовых полей.
Листинг 2.23. Оператор with сокращает объем повторяющегося кода
<html>
<!--Создание формы с 3 текстовыми полями и кнопкой восстановления
исходных значений полей-->
<form name="personallnfoForm">
HMH<input type="text" name="nameBox"Xbr>
Род 3aHHTHft<input type="text" name="occupationBox"Xbr>
BospacT<input type="text" name="ageBox"Xbr>
<input type="button" name="ResetButton"
value="C6poc" onClick="ResetFields()">
</form>
<script
<! --
type="text/javascript" language="JavaScript">
//Установка начальных значений полей
ResetFields();
//Установка значений полей, использующихся по умолчанию
function ResetFields()
with(document.personallnfoForm)
nameBox.value="[Введите Ваше имя]";
occupationBox.уа1ие="Студент";
Глава 2. Языковые конструкции JavaScript
85
ageBox.value=" " ;
</script>
</html>
На рис. 2.13 в текстовых полях содержатся значения, которые будут находиться в
полях при загрузке страницы и после щелчка на кнопке Reset (Сброс). Для этого
после щелчка на кнопке Reset вызывается функция ResetFieIds(), которая устанав-
устанавливает в полях требуемые значения. Как видно из листинга 2.23, при установке зна-
значений для сокращения объема повторяющегося кода используется оператор with.
Функции
Одной из сильных сторон языка JavaScript является поддержка функций, что не
особенно часто встречается в языках сценариев. С другой стороны, функции JavaScript
не так сильно развиты, как в языках, подобных С или C++. Тем не менее, имею-
имеющихся функциональных возможностей более чем достаточно для создания Web-стра-
Web-страниц.
Синтаксис
Синтаксис функций JavaScript довольно прост.Все объявления функций должны
начинаться с ключевого слова function, за которым указывается имя функции. Имя
функции — это имя, которое будет использоваться в коде для вызова функции. За
именем следуют скобки, в которых указываются передаваемые функции аргументы.
Если функции передаются несколько аргументов, они разделяются запятыми. С другой
стороны, если функция не нуждается в аргументах, скобки остаются пустыми. И,
наконец, для выделения кода функции используются фигурные скобки. Их исполь-
использование обязательно: в функциях JavaScript фигурные скобки требуются, даже если
функция содержит только одну строку кода.
Вызов по значению и вызов по ссылке
Если вы работали в С или C++, вы, вероятно, знакомы с выражениями вызов
по значению и вызов по ссылке в отношении аргументов функции. В общих словах,
вызов по ссылке передает функции адрес ее аргументов, а вызов по значению создает
копии аргументов, которые используются только внутри функции. В JavaScript аргу-
аргументы функции для простоты могут передаваться только по значению. Вызов по зна-
значению позволяет изменять аргументы функции в самой функции, не боясь изменить
значения аргументов вне функции. Пример использования вызова по значению в
JavaScript приведен в листинге 2.24.
Рисунок 2.13.
Оператор with сокращает объем
кода, необходимого для установки
значений текстовых полей
т Форма для заполнения персональной информации MicroioK Intranet E»pkj... SH13
Имя|[Введите Ваше имя]
Родзаляпш|Стуяент
Сброс j
Jjfc: Help-'- ':■•■:. :,;i:UpluS **:
1
| My Computer
86
Честь I. Обзор JeveScript
Листинг 2.24. Вызов по значению
<html>
<script type="text/javascript" languages"JavaScript">
<!--
//Объявление переменных
var aString = "банан"
var aNumber = 15;
//Объявление функции
function test(aString, aNumber)
{
aString = "апельсин";
aNumber = 124;
//Отображение Значений переменных функции,
document.write("При вызове функции:<br>");
document.write("aStringCopy=",aString,"<br>");
document.write("aNumberCopy=",aNumber,"<br>");
}
// Отображение Значений переменных перед вызовом функции,
document.write("Перед вызовом функции;<Ьг>");
document.write("aString=",aString,"<br>");
document.write("aNumber=",aNumber,"<br>");
//Вызов функции
test(aString,aNumber) ;
// Отображение значений переменных после вызова функции,
document.write("После вызова функции:<Ьг>") ;
document.write("aString=",aString,"<br>") ;
document.write("aNumber=",aNumber,"<br>");
</script>
</html>
Из рис. 2.14 видно, что в функции test значения переменных оказались изменен-
измененными. Но после выхода из функции переменные получили свои первоначальные зна-
значения. Фактически для использования в функции были сделаны копии переменных.
Эти новые переменные имеют те же имена, что и переменные, передаваемые фун-
функции. После завершения выполнения функции локальные переменные уничтожают-
уничтожаются, поэтому после выполнения функции на экран выводятся первоначальные зна-
значения переменных.
При необходимости передать функции большое количество аргументов, переда-
передачу аргументов функции можно организовать в виде массива. Для этого область в
скобках необходимо оставить пустой, а для доступа к аргументам функции исполь-
использовать объект arguments и оператор []. Код из листинга 2.25 выводит на экран аргу-
аргументы функции, переданные с помощью массива arguments. Результат выполнения
кода показан на рис. 2.15.
Рисунок 2.14.
Результат вызова по значению
Перед вызовом функции
aNumb 61^=15
При вызове функции'
aStringC ору=ап ель с и н
aNumberCopy=l 24
После вызова функции.
aNuraber=15
Глава 2. Языковые конструкции JavaScript
87
Рисунок 2.1 В.
Аргументы, переданные функции
displayArguments() с помощью
массива arguments
Jjj Доступ к аргументам Функции - Microsoft tnteirtet Explore»
■Fife ЕЛ View
Функции были переданы слеш/юшке аргументы.
0-34
1 = шляпа
2 = .7945
3 = гуфлн
•©Done , ■■.'
ч 1
Листинг 2.25. Доступ к аргументам функции с помощью массива arguments
<html>
<script type="text/javascriptl.2" language="JavaScriptl.2">
//Создание функции, которая будет выводить на экран
//переданные ей аргументы,
function displayArguments()
{
document.write("Функции были переданы следующие аргументы:<br>");
for(i=0; i<arguments.length; i
document.write(i," = ".arguments[i],"<br>");
//Передача функции аргументов
displayArgumentsC4,"шляпа",-7 945,"туфли");
</script>
</html>
Возврат значений
А что если в коде требуется использовать переданное из функции значение? В
языке JavaScript предусмотрен оператор return, который может использоваться в
функции для возврата значения оператору, который вызвал функцию. Возвращаемое
значение должно указывается непосредственно после оператора return. Если после
return значение не указано или return отсутствует воо.бще, функция возвращает нео-
неопределенное значение.
Возвращаемое функцией значение можно присвоить переменной или использовать
в выражении. В листинге 2.26 возвращаемое функцией значение используется в выра-
выражении для вывода на экран строки *5=15".
Листинг 2.26. Возвращение значения из функции.
<html>
<script type="text/javascript" language="JavaScript" >
//Объявление функции
function multiplyByFive(aNumber)
return aNumber*5;
//Отображение значений переменных перед вызовом функции
document.write(*5=",multiplyByFiveC));
О О Часть I. Обзор JavaScript
</script>
</html>
Функции в роли объектов
Все описанные выше функции создавались статически при загрузке Web-страни-
Web-страницы в браузер, но существуют и динамические функции, которые создаются только
при вызове, что позволяет считать функции объектами. Синтаксис таких функций
напоминает синтаксис объявления переменных:
var varName = new Function(аргумент!,...,последага_аргумент);
Для динамического создания функции с заданными аргументами применяется
ключевое слово Function. Все аргументы должны быть строками, а последний аргу-
аргумент всегда должен содержать тело создаваемой функции. В листинге 2.27 приведен
пример использования объекта Function. Как и в предыдущем примере, на экран
выводится строка *5=15".
Листинг 2.27, Возврат значения функции.
<html>
<script type="text/javascript" language="JavaScript">
<!--
//Создание динамической функции
var multiplyByFive = new Function("y","return y*5");
document.write(*5=",multiplyByFiveC));
//-->
</script>
</html>
Резюме
В главе рассматривались детали реализации языка JavaScript, общие для многих
языков программирования. Понимание типов данных, переменных, операций, цик-
циклов, условных операторов, функций и основ синтаксиса JavaScript, которые детально
исследовались в этой главе, позволит перейти непосредственно к программированию.
Но разве вы не хотите изучить некоторые методы программирования, характерные
только для JavaScript, которые дадут возможность в полной мере использовать по-
потенциал языка? Следующая глава будет посвящена именно этому — рассмотрению
отдельных методов программирования, которые превращают JavaScript в нечто боль-
большее, нежели в обычный язык написания сценариев.
Часть II
Программирование
на JavaScript
В этой части
3. Технологии программирования
4. Клиентские сценарии
5. Серверная сторона JavaScript
6. Написание сценариев Windows
Глава 3
Технологии
программирования
В главе 2 рассматривались ключевые элементы языка JavaScript, а также демон-
демонстрировались различия и сходство между JavaScript и другими языками програм-
программирования. Теперь пришло время перейти к следующему уровню, посвященному изу-
изучению особенностей языка JavaScript и технологий программирования, которые по-
позволят создавать более мощные и более отказоустойчивые программы, и которые
даже, может быть, заставят вас сказать: "А я и не знал, что это можно сделать в
JavaScript!".
В главе рассматриваются вопросы сравнения по образцу и обработки событий, а
также предлагается методика наиболее эффективного применения этих двух методов
в программах на JavaScript. Кроме того, в главе подробно описываются технологии
программирования, которые позволят создавать отказоустойчивые программы. Будет
обсуждаться блок try...catch и приводиться примеры его применения. Также будут рас-
рассматриваться методы отладки кода на JavaScript и некоторые бесплатные отладчики.
Сравнение по образцу
На сегодняшний день сформировались две наиболее распространенных области
использования Web-страниц - это сбор и распространение данных. По самой своей
природе две упомянутых области для определения того, что требуется пользовате-
пользователю, применяют обработку данных, а затем возвращают информацию, подобранную
в соответствии с требованиями пользователя. Одним из ключевых инструментов об-
обработки данных является сравнение по образцу. Некоторые языки сценариев, напри-
например, Perl, идеально подходят для выполнения сравнения по образцу, в то время как
другие обладают ограниченными возможностями в этом плане. Если вы знакомы с
Perl, сравнение по образцу в JavaScript покажется вам знакомым, поскольку оно
было основано на реализации сравнения в языке Perl. Реализация сравнения по об-
образцу в языке JavaScript в значительной мере способствует успешной обработке дан-
данных для целей Internet.
Для выполнения сравнения по образцу в JavaScript используется объект RegExp
(аббревиатура от Regular Expression — регулярное выражение). В этом объекте содер-
содержится образец и, кроме того, он предоставляет методы для выполнения самого срав-
сравнения. Рассмотрение начнем с описания создания образцов, а затем перейдем к ис-
использованию объекта RegExp для выполнения сравнения по образцу.
Глава 3. Технологии программирования
Создание объекта RegExp
Объект RegExp можно создать двумя различными способами, которые аналогич-
аналогичны способам создания строк. Одного и того же результата можно добиться как с
помощью конструктора RegExp, так и с помощью ключевого слова new:
var lastName = new RegExp("Jones");
Приведенная строка создает объект RegExp с именем lastName и присваивает ему
образец Jones. Того же можно добиться и путем непосредственного присваивания:
var lastName = /Jones/;
Для того чтобы отличить создание регулярного выражения от создания строки,
в качестве маркера начала и окончания образца применяется косая черта (/). Обра-
Обратите внимание, что косые черты в конструкторе RegExp() не требуются, посколь-
поскольку сам конструктор отличается от конструктора String().
Создание образцов
Синтаксис, который используется для определения образцов в JavaScript, мож-
можно считать самим языком сценариев, поскольку он достаточно обширный. Существу-
Существуют специальные символы для создания практически любых образцов, включая сим-
символы для работы с группами, повторениями, позициями и т.д. Специальные символы,
используемые в JavaScript при выполнении сравнения по образцу, перечислены в
табл. 3.1.
Таблица 3.1. Специальные символы, используемые при выполнении сравнения по образцу
Символ Описание
\w Совпадение с любым алфавитно-цифровым символом.
\W Совпадение с любым символом, не являющимся алфавитно-цифровым.
\s Совпадение с любым служебным символом (табуляция, новая строка, возврат
каретки, прогон страницы, вертикальная табуляция).
\S Совпадение с любым символом, не являющимся служебным.
\d Совпадение с любой цифрой.
\D Совпадение с любым символом, не являющимся цифрой.
[\Ь] Совпадение с символом забоя.
Совпадение с любым символом кроме символа новой строки.
[...] Совпадение с любым одним символом, заключенным в скобки.
["...] Совпадение с любым одним символом, не заключенным в скобки,
[х-у] Совпадение с любым символом из диапазона от х до у.
["х-у] Совпадение с любви символом, не входящим в диапазон от х до у.
{ х,у} Совпадение с предыдущим элементом не менее х раз и не более у раз.
{х,} Совпадение с предыдущим элементом не менее х раз.
? Совпадение с предыдущим элементом не более одного раза.
У с Часть II. Программирование на JavaScript
Символ Описание
Совпадение с предыдущим элементом хотя бы один раз.
* Совпадение с предыдущим элементом любое количество раз или ни одного
раза.
| Совпадение с выражением слева или справа от символа |.
(...) Группировка всего содержимого скобок в подобразец.
\х Совпадение с символами, которые получены из подобразца в группе номер х.
Группы, которые обозначаются скобками, нумеруются слева направо.
Установка соответствия с началом строки в многострочных сравнениях.
$ Установка соответствия с концом строки в многострочных сравнениях.
\Ь Сравнение позиции между алфавитно-цифровым символом и неалфавитно-
цифровым символом.
\В Сравнение позиции, которая не находится между алфавитно-цифровым
символом и неалфавитно-цифровым символом.
Описанные специальные символы сравнения по образцу используются для созда-
создания сложных образцов. Из табл. 3.1 можно заметить, что символы, подобные звез-
звездочке (*), знаку плюс (+) и обратной косой черте (\), имеют особое назначение,
что не позволяет их интерпретировать как литералы. А что делать, если в строке
необходимо найти все знаки плюс (+)? Чтобы использовать знак плюс в качестве
литерала, в определении образца ему должна предшествовать обратная косая черта
(\). Все символы, которые для использования их в качестве литералов требуют ука-
указания обратной косой черты, перечислены в табл. 3.2.
Таблица 3.2. Литералы
Символ
\f
\п
V
\t
\v
\/
\\
V
\*
\+
\?
\1
\(
Описание
Прогон страницы
Новая строка
Возврат каретки
Табуляция
Вертикальная табуляция
Прямая косая черта (/)
Обратная косая черта (\)
Точка (.)
Звездочка (*)
Плюс (+)
Знак вопроса (?)
Вертикальная черта (|)
Открывающая круглая скобка (
Глава 3. Технологии программирования У О
Символ
\)
\[
\]
\{
\)
\ххх
\хНН
\сХ
Описание
Закрывающая круглая скобка )
Открывающая квадратная скобка [
Закрывающая квадратная скобка ]
Открывающая фигурная скобка {
Закрывающая фигурная скобка }
ASCII-символ, соответствующий восьмеричному коду XXX
ASCII-символ, соответствующий шестнадцатеричному коду НН
Управляющий символ, соответствующий коду X
Ниже описывается последняя часть синтаксиса JavaScript, предназначенная для
создания образцов. В отличие от описанного выше синтаксиса, данная часть указываются
вне косых черт, ограничивающих образец. Эти атрибуты перечислены в табл. 3.3.
Символ
g
i
Таблица 3
Описание
Глобальное
Сравнение,
.3. Атрибуты образца
сравнение. Находит
не чувствительное к
все возможные совпадения.
регистру.
Проверка на совпадение по образцу
После создания образец можно применить к строке, воспользовавшись специаль-
специальными методами объектов RegExp и String. Методы сравнения по образцу объекта
String, как показано в табл. 3.4, требуют объекты RegExp.
Таблица 3.4. Методы сравнения по образцу объекта String
Метод Описание
match(regExpOb/) Осуществляет в строке поиск образца regExpObj и возвращает
результат.
replace(regExpOb/,str) Заменяет все экземпляры образца reqExpObj строкой str.
search{reqExpObj) Возвращает позицию образца reqExpObj в строке.
split(regExpOb/,max) Разбивает строку по каждому экземпляру образца reqExpObj, но не
более max раз. Подстроки возвращаются в виде массива.
Методы сравнения по образцу объекта RegExp, как показано в табл. 3.5, требу-
требуют объекты String.
Таблица 3.5. Методы сравнения по образцу объекта RegExp
Метод
exec(sfr)
test(str)
[sir)
Описание
Выполняет
Выполняет
найдено, и
Аналогичен
поиск
поиск
false
образца в строке str
образца в строке str
в противном случае.
методу exec(sfr).
и
и
возвращает
возвращает
результат.
true, если совпадение
94
Часть II. Программирование на JavaScript
Рисунок 3.1.
Цифры от 3 до 5
заменяются цифрой 9
»Melscape
;£le Edit
;£o JothrwnicaferC
Джон обменял 5 апельсинов на 135 ягод винограда.
Заменить цифры от 3 до 5 цифрой 9
Джон обменял 9 апельсинов на 199 ягод винограда.
Document Done
В листинге 3.1 для замены цифр строки от 3 до 5 цифрой 9 используется конст-
конструктор RegExp, специальный синтаксис образца и метод replace() объекта String.
Результат выполнения кода показан на рис. 3.1.
Листинг 3.1. Пример использования регулярных выражений
<html>
<script type="text/javascript" language="JavaScript">
//Создание строки
var str = "Джон обменял 5 апельсинов на 135 ягод винограда.<br>";
//Создание объекта RegExp
var span3to5 = new RegExp("[3-5]","g");
document.write(str) ;
document.write("Заменить цифры от 3 до 5 цифрой 9.<br>");
document.write(str.replace(span3to5,"9"));
</script>
</html>
События и обработчики событий
Если когда-либо доводилось заниматься созданием графических пользовательских
интерфейсов, концепция событий должна выглядеть знакомой. События (events) ~
это действия, которые происходят вне программы и могут оказывать (или нет) не-
непосредственное влияние на программу. В браузере генерируется множество событий,
которые пользователю не видны и беспокоиться о которых ему нет необходимости.
Например, рассмотрим Web-страницу, на которой находится интерфейс смены
пароля пользователя в некоторой системе. На странице находится текстовое поле для
ввода имени пользователя и текстовое поле для ввода нового пароля, а также кноп-
кнопка, используемая для отправки нового пароля. Перед передачей имени пользовате-
пользователя и нового пароля другой системе необходимо позаботиться о перехвате события,
которое происходит в результате щелчка пользователем на кнопке Submit (Отпра-
(Отправить), а также проверить введенный пароль на предмет соответствия установленным
правилам. Эти правила могут требовать, чтобы пароли были не короче трех и не
длиннее 15 символов. Имея доступ к событиям, которые генерируются в браузере,
разработчик может при неправильном вводе пароля отменить передачу данных и
предупредить пользователя о проблемах, связанных с вновь введенным паролем.
В этом разделе будут приведены типы событий браузера, которые язык JavaScript
позволяет перехватывать и предпринимать на базе перехваченных событий определен-
определенные действия.
Глава 3. Технологии программирования
95
События
В браузерах происходят множество различных типов событий. JavaScript предостав-
предоставляет доступ к ряду событий, которые могут оказаться полезными для разработчи-
разработчиков, например, к событию click, которое генерируется при однократном щелчке
левой кнопкой мыши. Большинство событий имеют отношение к определенному
HTML-элементу, который отображается пользователю и с которым он может ра-
работать, например, кнопка или флажок. В табл. 3.6 содержится перечень событий, ко-
которые могут перехватываться в JavaScript, а также объекты JavaScript, с которыми
связаны перечисленные события.
Событие
Abort
Объект
Image
Таблица
3.6.
События
браузера
Происходит когда
загрузка изображения
прерывается
Blur
Button, Checkbox, FileUpload,
Frame, Layer, Password,
Radio, Reset, Select, Submit,
Text, Textarea, Window
фокус ввода перемещается из элемента
Change
Click
DblClick
DragDrop
Error
FileUpload, Select, Text, Textarea
Area, Button, Checkbox, Document,
Link, Radio, Reset, Submit
Area, Document, Link
Window
Image, Window
изменяется значение элемента
происходит щелчок на элементе
происходит двойной щелчок на элементе
объект перетаскивается в окно браузера
на странице или изображении
происходит ошибка
Focus Button, Checkbox, FileUpload,
Frame, Layer, Password, Radio,
Reset, Select, Submit, Text,
Textarea, Window
элемент получает фокус
KeyDown
KeyPress
KeyUp
Load
MouseDown
MouseMove
MouseOut
MouseOver
MouseUp
Move
Document, Image,
Document, Image.
Document, Image,
Document, Image,
Button, Document
Window
Area, Layer, Link
Area, Layer, Link
Button, Document
Frame
, Link,
, Link,
, Link,
Layer,
, Link
, Link
Textarea
Textarea
Textarea
Window
нажата клавиша на клавиатуре
нажимается и удержиаается клавиша
на клавиатуре
отпускается клавиша на клавиатуре
в браузер загружается страница
нажата левая кнопка мыши
передвигается указатель мыши
указатель мыши выходит за границы
элемента
указатель мыши перемещается над
элементом
отпущена кнопка мыши
элемент перемещается
96
Событие
Reset
Resize
Select
Submit
Unload
Объект
Form
Frame, Window
Text, Textarea
Form
Window
Часть II. Программирование на JavaScript
Происходит когда
поля формы заполняются данными,
заданными по умолчанию
изменяются размеры окна браузера
в поле выбирается текст
передаче данных формы
выгружается текущая страница
Из всех событий, приведенных в предыдущей таблице, особого внимания заслу-
заслуживают события Error и Abort, поскольку они несколько сложнее всех остальных.
Событие Error используется объектами Window и Image для указания того, что
при загрузке HTML-страницы или изображения произошла ошибка. Этот тип ошиб-
ошибки приведет к возникновению в JavaScript ошибки синтаксиса или ошибки време-
времени выполнения.
Событие Abort используется объектом Image для указания того, что загрузка изоб-
изображения была прервана. Этот тип событий происходит довольно часто, поскольку
пользователи не дожидаются полной загрузки изображений большого объема и пре-
прерывают загрузку нажатием кнопки Stop (Остановить) в браузере или переходят на
другую страницу.
Обработчики событий
Теперь, когда рассмотрены типы доступных в JavaScript событий, осталось вы-
выяснить, как их перехватывать. События перехватываются с помощью обработчиков
событий. Назначив обработчику событий объекта определенную функцию или даже
одну строку кода JavaScript, можно перехватить событие и выполнить необходимое
действие. Все обработчики событий и соответствующие им события перечислены в
табл. 3.7.
Таблица 3.7. Обработчики событий
Событие
Abort
Blur
Change
Click
DblClick
DragDrop
Error
Focus
KeyDown
KeyPress
KeyUp
Load
Обработчик событий
onAbort
onBlur
onChange
onClick
onDblClick
onDragDrop
onError
onFocus
onKeyDown
onKeyPress
onKeyUp
onLoad
Гпава 3. Технологии программирования 9 7
Событие
MouseDown
MouseMove
MouseOut
MouseOver
MouseUp
Move
Reset
Resize
Select
Submit
Unload
Обработчик событий
onMouseDown
onMouseMove
onMouseOut
onMouseOver
onMouseUp
onMove
onReset
OnResize
onSelect
onSubmit
onllnload
Перехват событий
Обработчики событий можно создать двумя способами. Первый и наиболее рас-
распространенный способ - объявить обработчик внутри HTML-дескрипторов, что
аналогично заданию свойств HTML-дескрипторов. Например, чтобы при щелчке на
кнопке вывести на экран окно предупреждения, потребуется назначить обработчи-
обработчику событий ooClick в HTML-дескрипторе кнопки JavaScript-функцию отображения
окна предупреждения:
<form name="myForm">
«Cinput
type="button"
name="myButton"
га1ие="Щелкни на мне"
onClick="alert('Произошел щелчок на кнопке myButton')">
</form>
В результате щелчка на кнопке myButtoo на экране будет появляться окно пре-
предупреждения с сообщением "Произошел щелчок на кнопке myButton". He следует
забывать, что не все события связаны со всеми объектами. Узнать, какие события
и обработчики событий имеет определенный объект, можно из описания объекта,
приведенного в главе 8.
Второй способ создания обработчиков событий — указать обработчик в теле кода
JavaScript с использованием точечной нотации. Влистинге 3.2 приведен пример вы-
вызова окна предупреждения обработчиком событий ooClick с помощью точечной но-
нотации.
Листинг 3.2. Создание обработчиков событий с помощью точечной нотации
<html>
<form name="myForm">
«Cinput type="button" name="myButton" value="lHenKHM на мне">
</form>
<script type="text/javascript" languages"JavaScript">
<! --
document.myForm.myButton.onclick=
"alert('Произошел щелчок на кнопке myButton')";
У О Часть II. Программирование на JavaScript
</script>
</html>
В листинге 3.2 кнопка myButtoo была создана с использованием стандартных
HTML-дескрипторов. Непосредственно после ее создания с помощью точечной но-
нотации объекту кнопки был присвоен обработчик событий onclick.
ПРИМЕЧАНИЕ
Обратите внимание, что в листинге З.Э свойство onclick было указано
с использованием символа с нижнего регистра, а не с помощью симаола вархнего
регистра, как это было в HTML-дескрипторе. Это вовса не опачатка! При создании
обработчиков событий в HTML-дескрипторе символы верхнего регистра используются
как показано в табл. 3.7. А вот при создании обработчикоа событий в рамках JavaScript-
кода обработчики событий не должны содержать символов верхнего рагистра.
Отмена событий
Одним из наиболее популярных применений обработчиков событий является про-
проверка данных, введенных в HTML-форму. Например, перед передачей формы сме-
смены пароля серверу желательно проверить правильность ввода пароля. Если пользо-
пользователь ввел неверный пароль, необходимо поставить пользователя в известность о
возникшей проблеме, а отправку формы отменить. Используя приведенный выше
материал, можно легко перехватить событие Click кнопки передачи данных формы
и вывести на экран сообщение о неверно введенном пароле. Но как прервать событие
и отменить отправку формы серверу? Событие Submit можно отменить, вернув из
обработчика событий значение false. Пример отмены передачи данных формы пока-
показан в листинге 3.3.
Листинг 3.3. Отмена события Submit
<html>
<script type="text/javascript" language="JavaScript">
<! --
function validatePassword()
{
passwd = document.passwordForm.password.value;
//Длина пароля должна быть от 3 до 15 символов
if ( (passwd.length < 3) || (passwd.length > 15))
{
alert ("Пароль должен быть не длиннее 15 и не короче 3 символов!");
return(false);
</script>
<center>
<Ы>Страница смены пароля</Ы>
Пожалуйста, введите свое имя пользователя и новый пароль.<Ьг>
(Длина пароля должна составлять от 3 До 15 символов.)<br><br>
<form name="passwordForm"
асtion="success.html"
onSubmit="return validatePassword()">
Имя пользователя: <input type="text" name="username"Xbr>
Пароль: <input type="password" name="password"Xbr>
<input type="submit">
</form>
</html>
Глава 3. Технологии программирования У У
Не все обработчики событий позволяют отменять событие, но некоторые все же
допускают это. Для всех событий, которые можно отменить, значение, используе-
используемое для отмены, может варьироваться. В табл. 3.8 перечислены события, которые
подтверждают коды возврата, и приведены значения, которые используется для от-
отмены событий.
Таблица
Событие
OnClick
OnKeyDown
OnKeyPress
OnMouseDown
OnMouseOver
onMouseUp
onReset
onSubmit
3.8. Возвращаемые значения обработчиков событий
Значение, используемое для отмены события
false
false
false
false
true (предотвращает вывод URL в строке состояния)
false
false
false
Вызов обработчиков событий
Бывают случаи, когда необходимо явным образом вызвать обработчик определен-
определенного события, даже несмотря на то что соответствующее событие не произошло. Это
достаточно легко сделать, поскольку,, по своей сути, обработчики событий являются
указателями на функции, хранящиеся как свойства объекта, которые должны вы-
выполняться при возникновении определенного события. Для вызова обработчика со-
событий используется точечная нотация, как если бы обработчик событий был фун-
функцией. Например, в приведенном ниже коде при перемещении указателя мыши над
ссылкой на Web-сайт Lamborghini пользователь получает сообщение о возможном
выигрыше. Кроме того, сообщение о возможном выигрыше выводится при перехо-
переходе на предыдущую страницу. Для этого обработчик события ссылки Lamborghini вы-
вызывается при щелчке на ссылке Previous Page (Предыдущая страница).
<а href="sweepstakes.html"
onMouseOver=
"alert('Выиграйте новый спортивный автомобиль!')">
Lamborghini</aXbr>
<а href="intro.html"
onClick="document.links[0].onmouseover()">Предыдущая страница</а>
Таймеры
Несмотря на то что в JavaScript не предусмотрены управляемые событиями тай-
таймеры, тем не менее, в этом разделе таймеры обсуждаются по причине своей тес-
тесной взаимосвязи с событиями. Поскольку в JavaScript отсутствуют таймеры в чистом
виде, в их качестве можно использовать метод setlnterval() объекта Window.
Метод setlnterval() поддерживается в версиях, начиная с JavaScript 1.2.
I UU Часть II. Программирование на JavaScript
Метод setlnterval() вызывает функцию или вычисляет выражения каждый раз по
истечении установленного интервала времени (в миллисекундах). Метод выполняется
до разрушения окна или до вызова метода clearlnterval().
Например, в листинге 3.4 метод setlnterval() выполняется при открытии документа.
Далее метод каждые 20000 миллисекунд вызывает функцию dailyTask(). Функция
dailyTask() при каждом вызове вычисляет текущее время и в 8:00 вызывается код в
операторе if, который выводит сообщение пользователю и удаляет интервал. После
вызова clearlnterval() выполнение метода setlnterval() завершается.
Листинг 3.4. Создание дискретных событий с помощью метода setlntervaK)
<html>
<script type="text/javascript" language="JavaScript">
<! —
function dailyTask()
{
var today = new Date();
if ((today.getHours() == 8) && (today.getMinutes() == 0))
{
alert("Текущее время 8:00");
clearlnterval(timerlD);
}
}
//Установка интервала в 20000 миллисекунд
timerlD = setlnterval("dailyTask()",20000);
//-->
</script>
</html>
Как уже упоминалось, метод setlnterval() имеется только в версиях, начиная с
JavaScript 1.2. При необходимости создания кода, который бы поддерживался более
ранними версиями JavaScript, должен применяться метод setTimeout().
Метод setTimeout(), как правило, используется для вычисления значения выра-
выражения по истечении определенного промежутка времени. В отличие от метода
setlnterval(), метод setTimeout() - одноразовый процесс, который не повторяется
бесконечное число раз. Результат выполнения кода из листинга 3.5 аналогичен вы-
выполнению кода из листинга 3.4, но вместо метода setlnterval() используется метод
setTimeout().
Листинг 3,5. Создание дискретных событий с помощью метода setTimeoutO
<html>
<script type="text/javascript" language="JavaScript">
function dailyTask ()
{
var today = new Date () ;
if ((today.getHours() == 8) && (today.getMinutes() == 0))
{
alert("Текущее время 8:00");
}
}
//Установка интервала, равного 20000 миллисекундам
setTimeout("dailyTask()",20000);
//-->
</script>
</html>
Глава 3. Технологии программирования
Исключения
В версии JavaScript 1.4 была введена обработка исключений, которая позволяет
перехватывать и обрабатывать исключения, возникающие в JavaScript-программах.
Для обработки исключений были выбраны типичные операторы try...catch, throw и
finally, которые присутствуют и в других языка программирования, подобных Java и
C++. Эти операторы позволяют разработчикам генерировать свои собственные исклю-
исключения, перехватывать ошибки и на основании перехваченной ошибки предпринимать
соответствующие действия.
Оператор throw
Оператор throw позволяет разработчикам генерировать свои собственные ошиб-
ошибки, которые будут перехватываться оператором try...catch. Сама генерируемая ошибка
может быть объектом любого типа при условии, что оператор try...catch знает, ка-
каким образом обрабатывать данный тип объекта. Например, ошибка может быть чис-
числом, строкой или даже объектом разработчика, который содержит число и массив
строк. Формат оператора throw выглядит следующим образом:
throw error
Оператор try...catch
Оператор try...catch служит для выделения кода, предназначенного для попытки
выполнения оператора, и блока кода, предназначенного для перехвата ошибок, при
возможном возникновении исключения. Формат оператора try...catch выглядит сле-
следующим образом:
try
{
код
}
catch (error)
{
код
}
Блок try состоит из одного или нескольких строк кода, заключенных в фигурные
скобки под оператором try, а блок catch — из одного или нескольких строк кода,
заключенных в фигурные скобки под оператором catch. Указав в круглых скобках
после оператора catch тип ошибки, блоку catch можно передать и реальную ошиб-
ошибку. После этого такой объект error будет использоваться внутри блока catch. Объект
error и скобки являются необязательными элементами оператора try...catch. Они
используются только в случае, если предполагается выполнение обработки реальной
ошибки, сгенерированной блоком catch.
Если исключение генерируется в блоке try или в функции, вызванной операто-
оператором в блоке try с использованием оператора throw, осуществляется переход на код
блока catch, который обрабатывает только что возникшую ошибку. Если при выпол-
выполнении блока try исключения не возникло, блок catch пропускается.
ПРИМЕЧАНИЕ
Допускается использовать вложенные операторы try...catch, что пре-
предоставляет очень широкие возможности по обработке ошибок.
В листинге 3.6 операторы try...catch и throw используются при проверке пролей в
простой программе проверки паролей. Если длина пароля составляет меньше 5 сим-
\ 02 Часть II. Программирование на JavaScript
волов или больше 10 символов, блок try...catch выводит на экран соответствующее
предупреждение.
Листинг 3.6. Проверка правильности введенного пароля с помощью блока try...catch
<html>
<script type="text/javascript" language="JavaScript">
<!— hide
function ValidatePassword(password)
{
try
{
//Убедитесь в тон, что длина пароля не меньше 5 символов
if(password.length < 5 )
{
throw "SHORT";
}
// Убедитесь в том, что длина пароля не больше 10 символов
if(password.length > 10 )
{
throw "LONG"; //Слишком большая длина
}
//Введен правильный пароль
alert("Проверка пароля завершена!");
}
catch(е)
{
if(e == "SHORT")
{
alert("Слишком мало символов в пароле!");
}
if(e == "LONG")
{
alert("Слишком много символов в пароле!");
</script>
<Ь2>Проверка паролей</Ь2>
<form name="myform">
Пожалуйста, введите пароль: <input type="password"
name="password"Xbr><br>
<input type=button name="validate"
value="Проверить!"
onClick="ValidatePassword(myform.password.value)">
</form>
</html>
Ошибки времени выполнения
Кроме перехвата ошибок, созданных разработчиком, блок try...catch может пе-
перехватывать ошибки времени выполнения, которые возникают в JavaScript без при-
применения оператора throw. Ошибки времени выполнения перехватываются блоком
try...catch аналогично перехвату ошибок разработчика. Стандарт ЕСМА-262 (третья
редакция) оговаривает шесть типов ошибок, которые могут возникать в JavaScri pt.
Эти типы ошибок с коротким описанием приведены в табл. 3.9.
Глава 3. Технологии программирования I UO
Наименование
ошибки
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
Таблица З.9. Ошибки времени выполнения
Описание
Неправильное использование функции eval.
Числовое значение вышло за допустимые пределы.
Было обнаружена неверная ссылка.
При проведении синтаксического разбора возникла ошибка.
Ожидался операнд другого типа.
Неправильно используется одна из функции работы с URI.
При возникновении ошибки времени выполнения возвращается объект Error. Для
определения типа ошибки необходимо просто получить доступ к свойству name
объекта. В листинге 3.7 за счет попытки использования неопределенного значения
преднамеренно создается ошибка времени выполнения. Блок перехвата ошибок оп-
определяет тип ошибки и выводит на экран сообщение об ошибке.
Листинг 3.7. Перехват ошибок времени выполнения
<html>
<script type="text/javascript" language="'JavaScript"'>
<!-- hide
try
{
//В следующей строке создается ошибка несоответствия типов,
//поскольку значение переменной aNum неопределено.
sum = 5 + aNum;
document.write("sum=",sum);
}
catch(e)
(
if(e.name == "TypeError")
(
alert("Возникла ошибка.");
}
}
II —>
</script>
</html>
Блок finally
Блок finally — это необязательный блок кода, который выполняется при каждом
возникновении ошибки. Он особенно эффективен в языках программирования, ко-
которые работают с файлами, когда независимо от того произошла ошибка или нет
файл должен быть правильно закрыт. Если ошибки не возникло, код блока finally
выполняется после кода блока try...catch, но перед кодом, следующим за блоком
try...catch. При возникновении ошибки код блока finally выполняется после кода бло-
блока try...catch. Формат использования блоков try...catch и finally выглядит следующим
образом:
try
I 04 Часть II. Программирование на JavaScript
catch (error)
{
код
}
finally
{
код
}
В листинге 3.8 оператор finally гарантирует, что поле ввода пароля будет очище-
очищено независимо от того введен правильный пароль или нет. Если поле ввода пароля
очищается в блоке finally, то очистка произошла в случае ввода правильного паро-
пароля, поскольку в блоке catch присутствует оператор return. Если поле ввода пароля
очищается в блоке catch, то очистка произошла в случае ввода неправильного па-
пароля. Поскольку поле ввода пароля необходимо очищать в любом случае, исполь-
используется блок finally.
Листинг 3.8. Проверка правильности ввода пароля с использованием блока finally
<html>
<script type="text/javascript" language="JavaScript">
<!-- hide
function ValidatePassword(password)
try
//Убедитесь, что длина пароля не меньше 5 символов,
if(password.length < 5 )
{
throw "SHORT";
}
// Убедитесь, что длина пароля не больше 10 символов.
if(password.length > 10 )
{
throw "LONG"; //Слишком много символов
catch(e)
{
if(e == "SHORT")
{
alert("Слишкои короткий пароль!");
}
if(e == "LONG")
{
alert("Слишкои длинный пароль!");
}
returnA);
}
finally
{
document.myform.password.value="";
}
//Правильный пароль
alert("Правильный пароль!");
}
//-->
</script>
<Ь2>Проверка паролей</Ь2>
Глава 3. Технологии программирования
<form name="myform">
Пожалуйста, введите пароль: <input type="password"
name= " pas sword" Xbr Xbr >
<input type=button
name="validate"
value="Проверить!"
onClick="ValidatePassword(myform.password.value)">
</form>
</html>
Отладка
Если ранее доводилось программировать на таких языках, как C++ или Java, то,
наверняка, пришлось столкнуться с одним из инструментов отладки, который по-
помогает обнаруживать и устранять ошибки, содержащиеся в коде. Теперь, когда язык
JavaScript нашел свое место среди языков программирования, наконец-то стали
появляться среды написания и отладки сценариев, как собственные, так и разработ-
разработки независимых компаний, аналогичные тем, которые можно увидеть в зрелых язы-
языках программирования (C+ + , Visual Basic и Java).
Средства написания и отладки сценариев JavaScript предоставляют разработчикам
инструменты в большей степени автоматизированного предупреждения ошибок и в
меньшей степени исправления ошибок. Если читатели не имеют таких средств отлад-
отладки сценариев JavaScript, или если объем работ по отладке невелик, в качестве сред-
средства отладки можно использовать простое окно предупреждения JavaScript. В этой
главе рассматриваются два механизма отладки сценариев JavaScript, которыми мо-
может воспользоваться разработчик.
Программа Microsoft Script Debugger
Программа Microsoft Script Debugger (MSSD) - это бесплатное средство отладки
сценариев, входящее в состав браузеров Internet Explorer (начиная с версии 3.01),
которое можно свободно выгрузить из Internet. Кроме того, MSSD входит в состав
Windows 2000 и Microsoft Personal Web Server. Программу MSSD можно использовать
для написания и, что более важно, для отладки кода JavaScript (или JScript в реа-
реализации Microsoft) и Visual Basic Script (VBScript). MSSD позволяет выполнять от-
отладку программ, использующих ActiveX, Java, JScript и VBScript. (MSSD можно выг-
выгрузить из Web-сайта http://msdn.microsoft.com/scripting/).
Основные возможности
Ниже перечислены основные возможности Microsoft Script Debugger:
• Динамический просмотр структуры HTML
• Водном документе можно производить отладку JavaScript, VBScript и Java
• В коде выполняется выделение цветом синтаксиса
• Возможность определения точек останова
• Возможность пропуска или выполнения любой строки кода
• Возможность вызова стека
• Возможность просмотра значений переменных.
Советы
Отладчик MSSD удобен в использовании, но есть несколько моментов, знание
которых обеспечивает ускоренную отладку кода в MSSD.
I Ub Часть II. Программирование на JavaScript
Запуск отладчика
Отладчик MSSD можно запустить только после запуска Internet Explorer и загрузки
в него требуемого HTML-файла. После этого MSSD можно вызвать, выбрав из меню
View | Source (Вид | Просмотр HTML-кода).
ПРИМЕЧАНИЕ
Если отлвдчик MSSD не установлен, просмотр исходного HTML-кода
будет проводиться в приложении Noteped (Блокнот].
Для перехода к процессу отладки в Internet Explorer потребуется выбрать команду
Edit | Break at Next Statement (Правка | Останов на следуюшем операторе) или в
MSSD выбрать команду Debug | Break at Next Statement (Отладка | Останов на сле-
следующем операторе) и запустить сценарий. Эта команда запускает отладчик и оста-
останавливает его на первой строке текущего сценария.
Команда Break at Next Statement
Команда Break at Next Statement (которая находится в Script Debugger в пункте
меню View браузера Internet Explorer и в меню Debug отладчика MSSD) аналогич-
аналогична команде Step, при которой отладчик выполняет следующую строку сценария и
останавливается, за тем исключением, что ее можно использовать и не в режиме
выполнения сценария.
Это одна из важнейдшх команд MSSD, поскольку во многих случаях большой
объем Java Script-кода присутствует в разделе заголовка (или дескрипторе <head>)
HTML-файла, который можно отладить только с помощью этой команды. Это выз-
вызвано тем, что к моменту загрузки HTML-файла код в заголовке файла уже выпол-
выполнен. Кроме того, точки останова, установленные после загрузки файла, при пере-
перезагрузке страницы теряются.
Вычисление значений выражений
Значения выражений можно вычислять с помощью окна немедленного вычисле-
вычисления и следующих двух методов:
• Debug.write(string) — этот метод записывает заданную строку, которая часто
бывает значением или переменной, в окно немедленного просмотра без лиш-
лишних символов или пробелов между строками.
• Debug.writeln([string]) - этот метод идентичен предыдущему методу, за тем ис-
исключением, что в конце каждой строки вставляется символ новой строки.
Кроме того, аргумент string является необязательным. Если его опустить, в
окно немедленного просмотра будет вставлен только символ новой строки.
Резюме по отладчику Microsoft Script Debugger
Отладчик Microsoft Script Debugger обеспечивает весьма эффективную среду для
отладки и проверки JavaScript-кода. Доступные в MSSD инструменты аналогичны
тем, которые можно найти в полноценных средах программирования, например,
Visual Basic или C++. Кроме того, интерфейс отладчика MSSD, его установка и на-
настройка исключительно просты и удобны для пользователя.
Однако MSSD обладает определенными ограничениями, например, необходимо-
необходимостью частого переключения между Internet Explorer и MSSD при проведении отлад-
отладки, а также отсутствием возможности вывода кода на печать. Если для работы тре-
требуются более широкие функциональные возможности, нежели предлагает MSSD,
можно перейти к использованию Visual InterDev 6.0 от Microsoft. Этот программный
продукт обладает всем описанными выше возможностями по отладке и включает
полиофункциональную среду Web-разработки.
Глава 3. Технологии программирования I 07
Л Листинг 3.9 - Microsoft Internet Exploiei
РиСуН0к3.2. '■': fite Е« Vie» Favorites , To* Help . /.;: . .;' Unks '* ; А*»вй
Ярм установке цвета
автомобиля проявляется
ошибка
автомобиль имеет undefined цвет.
Га
My Con putei
Отладчик MSSD, безусловно, представляет собой неплохой инструмент для раз-
разработчика, причем не последним его преимуществом является то, что он распро-
распространяется па бесплатной основе. Однако он не может претендовать на место по-
постоянного инструментального средства написания и отладки кода.
Метод alert()
Если вы хотя бы на протяжении короткого времени программировали на каком-
либо' языке программирования, то наверняка знаете, что одним из самых простых
и быстрых способов отладки является вывод на экран на различных этапах выпол-
выполнения программы содержимого важных переменных. Таким образом можно опреде-
определить, правильно ли выполняется код. Подобный метод особенно эффективен, ког-
когда под рукой нет мощного отладчика JavaScript или нет времени на использование
отладчика для устранения простых ошибок. В JavaScri pt есть удобный метод alert(),
который можно задействовать для остановки выполнения кода и проверки значения
переменной. Правильно воспользовавшись этим методом, можно быстро отследить
возникшие ошибки.
Влистинге 3.9 приведен код JavaScript, который должен устанавливать тип и цвет
автомобиля. Одного взгляда на рис. 3.2 достаточно, чтобы сказать, что в коде име-
имеются ошибки. В коде предполагается, что функция setType() должна установить тип
"автомобиль", а функция setColorQ цвет "красный". Если бы функции работали пра-
правильно, на экран выводилось бы сообщение, а в противном случае появилось бы
окно предупреждения с сообщением о возникновении ошибки при попытке выпол-
выполнить операцию присваивания. Сообщений об ошибках не последовало, но цвету ав-
автомобиля так и не было присвоено значение "красный".
Листинг 3.9. Код с ошибками
<html>
<script type="text/javascript" languages"JavaScript">
//Создание двух глобальных переменных, которые будет описывать
//транспортные средства
var vehicleColor;
var vehicleType;
//Установка типа транспортного средства
function setTypeO
{
return(vehicleType="автомобиль");
}
//Установка цвета транспортного средства
function setColor()
{
return (vehicleColor="KpacHbiu") ;
}
//Если тип или цвет транспортного средства не были установлены,
//выдать пользователю сообщение
if (setTypeO || setColor())
I UО Часть II. Программирование на JavaScript
document.write(vehicleType + " имеет " + vehicleColor + " цвет.");
}
else
alert("Тип транспортного средства и его цвет не могут
Ч6ыть установлены");
</script>
</html>
В листинге 3.10 для отладки кода используется метод alert(). Для определения того,
запускаются ли функции установки переменных, метод alert() указывается в каждой
функции. Кроме того, метод alert() указывается перед и после оператора if с целью
проверки корректности выполнения условного оператора.
Листинг 3.10. Отладка с использованием метода alert()
<html>
<script type="text/javascript" language="JavaScript">
//Создание двух глобальных переменных, которые будет описывать
//транспортные средства
var vehicleColor;
var vehicleType;
//Установка типа транспортного средства
function setTypeO
{
alert("BHyTpH функции setType."); //Оператор отладки
return(уеЬ1с1еТуре="автомобиль");
}
//Установка цвета транспортного средства
function setColor()
{
alertC'BHyTpn функции setColor."); // Оператор отладки
return(vehicleColor="красный");
}
// Оператор отладки
alert("Перед оператором if: THn="+vehicleType+"
4BeT="+vehicleColor);
//Если тип или цвет транспортного средства не были установлены,
//выдать пользователю сообщение
if(setType() || setColor())
{
// Оператор отладки
alert("После оператора if: THn="+vehicleType+"
4BeT="+vehicleColor);
document.write(vehicleType + " имеет " + vehicleColor + " цвет.");
}
else
alert("Тип транспортного средства и его цвет не могут быть
^♦установлены") ;
</script>
</html>
При запуске на выполнение кода из листинга 3.10 первое окно предупреждения
отражает, что обе переменные перед запуском оператора if содержат неопределен-
неопределенные значения. Следующее окно предупреждения показывает, что была вызвана фун-
функция setType(). Последнее окно предупреждения, как видно из рис. 3.3, демонстри-
демонстрирует, что после выполнения оператора if тип транспортного средства установлен
равным "автомобиль", а цвет транспортного средства так и не был установлен.
Глава 3. Технологии программирования
109
Microsoft Internet Explorer
Рисунок 3.3.
Отладка с помощью
метода alert()
■"' f \ После опврзгора t. тип=авгомабиль ueeraindefined
Что же лроизошло с функцией setColor()? Метод alert() в функции setColor() не
выполнялся, а это говорит о том, что функция setColor() в операторе if не вызы-
вызывалась.
Если значение первого аргумента логического ИЛИ равно true, второй аргумент
не вычисляется. Поскольку функция setType() вернула значение true, функция
setColor() не вызывается. Указанную проблему можно решить, указав вместо опера-
операции ИЛИ логическое И.
ПРЕДОСТЕРЕЖЕНИЕ
После проверки кода не забудьте удалить методы alert(),
которые использовались для отладки; в противном случае окна предостережений будут
выводиться на экран и е браузерах пользоветелей.
Резюме
В этой главе рассматривались некоторые методы программирования, которые
позволяют создавать более сложные и отказоустойчивые программы, в частности,
сравнение по образцу, обработка событий, обработка исключений и отладка. Главы
4—6 книги посвящены исследованию сред, в которых может интерпретироваться
JavaScript, а также описанию реальных примеров применения языка.
Глава 4
Клиентские сценарии
Первых три главы этой книги были посвящены семантике JavaScript и познако-
познакомили вас с несколькими методами программирования, которые помогут быс-
быстрее освоить JavaScript. Часть II посвящается описанию среды, в которой интерпре-
интерпретируется JavaScript, включая среды клиента и сервера и среду Windows Script Host.
В этой главе будут рассмотрены некоторые аспекты языка JavaScript. В частности,
будет рассказано, каким образом браузеры интерпретируют JavaScript, как решать
отдельные вопросы, связанные с браузерами, и каким образом браузеры обрабаты-
обрабатывают сценарии - т.е. вопросы ошибок и отличий в функциональных возможностях-
"браузеров.
Далее описывается, каким образом язык JavaScript за счет некоторых массивов
объектов и использования LiveConnect — шлюза между Java и JavaScript — может рас-
расширять функциональные возможности браузера. Кроме того, будут приведены при-
примеры, которые позволят обрабатывать данные форм без необходимости пересылки
страниц между клиентом и сервером. Cookie-файлы, еще один ключевой компонент,
также упоминается в этой главе.
Затем будет обсуждаться обработка окон. Внешне окно кажется простым компо-
компонентом, но в любом случае оконные JavaScript-сценарки предоставляют програм-
программистам мощные средства, ориентированные на работу с окнами.
Помимо этого в главе демонстрируется динамическое позиционирование элемен-
элементов HTML и XHTML, а также управление ими с помощью сценариев JavaScript.И,
наконец, будет рассмотрен XUL — язык программирования пользовательских интер-
интерфейсов, основанный на XML (XML — Based User Interface Language). Этот современ-
современный язык программирования создан программистами из Mozilla.org и предназначен для
создания пользовательских интерфейсов, используемых в браузерах Netscape 6 и Mozilla.
Читателям предстоит освоить большой объем учебного материала. Сначала рас-
рассматриваются некоторые моменты, относящиеся к браузерам, а также приводится
обзор браузеров, поддерживающих язык JavaScript.
Браузеры, обеспечивающие поддержку JavaScript
Несмотря на то что язык JavaScript стал стандартным компонентом современ-
современных Internet-технологий, он возник не так уж и давно. Поддержка функциональных
возможностей JavaScript стала возможной, начиная с появления браузеров Netscape
Глава 4. Клиентские сценарии
111
Navigator 2.0 и Internet Explorer 3.0. В настоящее время язык JavaScript могут интер-
интерпретировать всего четыре основных типа браузеров: Netscape Navigator, Internet
Explorer, Opera и HotJava. Однако то, что эти браузеры интерпретируют язык
JavaScript вовсе не означает, что процесс интерпретации у всех четырех типов бра-
браузеров является идентичным. В последующих разделах процесс интерпретации будет
изучен подробнее.
ПРИМЕЧАНИЕ
Поскольку многие пользователи для подключения к Internet пользуют-
пользуются услугами сети AOL, следует учитывать, что браузер AOL фактически является бра-
браузером Internet Explorer в несколько отличающейся "упаковке".
Те, кто знаком с языком Java, знают, что различные виртуальные машины Java
(Java Virtual Machines, JVM) могут интерпретировать этот язык различным образом.
В этом отношении язык JavaScript аналогичен языку Java, за тем лишь исключени-
исключением, что в большинстве случаев область применения JavaScript является более об-
обширной. Как правило, браузеры интерпретируют язык JavaScript одинаковым обра-
образом (по крайней мере, это справедливо в отношении базовой семантики языка).
Отличия проявляются в том, что различные браузеры поддерживают разные версии
JavaScript, причем при обработке проявляются разные ошибки.
Определенное представление о версиях различных типов браузеров и поддержи-
поддерживаемых ими версиях JavaScript можно получить из табл.4.1.
Таблица 4.1. Версии языка JavaScript, поддерживаемые различными браузерами
Браузер
Версия
Поддерживаемый язык
Netscape Navigator
2.0
2.02 for OS/2
3.0
4.0-4.05
4.06-4.5
6.0
JavaScript 1.0
JavaScript 1.1
JavaScript 1.1
JavaScript 1.2
JavaScript 1.3
JavaScript 1.5
Microsoft Internet
Explorer
3.0
4.0-4.5
5.0
5.5
6.0
JScript 1.0
JScript 3.0
JScript 5.0
JScript 5.5
JScript 6.0
HotJava
Opera
3.0
3.0-3.5
4.0-5.0
JavaScript 1.4
JavaScript 1.1
JavaScript 1.3
JavaScript 1.4
Создатели браузера Opera приложили немало усилий, чтобы удер-
удержаться на уровне современных стандартов в области разработки браузеров. Тем не
менее, разобраться в том, какие версии языка JavaScript поддерживаются этим
браузером, довольно сложно. В табл. 4.1 приводится лишь информация общего
назначения о поддерживаемых версиях JevaScript. Более подробные сведения о
версии Opera 4 можно получить на Web-сайте http://www.opera.com/opera4/
specs.html#ecmascript, а относительно версии Opera 5 - на Web-сайте http://
www.opera.com/opera5/specs.htmlttecmascript
I I c_ Часть II. Программирование на JavaScript
ОБРАБОТКА JAVASCRIPT 1.1 В БРАУЗЕРЕ NAVIGATOR 2.02 ДЛЯ OS/2
Сведения из табл. 4.1 говорят о том, что версия 2.02 браузера . Navigator для
операционной системы OS/2 поддерживает язык JavaScript 1.1. Это объясняется
тем, что версии Navigator для OS/2 совместно разрабатывались инженерами ком-
компаний Netscape и IBM.
Версия Navigator для OS/2 и соответствующая бета-версия появились только пос-
после выхода в свет версии 3.0 этой программы. Пользователи, часто работающие с
версией 3.0 этого браузера, наверное, заметили, что по сревнению с версией 2.0
количество ошибок при интерпретеции коде JevaScript возросло. Создвется впечат-
впечатление, что расширение функциональных возможностей привело к появлению менее
устойчивого кода, вследствие чего версия для OS/2 создавалась на базе интер-
интерфейсе более устойчивой версии 2.0 с использованием ядра версии 3.0.
Поскольку версии браузеров часто определяются с использовением JevaScript, пользо-
пользователь браузера Nevigator 2.02 может зепускать браузер с опцией «-3» в строке
агента пользоветеля, которая соответствует браузеру версии 3.0, а не 2.02. Поскольку
браузер может интерпретировать все JevaScript-сценарии страницы, эта опция позво-
позволяет использоветь все функциональные возможности браузеров версии 3.0.
Изложенные сведения весьма вежны для корректной реализации различных функ-
функций в сценериях. На их основании можно проверить, является ли определенная
версия Navigator 2.02 версией, предназнеченной для выполнения в среде OS/2.
При этом имеется в виду, что версия Navigator 2.02 для OS/2 поддерживает
JevaScript 1.1 кек с опцией -3, так и без нее. Эти недостатки были исправлены в
Netscepe Communicator 4.61 для OS/2, который поддерживеет язык JavaScript 1.3.
Новые версии браузеров появляются в среднем два раза в год, в результате чего
рынок программных средств становится крайне неоднородным в отношении сред
интерпретации языка JavaScript.Особая осторожность требуется при написании сце-
сценариев, которые должны корректно интерпретироваться различными браузерами.
Как упоминалось в главе 2, большая часть операций по контролю версий может быть
выполнена с помощью атрибутов language и type элемента <script>, но эти атрибу-
атрибуты корректно функционируют далеко не во всех браузерах. В этом случае програм-
программисту потребуется создать код, который будет корректно интерпретироваться все-
всеми браузерами.
Сначала будет рассмотрен браузер Netscape Navigator. Это был первый браузер,
который позволял интерпретировать язык JavaScript, разработанный совместно ком-
компаниями Sun и Netscape. Кроме того, будут рассмотрены браузеры Explorer, Opera и
HotJava.
Браузер Netscape Navigator
В браузере Netscape Navigator (версия Netscape 6.0, экран которого показан на
рис.4.1) впервые появилась поддержка JavaScript начиная с версии 2. Это был клю-
ключевой момент в ходе эволюции JavaScript, поскольку на то время браузер Navigator
являлся наиболее широко используемым. Разработчики Web-страниц могли включать
в свои страницы JavaScript-сценарии и быть уверенными в том, что большинство
посетителей страниц смогут воспользоваться предоставленными функциональными
возможностями. Однако, на этом эволюция браузера Netscape Navigator не заверши-
завершилась.
Не так давно компания Netscape выпустила полностью обновленную версию
Netscape 6 (см. рис. 4.1). В области поддержки официальных стандартов этот браузер
остается непревзойденным. Эволюционный прогресс продвинулся так далеко, что в
Глава 4. Клиентские сценарии
113
Рисунок 4.1.
Окно браузера Netscape 6
HOW LOW Will
They Go?
Economists are
divided on whether
the Fed will cut
!$or<& Biackouts
for California
regulators ordered
more rolling blackouts
today for
interest tales by 50 ot energy-strapped
.75 percent today California
Pfiii: Haw much should (he Fed lower interest rates?
Г ^0 % , о 75 % ," 1 S Mere [ТГ]
данном случае отсутствует поддержка устаревших элементов и дескрипторов, имевшихся
в Navigator 4. Это привело к возникновению ряда других проблем, но в то же время
продемонстрировало приверженность компании Netscape идеям стандартизации.
Помимо всего прочего, компания Netscape продолжает расширять возможности
поддерживаемого ее браузерами языка JavaScript, В каждой новой версии появляют-
появляются какие-то новые особенности, которые обусловлены более полной поддержкой
стандартов и которые обеспечивают превосходство браузера Netscape над всеми дру-
другими. Сведения относительно поддержки языка JavaScript браузерами Netscape, а так-
также некоторая дополнительная информация приведены в табл. 4.2.
Таблица 4.2. Поддержка языка JavaScript браузерами Netscape
Версия
браузера
Версия языка Примечания
2.0
JavaScript 1.0 Первый браузер с поддержкой JavaScript.
2.02 для OS/2 JavaScript 1.1
Как упоминалось ранее, этот браузер имеет интерфейс
версии 2.0 и ядро версии 3.0 Netscape с
соответствующими возможностями по отображению
HTML-кода и интерпретации JavaScript.
3.0 JavaScript 1.1 Первая версия, в которой была введена поддержка
атрибута sre дескриптора <script>, позволяющего
подключать внешние коды JavaScript.
4.0-4.О5 JavaScript 1.2
Появились расширения динамического HTML, а в составе
модели безопасности начали применяться подписанные
сценарии.
4.06-4.7 JavaScript 1.3
Полностью поддерживается первая редакция ECMAScript и
некоторые расширения, ожидаемые во второй редакции.
JavaScript 1.5 Введена поддержка DOM уровня 1 и частично уровня 2,
а также поддержка третьей редакции ECMAScript.
114
Часть II. Программирование на JavaScript
Подробная информация по ошибкам в реализации поддержки языка JavaScript
в Netscape Navigator приведена на узле DevEdge. Адрес узла - http://
developer.netscape.com/tech/javascript/index.html. Находясь на узле, воспользуй-
воспользуйтесь ссыпкой Known Bugs (Известные ошибки).
Браузер Internet Explorer
Несмотря на то что Internet Explorer (версия 5.5, экран которой показпн на рис.
4.2) был вторым браузером, в котором появилась поддержка JavaScript, здесь уда-
удалось избежать тех проблем, которые были присуши Navigator. Тем не менее, в JScript
имеются свои проблемы, которые препятствуют полному использованию его фун-
функциональных возможностей.
Поскольку компания Microsoft не собиралась приобретать у Netscape лицензию
на использование JavaScript в браузере Internet Explorer, она разработала свой язык
сценариев и назвала его новым именем.Так, собственно, и возник язык JScript.
На первый взгляд подобное решение проблемы не являлось оптимальным. Те-
Теперь, когда распространялись две версии языка, возникал вопрос относительно того,
каким образом одновременно обеспечивать работоспособность сценариев в Netscape
Navigator и в Internet Explorer. К счастью, несовместимость версий просуществова-
просуществовала только до момента появления версии 3 браузера Internet Explorer. К моменту вы-
выхода в свет версии Internet Explorer 4 была принята первая редакция стандарта
ECMAScript. На основе этого стандарта компанией Microsoft был разработан язык
JScript 3.0. Это привело к достижению нового уровня стандартизации языков
JavaScript и JScript, а также уменьшило количество проблем, вызванных возможной
несовместимостью. Тем не менее, имеется несколько моментов, о которых не сле-
следует забывать при использовании устаревших версий браузера Internet Explorer:
• Компания Microsoft предусмотрела обновление механизма создания сценариев без
необходимости обновления самого браузера. Кроме того, она распространяет раз-
различные механизмы создания сценариев с небольшими обновлениями браузера.
• Браузер Internet Explorer версии 3 на платформе Windows не поддерживает
объект Image.
• Поддержка атрибута src дескриптора <script> появилась лишь в версии 3.02 и
не является полнофункционалыюй.
Рисунок 4.2.
Окно браузера Internet Explorer 5.5
Глава 4. Клиентские сценарии
115
ПРИМЕЧАНИЕ
Компания Microsoft называет свой интерпретатор сценарным меха-
механизмом JScript (JScript Scripting Engine]. В данном разделе будет использоваться имен-
именно этот термин.
В табл. 4.3 содержатся сведения о версиях браузеров компании Microsoft с указа-
указанием поддерживаемого ими механизма сценариев JScript. Кроме того, в таблице со-
содержится дополнительная информация о нововведениях, появившихся в каждой вер-
версии.
Таблица 4.3. Реализация поддержки языка JScript браузерами Internet Explorer
Версия Версия
языка браузера Примечания
3.0 JScript 1.0 Первый браузер Internet Explorer с возможностью
интерпретации языка JScript.
4.0-4.5 JScript 3.0 Наличие расширений, обеспечивающих реализацию
динамического HTML, а также поддержка первой редакции
стандарта ECMAScript. Это первая версия, в которой
реализована поддержка атрибута src дескриптора <script>,
позволяющего задействовать внешние коды JavaScript.
5.0 JScript 5.0 Поддержка третьей редакции ECMAScript.
5.5 JScript 5.5 Поддержка третьей редакции ECMAScript, DOM уровня 1
и некоторых элементов DOM уровня 2.
Существует еще один аспект, который будет обсуждаться в данном разделе. Этот
аспект касается возможности обновления механизма создания сценариев без необ-
необходимости обновления браузера. В результате, появилась возможность создания бра-
браузера Internet Explorer 5.0 со встроенной поддержкой механизма создания сценари-
сценариев JScript 5.5.
Положительным моментом также является то, что в состав последних версий
сценарного механизма были включены функции, позволяющие разработчикам оп-
определить используемую версию механизма создания сценариев пользователя. Будьте
осторожны, поскольку использование некоторых из этих функций в механизмах вер-
версии 3.0 приводит к возникновению ошибок. К счастью, на сегодняшний день JScript
версии 3 используется очень редко, что несколько облегчает задачи разработчиков.
В листинге 4.1 проиллюстрированы элементы, характерные для сценарного ме-
механизма компании Microsoft. Они могут применяться разработчиком для определе-
определения версии механизма сценариев пользователя.
Листинг 4.1. Элементы JScript, используемые для определения версии механизма
создания сценариев
<script language="JScript" type="text/javascript">
// Создание переменной, которая будете хранить всю информацию
// о механизме создания сценариев, заключенную в одной строке.
var jscriptVer = ScriptEngine () + " " +
ScriptEngineMajorVersion () + "." +
ScriptEngineMinorVersion() + " подверсии " +
ScriptEngineBuildVersion() ;
116
Часть II. Программирование на JavaScript
// Отображение строки в окне браузера пользователя,
document.write('<Ь>Вы используете:</Ь> ' + jscriptVer);
// Отображение в окне браузера всех отдельных элементов
// версии сценарного механизма.
document .write (' <ЬгХЬгХЬ>Сценарный механизм: </Ь> ' +
ScriptEngine());
document.write('<ЬгХЬ>Старшая версия сценарного механизма:</Ь>
document.write(ScriptEngineMajorVersion());
document.write('<ЬгХЬ>Младшая версия сценарвого механизма:</Ь>
document.write(ScriptEngineMinorVersion());
document.write('<ЬгХЬ>Подверсия сценарного механизма:</Ь> ');
document.write(ScriptEngineBuildVersion());
// -->
</script>
Механизм создания сценариев JScript включен в состав библиотеки
jscript.dll. При определении версии механизма создания сценариев выполняется про-
проверка свойств этого DLL-файла.
Результат открытия кода листинга 4.1 в браузере Internet Explorer 5.5 на платфор-
платформе Windows показан на рис. 4.3. Подобная информация может оказаться очень полез-
полезной, если разработчику необходимо знать номер подверсии используемого пользо-
пользователем механизма создания сценариев. Однако следует быть особенно осторожным
и избегать использования указанных элементов в версиях, которые их не поддержи-
поддерживают.
;i File. '■£*. Sew Fsvotfe .Tools H* . ИИ
j
You are running: JScript 5 5 Build 5207
ScriptEngine: JScnpt
ScriptEngmeMajorYersion: 5
ScriptEngmeMmoiYersion: 5
ScriptEngmeBuUdVersion: 5207
Вы используете: JScript 5 } шцверски 5010
Сценарный механизм: JScnpt
Старшая версии сценарного мехаюотиа: 5
Младшая BqtfHJi сценарного мехакюма: 1
Поахерсня сценарного механизма: 5010
«3 Daw ^МиСапрКвг ,<g
Рис. 4.3. Браузер Internet Explorer 5.5 выводит информацию об используемом сценарном механизме.
Браузер Opera
Браузер Opera (окно версии 5.0 показано на рис. 4.4) стал весьма популярным
благодаря наличию поддержки стандартов, в частности каскадных таблиц стилей.
Разработчики из компании Opera Software смогли предоставить пользователям широ-
широкие функциональные возможности, избежав при этом излишних "украшательств",
Браузер Opera в значительной степени представляет собой чистый механизм интер-
интерпретации, однако, при этом обеспечивается поддержка подключаемых модулей
Navigator и язык Java. Благодаря этому браузер Opera может рассматриваться в ка-
качестве реальной альтернативы браузерам Netscape Navigator и Internet Explorer.
Главной особенностью браузеров Opera является возможность установки пользо-
пользователем содержимого строки агента пользователя. Подобная возможность обеспечи-
обеспечила предоставление браузеру доступа к страницам, созданным в Navigator 4 или, воз-
возможно, в Internet Explorer 5. В результате программисты на JavaScript могут точно
определить версию браузера.
Глава 4. Клиентские сценарии
117
Рисунок 4,4.
Браузер Opera 5.0 можно
выгрузить из Web-cauma
http://www. opera, com
Opera - the fastest browser on earth!
BeOS EPOC Linux Mac OS^ Windows .„., .. Г "'™~'
Opera 5 features
Opera 5 is smaller and faster than other browsers, yet it 13 full-featured This
document describes and demonstrates highlights among Opera's rich set of
features, and you will also find information about what Web standards are
supported by Opera 5, Орегз 5 has been released for Windows Linu^, EPOC
Mac, and BeOS versions will follow.
Well-known Opera features
Opera is renowned for being tho world's fastest brov^ser.
Measuring speed on the web is harder than it sounds, but
speed our u^ers ^nov,' and feel the difference, Since -ъе find niahy
journali'-ts among our users, thtre are plenty of ;_<*. '
^J Dr^"« bte«(u»t-
Браузер HotJava
И последний браузер, который рассматривается в этой главе, - HotJava, разра-
разработанный компанией Sun.Поддержка языка JavaScript была реализована в версии 3.0
браузера. Для интерпретации применяется реализация Rhino (механизм JavaScript,
написанный на Java) от Mozilla.org. HotJava является единственным браузером, в
котором появилась официально заявленная поддержка языка JavaScript 1.4. На самом
деле этот браузер используется довольно редко и не обновлялся более года, но, тем
не менее, он безусловно заслуживает упоминания.
Расширенные функциональные возможности браузера
Помимо обеспечения использования на Web-страницах сценариев, язык JavaScript
также применяется с целью расширения функциональных возможностей браузера. На
сегодняшний день наиболее полнофункциональные браузеры поддерживают подклю-
подключаемые модули и элементы управления ActiveX. Подключаемые модули загружают-
загружаются при запуске браузера и используются с помощью HTML-дескрипторов Web-стра-
Web-страниц. Поскольку в среде браузера экземпляры подключаемых модулей функционируют
как объекты, то для доступа, изменения и управления их функциональными возмож-
возможностями могут использоваться отдельные объекты ядра JavaScript.
BJavaScript также поддерживается возможность взаимодействия с внедренными в
Web-страницы Java-аплетами. Подобный вид взаимодействия может быть двусторон-
двусторонним — от аплета к сценариям на странице и от сценариев к аплету. Технология, на
которой основано это взаимодействие, именуется LiveConnect. Более подробно она
обсуждается ниже в этой главе.
Встроенные функции управления
Не во всех браузерах применяются одни и те же методы для расширения функ-
функциональных возможностей, однако ряд общих языковых элементов позволяют раз-
разработчикам управлять функциональными возможностями различных браузеров. По-
Подобные элементы именуются встроенными (built-in) элементами управления языка
JavaScript. Доступ к ним обеспечивается с помощью двух включенных массивов.
I I О Часть II. Программирование на JavaScript
Эти массивы содержат ссылки на все аплеты, загруженные браузером на опре-
определенной странице, а также на все установленные в браузере подключаемые моду-
модули. С помощью этих массивов разработчик может получить доступ к аплетам и под-
подключаемым модулям, а также реализовать управление ими.
Массив аплетов
В массиве аплетов хранятся ссылки на все находящиеся на странице Java-апле-
ты. Это позволяет разработчику определить общее количество аплетов на странице
и непосредственно взаимодействовать с ними. Если при работе с аплетами исполь-
используется LiveConnect, доступ к самому аплету можно получить за счет индексации в
массиве. Так, например, доступ к данным второго аплета можно получить с помо-
помощью следующего кода JavaScript:
var myAppletlnfo = document.applets[1];
В результате данные об аплете могут храниться в переменной, из которой их мож-
можно извлекать и обрабатывать. Информация, хранящаяся в переменной myAppletlnfo в
приведенном выше примере, будет включать название аплета, перечислять его размер-
размерности, а также описывать структуру пакета, с помощью которого был создан аплет.
По мере расширения области применения Web-приложений корпоративного
уровня, разработчик часто не может знать о количестве аплетов, находящихся на
странице. Страницы создаются динамически в зависимости от типа запроса пользо-
пользователя, а результирующая страница может полностью зависеть от количества эле-
элементов, выбранных пользователем с целью просмотра. А поскольку это количество
может варьироваться, разработчик может создать код JavaScript, который анализи-
анализирует страницу, определяя при этом количество аплетов на странице. Пример подоб-
подобного кода приведен в листинге 4.2.
Листинг 4.2. Определение количества Java-аплетов с помощью
свойства length массива аплетов
<html>
<head>
<title>OnpefleJieHHe количества Java~arnieToB</title>
<script language="JavaScriptl.1" type="text/javascript">
function checkApplets() {
// Присваивание переменной информации о количестве аплетов
var numApplets = document.applets.length;
// Если на странице нет аплетов, перейти на страницу "noapplets"
if(numApplets == 0){
window.location.href =
"http://www.purejavascript.com/noapplets.html";
// Если на странице только один аплет, перейти
// на страницу "oneapplet".
} else if (numApplets == 1){
window.location.href =
"http://www.purejavascript.com/oneapplet.html";
// Если на странице больше двух аплетов, перейти
// на страницу "manyapplets".
} else if (numApplets > 2){
window.location.href =
"http://www.purejavascript.com/manyapplets.html";
Глава 4. Клиентские сценарии I I У
</script>
</head>
<body onLoad='checkApplets()'>
<center>
<table border="l">
<tr>
<td>
<applet code="TestApplet"
codebase=" . "
width=00"
height=M35"
name="Appletone"
mayscript>
Этот браузер не поддерживает Java-аплеты
<param name="clickurl"
value="http://www.purejavascript.com/cgi-bin/redirect.cgi">
</applet>
</td>
</ tr>
<tr>
<td>
<applet code="TestApplet"
codebase=". "
width=00"
height=5"
name="AppletTwo">
Этот браузер не поддерживает использование Java-аплеты
<param name="clickurl"
value=
"http://www.purejavascript.com/cgi-bin/redirect2.cgi">
</applet>
</td>
</tr>
</table>
</center>
</body>
</html>
Как видно из листинга 4.2, после полной загрузки страницы в браузер дескрип-
дескриптор <body> вызывает обработчик событий onLoad. Обработчик событий обращается
к функции, которая определяет количество загруженных на странице аплетов. В за-
зависимости от количества аплетов, страница может перенаправить браузер на другие
страницы. Если на странице находятся два аплета, перенаправления не происходит.
ИшЛи№Ыд.1.АВ Доступ к свойствам и результатам выполнения методов аплета возмо-
возможен только после полной загрузки и запуска на выполнение аплета. Для этого восполь-
воспользуйтесь обработчиком событий onLoad в дескрипторе <body>. Обратите внимание на
то, что на некоторых платформах браузера Navigator присутствует ошибка, приводящая
к неправильному вызову этого обработчика событий. Этот факт следует учитывать при
разработке кода.
\ С. U Часть II. Программирование на JavaScript
Как видно из приведенных ранее фактов, массив аплетов может оказаться очень
полезным инструментальным средством, реализующим доступ к находящимся на
странице аплетам. Но использовать его следует с осторожностью, поскольку не все
браузеры, поддерживающие JavaScript, обеспечивают использование аплетов.
Массив подключаемых модулей
Массив подключаемых модулей является вторым массивом, который может при-
применяться для управления загруженными на HTML-странице элементами. С помощью
этого массива разработчики могут определять, установлен ли на компьютере пользо-
пользователя определенный подключаемый модуль. На основании результатов выполнения
этой операции разработчик принимает решение о необходимости загрузки требуемого
подключаемого модуля.
Массив подключаемых модулей имеет несколько свойств, которые могут исполь-
использоваться для выборки сведений о модулях. С помощью свойств массива можно опре-
определить имя подключаемого модуля, имя файла модуля и описание модуля. В листинге
4.3 приведен пример использования массива подключаемых модулей с целью отобра-
отображения в окне браузера информации, хранящейся в массиве. Результат выполнения
кода примера для браузере, в котором установлены несколько подключаемых мо-
модулей, показан на рис. 4.5.
ПРИМЕЧАНИЕ
Приведенный ниже пример корректно выполняется только в браузерах
Netscape, но, тем не менее, массив (или, в терминах компании Microsoft, "коллекция")
подключаемых модулей такжв поддерживается браузерами Internet Explorer. Более под-
подробная информация о свойствах и методах, поддерживаемых данной коллекцией, нахо-
находится на странице http://msdn.microsoft.com/workshop/author/dhtml/raference/
collections/ pluginsO. asp.
Листинг 4.3. Определение значений свойств массива подключаемых модулей
<html>
<head>
<title>OnpefleneHMe свойств массива подключаемых MOflyneft</title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
<! --
//Присвоение переменной сведений о количестве подключаемых модулей.
var numPlugins = navigator.plugins.length;
// Отображение заголовка страницы,
if (numPlugins > 0) {
document.write('<пЗ>Установленные подключаемые модули</ЬЗХпг>');
) else!
document.write('<пЗ>Подключаемые модули не установлены.</h3>');
}
//Вывести на страницу данные по установленным подключаемым модулям,
for (i = 0; i < numPlugins; i++) {
currPlugin = navigator.plugins[i];
document.write('<рХЬ>Имя модуля:</Ь> '+ currPlugin.name + '<br>');
document.write('<Ь>Имя файла:</Ь> '+ currPlugin.filename + '<br>');
document.write('<Ь>Описание модуля:</Ь> ' +
currPlugin.description + '<br>');
}
// -->
</script>
</body>
</html>
Глава 4. Клиентские сценарии
121
£(й View S° Communicator JHetp
Рисунок 4.5.
Результат выполнения кода
листинга 4.3 в браузере с
несколькими установленными
подключаемыми модулями
' ■'*
Installed plug-ins
For more information onNetscape plug-ins, click here.
1'ahoo! Audio CoufeientiiigFlugiii
File name: D:\Cotnmunicator\Program\plugins\npyacs.dll
Yahoo! Audio Conferencing Plugin
Mime Type |i
application/x-yahoo-acs :i
Description
Yahoo! Audio Conferencing
Microsoft ActiveX Poirability Courainei (NPWrap)
File name' D:VCosmunicator\Program\plugins\NPWRAP.DlX
Microsoft ActiveX Portability Container Plug-In
Mime Type
application/x-npwTsp
Description
NPWrap Files
.Document; Dow
В описанном сценарии с помощью свойства length массива подключаемых моду-
модулей определяется количество установленных модулей. После этого на странице ото-
отображается соответствующий заголовок, а также выполняется цикл for, в результа-
результате чего отображаются данные по установленным модулям. Этот пример является
достаточно простым, однако в результате его выполнения демонстрируется доступ
к значениям свойств массива с целью определения того, какие элементы необхо-
необходимы с целью корректной загрузки страницы в браузер.
Технология LiveConnect
Технология LiveConnect была разработана компанией Netscape и впервые нача-
начала применяться в браузере Netscape Navigator 3. С ее помощью устанавливается связь
между сценариями JavaScript, Java и подключаемыми модулями. Технология
LiveConnect позволяет получить доступ к некоторым функциональным возможнос-
возможностям ядра Java с помощью объекта Packages. Кроме того, с ее помощью обеспечива-
обеспечивается доступ к определенным Java-аплетам с помощью массива Applet, а также дос-
доступ к подключаемым модулям с помощью массива Plugin.
В следующем разделе подробно рассматривается технология LiveConnect и мето-
методика ее использования при работе с Java-аплетами. В разделе будут приведены при-
примеры использования LiveConnect с целью расширения возможностей браузера по
интерпретации сценариев и Java.
Причины использования LiveConnect
Технология LiveConnect играет очень важную роль в объединении возможностей
JavaScript и Java, а также позволяет расширить функциональные возможности обо-
обоих языков. Возможность динамического изменения и взаимодействия с Java-аплета-
Java-аплетами после загрузки страницы обеспечивает сосредоточение в руках Web-разработчи-
Web-разработчика всей мощи языка Java. Кроме того, подход может быть модульным, поскольку
вполне возможно, что аплет создавался другими разработчиками.
С другой стороны, LiveConnect позволяет аплету получить доступ ко всей инфор-
информации, содержащейся в сценариях. Поскольку информация может передаваться в
обоих направлениях (между аплетом и сценарием), при использовании LiveConnect
Л С. С. Часть II. Программирование на JavaScript
разработчики могут существенно расширить состав функциональных возможностей
разработанных ими Web-страниц. Применение технологии LiveConnect внутри кор-
корпорации предоставляет разработчику возможность воспользоваться всеми этими рас-
расширениями. Технология LiveConnect компании Netscape включена в состав браузе-
браузеров Navigator и принадлежит к технологиям, исповедующим принцип "написанное
однажды используется везде".
Примеры использования технологии LiveConnect
Приведенные ниже два примера позволят лучше понять принцип работы
LiveConnect в браузерах производства компании Netscape. В первом листинге показан
пример того, каким образом JavaScript может получить доступ к функциональным
возможностям языка Java (с помощью объекта Packages). Во втором листинге демон-
демонстрируется пример использования JavaScript при организации взаимодействия с ап-
летом.
В листинге 4.4 задействуются некоторые собственные методы Java, доступ к ко-
которым обеспечивается через объект Packages. В этом примере пользователь может
ввести текст в текстовое поле формы и щелкнуть на кнопке Print (Печать). В резуль-
результате этого введенный текст будет выводиться на консоли Java. Для передачи текста
функции JavaScript, которая выводит текст на консоль, используется событие onCIick.
Результат выполнения кода примера в браузере показан на рис. 4.6.
Для того чтобы код этого примера выполнялся в браузере Netscape
В, необходимо на начальном этапе установки выбрать опцию, обеспечивающую инстал-
инсталляцию модуля времени выполнения Java.
Листинг 4.4. Использование методов Java с помощью объекта Packages JavaScript
<html>
<head>
<title>HpMMep использования LiveConnect №K/title>
<script language="JavaScriptl.2" type="text/javascript">
<! --
//Эфа функция принимает введенный пользователем текст
//и выводит его в консоли Java,
function writeToConsole(inText){
Packages.Java.lang.System.out.println(inText);
</script>
</head>
<body>
<form>
<input type="text" name="entered" width=0">
<input type="button" уа1ие="Печать"
onClick='writeToConsole(form.entered.value)'>
</form>
</body>
</html>
Глава 4. Клиентские сценарии
123
Рисунок 4,6.
Использование объекта
Packages с целью
получения доступа к
методу
System. out.printlnQ
языка Java.
-l.gjxl
pure JavaScript
flf JaiTM) Plug in Version 1 ? 0_0'
—- U ing JRE version I 3 0_01 Java HotSpott.TM.i Client VM
* User horns directory= C'ADocuments and Settlngs\3>^yke
с clear console window
f finalize ohiects on finalization Queue
g. garbaoe collect
!. dump ria^loader list
m print memory usage
ц' hide console
s dump system properties
t dumo thread list
к clear tlassloadei cache
0-5 iettrace level to *n>
Pure JavaScript'
tow
Второй пример несколько сложнее первого. В нем введенный пользователем текст
передается в метод аплета. При этом текст, отображаемый в аплете, заменяется на
переданный текст. С целью упрощения понимания примера приводится как код ап-
аплета, так и код JavaScript. В листинг 4.5 включен необходимый код Java, а в листинг
4.6 - код JavaScript.
Листинг 4.5. Java-код, используемый в примере
// Импортируемые классы
import Java.applet.*;
import Java.awt.Graphics;
public class PSLiveConnectExample extends Applet {
// Инициализация экземпляра общедоступной строковой переменной
public String sText;
// Присвоение переменной начального значения
public void init() {
sText = new String("Pure JavaScript");
}
// Отображение значения переменной в заданной позиции
public void paint(Graphics gArea) {
gArea.drawString(sText, 20, 20);
// Метод, который изменяет строку при передаче текста
// из JavaScript.
public void changeString(String aString) (
sText = aString;
repaint();
124
Часть II. Программирование на JavaScri
Листинг 4.6. НТМ-код, используемый для загрузки аплета, а, также изменения его текста
<html>
<head>
<title>npMMep использования LiveConnect №2</title>
</head>
<body>
<center>
<table border="l">
<tr>
<td align="center">
«Capplet
code="PSLiveConnectExample.class"
codebase="."
name="TextChanger"
width=50"
height=5"
mayscript>
</applet>
<form name="inputForm">
<input type="button" уа1ие=аменить текст"
onclick="document.TextChanger.changeString(
document.inputForm.inputText.value)">
<input type="text" size=0" name="inputText">
</form>
</td>
</tr>
</table>
</center>
</body>
</html>
Как видно из листинга 4.6, вначале на странице загружается аплет, который вы-
выводит строку "Pure JavaScript". После загрузки страницы пользователь может ввести
текст в текстовое поле, а для изменения текста в аплете щелкнуть на кнопке Change
Text (Заменить текст). Кнопка для изменения текста напрямую использует метод
changeString() аплета. Результат замены текста показан на рис. 4.7.
Й* UveCormecl Cuamule И2 - NnUcope G
Рисунок 4.7.
Использование JavaScript
для изменения текста в
Java-аплете
... ' J
Глава 4. Клиентские сценерии
125
Обработка форм
До возникновения JavaScript большинство разработчиков для передачи данных от
Web-сервера браузеру пользователя после предоставления формы вызывали опреде-
определенные серверные программы. При использовании формы пользователь вводит свои
данные и передает форму серверу. Как правило, подобный процесс занимал значи-
значительный промежуток времени, что было вызвано задержкой передачи данных сер-
серверу и браузеру пользователя и тем, что большая часть работы по обработке дан-
данных формы (например, синтаксический анализ данных и их проверка) выполнялась
самим Web-сервером.
Использование JavaScript позволяет ускорить этот процесс за счет предварительной
обработки данных формы до их передачи серверу. Подобная обработка приводит к
уменьшению загрузки сервера, а также снижает затраты времени, требуемые для
передачи данных. Использование JavaScript для обработки данных форм может ока-
оказаться полезным для разработчика, а также сэкономить время пользователя.
ПРИМЕЧАНИЕ
Термин "обреботке денных форм" обозначает возможность Web-раз-
Web-разработчиков передевать поля данных из браузера серверу с целью обработки содержи-
содержимого этих полей. После передачи данных серверу резработчики могут использовать их
для любых других целей.
Во многих формах накапливаются такие данные, как имена, адреса или, скажем,
хобби. Благодаря этому достигается совершенно иной уровень функциональных воз-
возможностей разработанных Web-сайтов. В этом случае на Web-сайтах не просто поме-
помещается статичная информация для просмотра, но также реализуется эффективное
взаимодействие между пользователями и Web-сайтами.
Процесс взаимодействия между пользователями и Web-сайтами в большинстве
случаев основан на применении форм. Как только пользователь заполняет поля фор-
формы и отправляет ее серверу, требуется выполнение обработки и проверки данных.
Без клиентских языков сценариев обработка и проверка могла выполняться лишь на
сервере. За счет использования JavaScript работу по обработке и проверке данных
можно разбить на две части: клиентскую и серверную. Именно обработка данных
форм с помощью языка сценариев приносит действительную пользу разработчикам.
Корректная обработка данных форм зависит от правильности предоставляемых
данных. По ошибке можно ввести в форму неверные данные, а затем ее передать. В
этом случае, как правило, обработку возможных проблем выполняет сервер. Про-
Проблем можно избежать, если перед передачей данных выполнять их проверку на кли-
клиентском компьютере с помощью JavaScript. Код JavaScript может проверять содер-
содержимое и формат данных перед передачей, что, в свою очередь, освобождает сервер
от необходимости обработки ошибок, связанных с некорректными данными. Теперь
единственной задачей сервера является обработка передаваемых ему данных.
Следует иметь в виду, что JavaScript полностью не заменяет серверные программы
обработки данных. JavaScript-код должен использоваться только в качестве дополне-
дополнения серверных программ. Совместное использование JavaScript и серверных программ
позволяет создавать эффективные средства обработки данных форм.
Перед использованием JavaScript для обработки данных форм следует продумать,
каким образом можно получить данные и выполнить их анализ. В следующем разде-
разделе рассматриваются методы выборки данных форм с помощью возможностей язы-
языка JavaScript. :
I с. D Часть II. Программирование на JavaScript
ОСНОВЫ ПЕРЕДАЧИ ДАННЫХ: GET ИЛИ POST
При создании формы один из атрибутов, который необходимо указать в дескрипторе
<form>, - это method. Упомянутый атрибут может содержать одно из двух возмож-
возможных значений - GET или POST. Оба значения используются в качестве типа пе-
передачи данных формы, однако, их использование несколько отличается.
Метод GET, который задействуется по умолчанию, передает данные формы на ука-
указанный URL, Данные передаются в одном сеансе передачи по адресу, указанному
в атрибуте action. В качестве примера можно рассмотреть следующую форму:
<form action="http://www.purejavascript.com/cgi-bin/sampleform.cgi"
method="get">
<select name="state">
<option value="NC">CeBepHaa Kaponi*Ha</option>
<option value="SC">K))KHaa KaponMHa</option>
<option value="CA">Kan^opHMa</option>
</select>
<input type="button" value="Отправить">
</form>
После выбора одного элемента из раскрывающегося меню и щелчка на кнопке
Submit [Отправить) данные будут передаваться в конце строки LJRL. Так, например,
если пользователь выбрал вариант "Северная Каролина", передаваемая строка будет
выглядеть следующим образом:
http://www.purejavascript.com/cgi-bin/sampleform.cgi?state=NC
С другой стороны, метод POST устроен несколько иначе. При его использовании
браузер связывается с LJRL, указанным в свойстве action, и передает данные в
теле HTML-запроса. Те, кто знаком со стандартом HTML, знают, что передаваемые
браузеру данные состоят из двух частей: заголовка и тела данных. При передаче
данных формы по методу POST браузер выполняет функцию, аналогичную функции
сервера, пересылая данные в теле сообщения, а не в строке LJRL,
Два рассмотренных метода передачи данных используются в разных случаях. При
передаче серверу бопьшого объема данных следует испопьзовать метод POST. В
большинстве случаев, при передаче большого объема данных с помощью метода
GET сервер сталкивается с некоторыми проблемами. Кроме того, метод POST ис-
используется для сокрытия передаваемых данных от просмотра, поскольку информа-
информация передается в форме блока данных.
Массив форм
Еще одним встроенным объектом JavaScript, который применяется для получе-
получения доступа к компонентам на странице, является массив Form. Этот массив, яв-
являющийся свойством объекта document, представляет собой массив, содержащий
список форм документа. Поскольку данный объект является массивом, доступ к
любой форме документа обеспечивается благодаря индексации элементов массива.
При этом индекс соответствует положению формы в документе.
Например, если в документе находятся три формы и требуется получить доступ
к свойству второй формы, применяемый в этом случае синтаксис будет выглядеть
следующим образом:
document.forms[1].property
В приведенном примере объект document соответствует документу, в котором
находится нужная форма, а элемент property — свойству, значение которого необ-
необходимо определить.
Глава 4. Клиентские сценарии \ С. 7
В листинге 4.7 приведен код HTML-страницы, в которой содержится две формы.
Помимо форм, на странице объявлены две функции, включенные в раздел <head>,
которые демонстрируют различные методы получения доступа к формам и выпол-
выполняют проверку вводимых данных. В каждой форме имеется текстовая область, в ко-
которую пользователь может ввести свой текст, и кнопка Submit. При попытке пользо-
пользователя передать данные генерируется событие onCIick, а содержимое формы
передается на обработку в JavaScript-функцию.
Листинг 4.7. Пример применения массива Forms для получения доступа к
нескольким формам на Web-странице.
<html>
<head>
<title>npMMep использования массива $ора< / ЫЫ.е>
<script language="JavaScript" type="text/javascript">
<!--
// Функция verifyZip проверяет правильность ввода почтового
// индекса. Если пользователь вводит неверный индекс,
// отображается окно предупреждения, функция в качестве
// аргумента использует длину введенной строки,
function verifyZip(length){
// Создание переменной с последующим присвоением ей значения,
// введенного в форме индекса.
var zipEntry = document.forms[0].zip.value;
// Преобразование введенного текста в число с помощью
// десятичной системы счисления.
var zipNum = parselnt(zipEntry, 10);
// Проверка на предмет того, равна ли длина индекса 5.
if (document.forms[0].zip.value.length == length){
// Проверка того, является ли введенный индекс числом.
if(zipNum != О && isNaN(zipNum) == false){
alert(zipEntry + " верный почтовый индекс");
} else {
// Сообщить пользователю, что индекс введен неверно,
alert("Введен ошибочный почтовый индекс.
^•Пожалуйста, повторите ввод.");
}
} else {
alert("Введен ошибочный почтовый индекс.
^•Пожалуйста, повторите ввод.");
// Функция myName отображает введенное пользователем имя.
function myName(){
// Определение введенного в форму имени.
var name = document.form2.name.value;
alert("Вы ввели: " + name);
</script>
</head>
<body>
128
Часть II. Программирование на JavaScript
<center><b>npMMep использования форм</ЬХ/сег^ег>
<br><br><br>
<table>
<form name="forml" method="post">
<tr>
<td align="right">Введите 5-значный почтовый HHfleicc:</td>
<td align="left">
<input type= "text" name="zip" size=5">
<input type="button" name="buttonl"
value="Проверить" onclick="verifyZipE)">
</td>
</tr>
</form>
<form name="form2" action="" method="post">
<tr>
<td align="right">Введите свое HM»:</td>
<td align="left">
<input' type="text" name="name" size=5">
<input type="button" name="button2" value="Показать имя"
onclick="myName(this.form)">
</td>
</tr>
</form>
</table>
</body>
</html>
В первой форме выполняется проверка введенных пользователем данных. Пользо-
Пользователю предлагается ввести 5-значный почтовый индекс. После ввода пользователь
нажимает кнопку проверки, что приводит к вызову функции verifyZip. Для доступа ко
введенным пользователем данным эта функция задействует индексацию массива форм.
Соответствующий пример использования массива форм показан на рис. 4.8.
Необходимо помнить, что индексация в массиве форм начинается с нуля,
а порядок форм в массиве соответствует порядку их объявления в коде. Первая форма
в документе — это форма forms[0], вторая - forms!1!], третья - forms[2] и т.д.
File Ldt View пи £nmmunrc.-ur.! Hsto
Рисунок 4.8.
Результат обработки
данных первой формы
Пркмер ксполыовакня форм
?едт-е:5-значныйпо*гговыйиндекс-
Введите свое имя:
: Показать имя
Глава 4. Клиентские сценарии I С. У
После определения введенных в форму данных сценарий может проверить, со-
соответствует ли длина строки требуемой и является ли введенная строка числом. Если
в форму был введен верный почтовый индекс, отображается сообщение о коррек-
корректности ввода. Если введен неверный индекс, отображается сообщение об ошибке.
Во вторую форму вводится имя, которое передается функции showName. Эта фун-
функция отображает введенное имя после щелчка на кнопке Show Name (Показать имя).
Обратите внимание на то, что для доступа к данным формы функция showName
использует метод, отличающийся от метода, применяемого в первой форме. Доступ
к форме осуществляется не через массив форм, а путем указания имени формы.
В данном примере значение переменной name устанавливается с помощью атри-
атрибута name дескриптора <form>, а не за счет индексации в массив Forms. Допускает-
Допускается использование любого метода получения доступа к элементам форм, однако если
документ включает множество форм, применение имен форм может оказаться бо-
более простым. Кроме того, использование имен форм способствует более легкому
пониманию кода сценария.
В приведенном листинге показан пример совместного использования форм и сце-
сценариев JavaScript. Еще одной полезной функцией JavaScript и форм является мани-
манипулирование данными. Например, если серверная программа обработки данных об-
обрабатывает только телефонные номера без дефисов, разработчики могут написать
сценарии, которые перед передачей данных серверу будет исключать дефисы из те-
телефонных номеров.
Доступ к данным и запись данных
Аналогично тому, как объект document содержит массив forms, объект form со-
содержит массив elements. Массив elements подобен массиву forms в том, что его эле-
элементы хранятся в порядке, в котором они появляются в коде формы; доступ к оп-
определенному элементу можно получить как за счет индексации в массиве, так и по
имени элемента. Два возможных метода доступа к элементам массива elements пока-
показаны в листинге 4.8.
Листинг 4.8. Использование различных методов доступа к элементам формы
<html>
<head>
<title>HpwMep получения доступа к элементам формы</^Ые>
<script language="JavaScript" type="text/javascript">
// Функция отображает введенные данные об автомобиле,
function showCar(){
// Использование данных об автомобиле с помощью массива elements.
var car = document.pref.elements[0].value;
alert("Ваш любимый автомобиль: " + car);
}
// Функция отображает введенный цвет,
function showColor(){
// Получение доступа к цвету с помощью имени элемента,
var color = document.pref.color.value;
alert("Ваш любимый цвет: " + color);
</script>
</head>
\ ОU Часть II. Программирование на JavaScript
<body>
<form name="pref" method="post">
Введите марку любимого автомобиля:
<input type="text" name="car" size=5">
<input type="button" name="carButton"
value="IIOKasaTb марку автомобиля"
onclic]c="showCar (this . form) ">
<br>
Введите любимый цвет:
<input type="text" name="color" size=5">
<input type="button" name="colorButton"
value="Показать цвет"
oncliclc="showColor (this . form) ">
</form>
</body>
</html>
Данные, введенные в каждое текстовое поле, становятся элементами формы. С
помощью массива elements сценарий может получить доступ к каждому отдельному
элементу массива. Как видно на примере функции showCar, доступ к элементу саг
осуществляется через строку кода document.pref.elements[0].value. В этой строке опре-
определяется значение первого элемента массива elements формы pref. Кнопка является
вторым элементом формы. Для доступа к ней можно использовать строку
document.pref.elements[l].value. Аналогично осуществляется и доступ ко всем осталь-
остальным элементам формы.
Функция showColor получает доступ к объекту color другим образом — за счет
использования имени объекта color: document.pref.color.value. Если бы и в этом слу-
случае применялся массив elements, строка обращения к значению элемента выгляде-
выглядела бы следующим образом: document.pref.elements[2].value. Использование имен эле-
элементов намного более безопасно и, кроме того, позволяет легко отслеживать
обращения к элементам, что, в свою очередь, позволяет избежать проблем в буду-
будущем. Например, предположим, что на Web-странице находится два фрейма, А и В.
Фрейм А содержит программу JavaScript, которая обращается к элементам фрейма
В через массив elements. Если бы Web-страница во фрейме В изменилась, но все еще
содержала бы элементы формы, программа JavaScript во фрейме А обращалась бы
к некорректным элементам. Еще одной причиной, по которой желательно исполь-
использовать имена элементов - это то, что при необходимости вставки новых элементов
нумерация должна оставаться неизменной.
Использование массива elements может оказаться полезным в случае, если
изменять программу не требуется, но если необходимо максимально упростить поддер-
поддержку и дальнейшее применение, лучше отдать предпочтение применению массива name.
Помимо получения доступа к элементам формы можно сохранять и изменять ее
данные. Это может быть исключительно полезным при необходимости автоматичес-
автоматической корректировки формы. Изменить можно практически любой объект формы, со-
содержащий данные.
Рассмотрим простой пример записи данных в формы. В листинге 4.9 создается
форма с окном ввода текста, в котором находится вопрос, и одной кнопкой Submit
(Отправить). Пользователю предлагается ответить па вопрос. Если ответ верен, на
экране появляется информационное диалоговое окно с соответствующим сообще-
Глава 4. Клиентские сценарии
131
нием. Если ответ ошибочен, на экране появляется окно предупреждения, в котором
говорится о том, что ответ не верен, а в окно ввода текста автоматически заносится
правильный ответ.
Листинг 4.9. Запись данных в формы JavaScript
<html>
<head>
<title>npHMep записи данных в элементы $opMbi</title>
<script language="JavaScript" type="text/javascript">
<!--
// Функция проверяет правильность ответа, введенного
// в окно ввода текста,
function checkText() {
// Сравнение введенного ответа с корректным вариантом.
if( document.FormExample3.textbox.value == "Заяц"){
alert("Это правильный ответ!");
} else {
// Если введен неверный ответ, вывести в
// окне ввода текста правильный ответ,
document.FormExample3.textbox.value = "Заяц";
alert("Вы ошиблись. Правильный ответ теперь находится
в области ввода текста.");
</script>
</head>
<body>
<form name="FormExample3" method="post">
Герой мультфильма "Ну, погоди!" с длинными ушами?
<input type="text" name="textbox" size=5">
<input type="button" name="Bugs" value="Передать данные"
onclick="checlcText (this . form) ">
</form>
</body>
</html>
Воспользовавшись кодом из листинга 4.9, можно создать метод JavaScript, с по-
помощью которого создается раскрывающееся меню, основанное на вводимых пользо-
пользователем данных.
Пример формы
В листинге 4.10 приведен пример кода простой Web-страницы, которая позволя-
позволяет пользователю ввести его личные данные и передать их на обработку. После вво-
ввода всех необходимых данных и щелчка на кнопке Submit все данные формы перед
передачей их серверу для дальнейшей обработки проверяются на клиентском ком-
компьютере.
132 Часть II. Программирование на JavaScript
Листинг 4.10. Пример применения формы для выполнения
проверки на клиентском компьютере
<html>
<head>
<ti ties-Пример проверки данных формы</^Ые>
<script language="JavaScript" type="text/javascript">
<! --
// Функция проверяет правильность ввода личных данных пользователя,
function validatePersonallnfо (){
//Объявление переменных,используемых для хранения введенных данных
var _first = document.info.fname.value;
var _last = document.info.lname.value;
var _street = document.info.street.value;
var _city = document.info.city.value;
var _zip = document.info.zip.value;
var _phone = document.info.phone.value;
var _email = document.info.email.value;
// Проверка на предмет заполнения всех полей.
if(_first.toString() == ""){ alert("Пожалуйста, введите имя.");}
if(_last.toString () == "") {alert("Пожалуйста, введите фамилию.");}
if(_street.toStringt) == ""){
alert("Пожалуйста, введите название улицы.");}
if(_city.toString() == ""){ alert("Пожалуйста, введите город.");}
if(_zip.toString() == ""){
alert("Пожалуйста, введите почтовый индекс.");}
if(_phone.toString() == ""){
alert("Пожалуйста, введите номер телефона.");}
if(_email.toString() == ""){
alert("Пожалуйста, введите адрес электронной почты.");}
else{
// Проверка правильности ввода почтового индекса и
// номера телефона,
var checkZip = checkNumE);
var phonelnput = document.info.phone.value;
// Инициализация переменных,
var validPhone = false;
var validZip = false;
if(checkZip == true){
validZip = true;
>
else(
alert("Введен ошибочный почтовый индекс: " + validZip);
}
// Если номер телефона введен неправильно,
// сообщить об этом пользователю.
if(!checkPhone(phonelnput)){
alert("Введен ошибочный номер телефона." + validPhone);
}
else{
validPhone = true;
}
if(validZip && validPhone){
alert("Данные формы проверены");
Глава 4. Клиентские сценарии
133
// Функция устраняет из номера телефона дефисы,
// а также проверяет его корректность.
// Правильным считается номер телефона в формате
// хххххххххх, ххх-ххх-хххх или (ххх)ххх-хххх.
function checkPhone(str){
var regexp = /Л (\d{ 10 } | \d{3> -\d{ 3} -\d{ 4 } | \ (\d'{ 3} \) \d{3 } -\d{4 }) $/ ;
return regexp.test(str);
}
// Функция проверяет корректность при вводе почтового индекса,
function checkNum(length){
var zipEntry = document.info.zip.value;
var zipNum = parseint(zipEntry, 10);
if (document.info.zip.value.length == length){
if(zipNum != 0 && isNaN(zipNum) == false){
// Правильный индекс.
return true;
}
else {
// Неправильный индекс.
return false;
else {
//Слишком много цифр - неправильный индекс.
return false;
</script>
</head>
<body>
<center><b>npHMep проверки данных форны</ЬХ/сеп1ег>
<p>B данном примере показано, каким образом JavaScript может
проверять правильность
данных формы на Web-странице. Использование JavaScript с целью
проверки правильности данных на клиентском компьютере может
существенно уменьшить время обработки за счет
снижения вероятности передачи неправильных данных.
<hr>
<br>
<Ь>Личные данные:</Ь>
<form name="info" method="post">
<table>
<tr>
<td align="left">HMH:</td>
<td align="left">
<input type="text" name="fname" size=5">
Фамилия:
<input type="text" name="lname" size=0">
</td>
</tr>
<br>
<tr>
134
Часть II. Программирование на JavaSc
<td align="left">Ynima:</td>
<td align="left">
<input type="text" name="street" size=0">
</td>
</tr>
<br>
<tr>
<td align="left">ropon:</td>
<td align="left">
<input type="text" name="city" size=5">
Штат:
<select name="state">
<option value="ID">Aiiflaxo</option>
<option value»" IA">AiioBa</option>
<option value»" А1.">Алабама</op tion>
<option value="AK">AnHCKa</option>
<option value="AZ">ApHBOHa</option>
<option value»"AR">ApKaH3ac</option>
<option value="HI">raBaiiH</option>
value="DE">flenaB3p</option>
GA">Джopяжия</option>
^p/p
CO">Konopaflo</option>
CT">KOHHeKTHKyT</option>
11.">Иллинойс</орЪ5-оп>
р
KS">Канзас</option>
KY">KeHTyKKH</option>
LA">JIyHSHaHa</option>
MA">Macca4yceTC</option>
MN">MHHHecOTa</option>
'MI">MH4HraH</option>
ME">M3H</option>
"MD">Мэрилвня</option>
"FL">*nopHfla</option>
name="zipV size=">
<option
<option value»
<option value=
<option value»
<option value»
<option value=
<option value»
<option value=
<option value»
<option value»
<option value=
<option value=
<option value=
<option value='
<option value=
<option value=
</select>
Почтовый индекс:
<input type="text"
</td>
</tr>
<br>
<tr>
<td align="left">HoMep телефона
<td align="left">
<input type="text" name="phone"
</td>
</tr>
<br>
<tr>
<td align="left">Anpec электронной
<td align="left">
<input type="text" name="email"
</td>
</tr>
<br>
</table>
<center>
<input type="button" уа1ие="Отправить"
onclick="validatePersonalInfo()">
</center>
</form>
</body>
</html>
(с кодом города):</td>
size=20>
no4Tbi:</td>
size=0">
Глава 4 Клиентские сценерии
135
ер проверки денник Формы - Microsoft Internet Ехркит
View F^yorttes lodts Help
Рисунок 4.Э.
Пример формы, в котором
используется проверка с
помощью клиентской
программы
Пример проверки дахных формы
В данной примере показано, каким образом JavaScnpt может проверят правильность данных формы на Web
странице Использование JavaScnpt с цепью проверки правильности шккш на кпиентсюэм юэмпьютере может
существенно уменьшить время обработки за счет снижения вероятности передачи неправильных данных
3
Имя
Улшя
Город
Номер телефоне, (с кодом
города)
Адрес электронной почты j
Штат | Айдахо j£J Почтовый юдакс
Г
Отправить
I Щ Compute!
На рис. 4.9 показан вид формы, заполняемой с применением персональной ин-
информации пользователя.
Обработка формы начинается с проверки факта заполнения всех полей. Если ка-
какое-либо поле не заполнено, на экран выводится окно предупреждения с требова-
требованием заполнить пустое поле. Два поля требуют особой проверки введенных данных
— это почтовый индекс и номер телефона.
Первая применяемая функция именуется validatePersonallnfo. Эта функция исполь-
используется для проверки корректности ввода данных во всех полях формы Если провер-
проверка завершается успешно, отображается окно предупреждения, в котором сообща-
сообщается о том, что данные формы успешно проверены Но для окончательной проверки
данных формы необходимо проверить почтовый индекс и номер телефона Провер-
Проверка почтового индекса осуществляется с помощью процедуры checkNum Эта функция
использует лишь один параметр — длину строки. Длина корректно правильно введен-
введенного почтового индекса должна составлять 5 цифр Если это условие соблюдено, ин-
индекс считается корректным
Вторая процедура именуется checkPhone Она использует номер телефона и про-
проверяет его на соответствие трем стандартам записи телефонных номеров Если но-
номер соответствует одному из стандартов, функция возвращает значение true. После
завершения обеих проверок считается, что форма содержит верные данные
Обработка Cookie-информации
Cookie-информация представляет собой организованные данные небольшого объе-
объема, которые записываются браузером в текстовом файле на компьютере пользова-
пользователя Как правило, cookie-информация используется для сохранения данных, име-
имеющих отношение к определенному Web-сайту, который используется в настоящий
момент и может использоваться в будущем.
136
Часть II. Программирование на JavaScript
Местоположение текстового cookie-файла может отличаться в зависимости от
типа применяемого браузера. В браузере Navigator вся cookie-информация хранится
в одном файле с именем cookies.txt. В браузере Internet Explorer каждая cookie-ин-
cookie-информация сохраняется в отдельном текстовом файле в папке Cookies, которая по
умолчанию находится в папке \Windows или \Winnt.
Использование cookie-информации связано с некоторыми ограничениями. Размер
этой информации ограничен пределом в 4 Кб. Кроме того, при использовании бра-
браузера Navigator, на пользовательском компьютере могут одновременно храниться не
более 300 порций cookie-информации. При этом размер файла cookies.txt либо пап-
папки Cookies не может превышать 1.2 Мб. Плюс к этому, каждый Web-сервер не мо-
может сохранять более 20 порций cookie-информации. Если упомянутые максимальные
значения превышаются, выполняется удаление наименее часто используемых пор-
порций информации с целью разрешить запись новых порций.
С помощью браузеров пользователи могут управлять порядком использования
cookie-информации. В браузере Navigator с помощью меню Edit | Preferences (Прав-
(Правка | Настройки) можно получить доступ к категории Advanced (Дополнительно). Эта
категория позволяет указать браузеру на то, что следует принимать всю cookie-ин-
cookie-информации, принимать cookie-информацию, отсылаемую серверу, или вообще запре-
запретить сохранение cookie-информации. Кроме того, существует опция, которая указы-
указывает браузеру на необходимость отображать предупреждение пользователю перед
приемом cookie-информации. При выборе этой опции браузер будет выводить сооб-
сообщение при запросе на прием cookie-информации с указанием ее содержимого. В бра-
браузере Internet Explorer аналогичное управление приемом cookie-информации реали-
реализуется через вкладку Security (Безопасность) в окне Internet Options (Свойства
обозревателя) (меню Tools (Сервис) в версии Internet Explorer 5.5 для Windows).
При первой загрузке cookie-информация сохраняется в памяти брау-
браузера. Запись в текстовый файл происходит только при выходе из браузера.
Объект cookie является частью объекта Document. Порции cookie-информации
можно создавать, устанавливать и изменять, устанавливая соответствующие значе-
значения свойства cookie. Для этого служат четыре атрибута: expires, path, domain и secure.
По умолчанию, cookie-информация действительна только на время текущего се-
сеанса браузера. По завершению сеанса cookie-информация удаляется.
Рисунок 4.1 D.
Пример предупреждения о
приеме cookie-информации
Глава 4. Клиентские сценарии I о /
Для cookie-информации, которая должна сохраняться после завершения сеанса
браузера, устанавливается атрибут expires. Этот атрибут определяет срок ее существо-
существования. Значение этого атрибута может быть установлено равным значению любой
строке с датой. Если атрибут expires установлен, по завершении сеанса браузера вы-
выполняется запись cookie-информации в текстовый файл. Если атрибут expires не ус-
установлен, cookie-информация уничтожается после закрытия текущего сеанса брау-
браузера.
Атрибут path указывает домен, соответствующий данной cookie-информации. Уро-
Уровень связанности начинается с указанного пути и распространяется на подкатало-
подкаталоги. Например, предположим, что Web-сайт http://www.purejavascript.com/examples/
cookie.html установил cookie-информацию и требует, чтобы ее действие распростра-
распространялось на домен purejavascript.com. Для этого потребуется установить значение атри-
атрибута path равным "/", что позволит получить доступ к cookie-информации с любой
страницы Web-сервера www.purejavascript.com. Если значение атрибута path равно
"/examples", cookie-информация будет доступна только для страниц, находящихся в
каталоге examples и его подкаталогах.
ПРИМЕЧАНИЕ
Если установлен атрибут secure, cookie-информация будет переда-
передаваться только по зещищенному каналу связи (HTTPS). Если атрибут secure не уста-
установлен, cookie-информация может передаваться по любому каналу связи.
Знание cookie-атрибутов в первую очередь позволяет считывать и записывать
cookie-информацию. Рассмотрим процесс чтения cookie-информации.
Чтение cookie-информации
Как упоминалось ранее, cookie-информация является частью объекта document.
Первое, что следует научиться делать, — выполнять чтение свойства cookie. Эта опе-
операция выполняется с помощью следующей строки:
var cookieName = document.cookie;
Этот оператор создает переменную cookieName и присваивает ей свойство cookie
объекта document. После обращения к этому свойству необходимо извлечь различные
атрибуты cookie-информации. Само свойство cookie возвращает строку, в которой
содержатся вся cookie-информация, принадлежащая текущему документу.
Cookie-информация интерпретируются в виде пар имя/значение. Строка, возвра-
возвращаемая свойством cookie, содержит список пар имя/значение. Чтобы получить зна-
значение отдельного атрибута, потребуется выполнить синтаксический разбор строки.
Для этого можно воспользоваться встроенными методами обработки строк JavaScript.
Пример операции чтения cookie-информации приведен в листинге 4.11. При вы-
вызове приведенной функции в коде необходимо просто передать ей имя соответству-
соответствующей cookie-информации.
Листинг 4.11. Получение значения cookie-информации
<script language="JavaScript" type="text/javascript">
<! --
// Объявление переменной, в которой будут храниться вся
// cookie-информация данного документа,
var cookies = document.cookie;
// Функция, которая определяет значение Cookie по имени,
function readCookie(name) {
138 Часть II. Программирование на JavaScript
// Объявление переменной для хранения значения "name=".
var start = cookies.indexOf(name + " = ");
// Если cookie-информация с указанным именем найдена,
// определить ее индекс.
if (start == -1) {
alert("Cookie-информация не найдена");
}
// Извлечение первого символа cookie,
start = cookies.indexOf("=", start) + 1;
// Чтение cookie до того момента, пока не встретится
// признак конца.
var end = cookies.indexOf(";", start);
if (end == -1) {
end = cookies.length;
}
// Получение значения cookie путем вызова
// метода unescape.
var value = unescape(cookies.substring(start, end));
if(value == null){
alert("Cookie-информация не найдена");
}
else{
alert("Значение cookie равно: " + value);
</script>
Запись cookie-информации
Значения cookie-информации могут создаваться, изменяться и устанавливаться.
Необходимо помнить, что cookie представляют собой пары "имя/значение". Поэто-
Поэтому, перед записью атрибуты cookie необходимо представить в виде пар "имя/значе-
"имя/значение".
Для установки значения cookie следует сначала создать его, а затем назначить имя.
Затем потребуется установить значение каждого атрибута новой cookie-информации.
Необходимо учитывать, что при установке значения атрибута expires должна указы-
указываться строка даты в корректном формате. Для создания строки даты лучще всего
воспользоваться методом Date JavaScript.Остальные атрибуты cookie устанавливаются
аналогично. Ниже показан пример установки атрибутов cookie:
document.cookie= "name=" + form.cookie.value + "; expires=" + month;
Если необходимо изменить определенное значение cookie, можно просто устано-
установить атрибуты cookie заново. Значение атрибута cookie удаляется за счет его измене-
изменения.
Окна в действии
Объект window используется во всех JavaScript-программах независимо от того,
указан он или нет. В иерархии объектов JavaScript объект window находится на один
уровень выше, чем объект document. Он предоставляет разработчику возможность
управлять текущим окном, а также создавать новые экземпляры окон.
Глава 4. Клиентские сценарии
139
Возможность создания новых окон дает возможность разработчикам расширить
функцион&чьные возможности создаваемого Web-сайта. На некоторых сайтах новые
окна создаются рекламодателями для показа рекламных баинеров, на других сайтах,
например, ESPN (см. рис. 4.11), новые окна используются для того, чтобы играть в
различные игры во время просмотра Web-сайта.
Отношение родительский/дочерний
Использование окон описывается в терминах отношения родительский/дочерний.
Это означает, что если окно В создается из окна А, то окно В считается дочерним
окном окна А, а окно А — родительским окном окна В. Любое действие, выпол-
выполняемое по отношению к дочернему окну его родительским окном должно реализо-
вываться с помощью родительского окна. Обратите внимание на следующий про-
программный код:
<html>
<head>
<script language="JavaScript"
type="text/javasoript">
// Функция создает новое окно myChild,
// в котором отображается содержимое файла index.html.
function create (){
open("index.html" , "myChild");
</script>
</head>
<body>
<form name="forml">
<input type="button"
уа1ие="Создать дочернее окно" onclick='create()■>
</form>
</body>
</html>
Рисунок 4.11.
Всплывающее окно
игровой программы
Щ-ШШ NMneapee
SAMPLE CARD
Assist =• 300 ptr
Shot * 33 c*z
Way
;H«wt«fk>r
SAMPLE tARD
^Cleveland "
Assist * 35 pti
Pcint* 30 pts
^">
■sWafeaEftWl
I 4-U Часть II. Программирование на JavaScript
Функция create просто создает новое окно, которое будет считаться дочерним
для первого. Имя этого окна определяется во втором параметре функции window.open.
В данном случае именем окна будет "myChild". Доступ к параметрам дочернего окна
можно получить через его родительское окно. Если дочернее окно имеет свое соб-
собственное окно, оно считается дочерним окном второго уровня для родительского
окна. Чтобы выполнить какое-либо действие над дочерним окном второго уровня,
родительское окно должно сначала обратиться к дочернему окну первого уровня и
только через него к дочернему окну второго уровня. Предположим, что имя дочер-
дочернего окна второго уровня — Jane, имя его непосредственного родительского окна —
Bob, а имя родительского окна верхнего уровня — Joe. Тогда для того чтобы управ-
управлять окном Jane через окно Joe, строка кода должна выглядеть следующим обра-
образом:
joe.bob.jane.document.forml.textBox.value
Родительское окно обладает полным контролем над своим непосредственным
дочерним окном и всеми дочерними окнами более низкого уровня. Если родитель-
родительское окно закрывается, контроль над дочерними окнами теряется.
С помощью метода opener дочернее окно может определить свое родительское
окно. Метод opener сообщает дочернему окну о том, на базе какого окна оно было
создано. Это метод используется следующим образом:
var name = window.opener.document.name;
В данной строке переменная name получит имя родительского окна.
Если имеются дочерние окна нескольких уровней, можно использовать вложен-
вложенные методы opener. Если необходимо из дочернего окна второго уровня обратиться
к родительскому окну, следует просто добавить еще один уровень метода opener:
window.opener.opener.document.forml.textbox.value
Чтобы обратиться к свойствам данного окна, можно воспользоваться свойством
self. Предположим, что необходимо установить значение textbox в форме документа,
находящегося в некотором окне. Это делается так:
self.document.formName.textbox.value = "JavaScript - это круто";
Создание окон
Язык JavaScript имеет встроенные методы создания новых экземпляров окон.
Метод open используется для создания любого первичного или вторичного окна. Ниже
приведен пример использования этого метода:
window.open("web.html", "newWin", "resizeable,menubar,toolbar");
В приведенном примере кода создается новое окно, содержащее строку меню и
панель инструментов, причем размеры окна можно изменять. Имя файла web.html
определяет файл, который будет открываться в новом окне, a newWin — имя созда-
создаваемого объекта window. Окно имеет множество различных дополнительных парамет-
параметров. В приведенном примере приводятся только несколько параметров. В число дру-
других параметров входят: outerHeight, outerWidth, innerHeight, innerWidth, alwaysRaised,
alwaysLowered, location, screenY и screenX. Эти параметры можно передавать в каче-
качестве аргументов функции open.
ПРИМЕЧАНИЕ
Между аргументами функции open не должно быть пробелов. Наличие
пробелов приведет к ошибкам при создании окна. Более подробное описание свойств
окон находится в главе 8.
Глава 4. Клиентские сценарии
141
Пример применения окон - дочернее окно * Microsoft Internet Explorer
F.d* View Favor iies J oofc Hglp
Stop Refresh ^ , Home s Search Favc-fites
Пример применения окон - почернее окно
Для открытия дочернего окна г
Передать в родительское окно!
{Передать в дочернее окно!
Текст, полученный из родительского окна
(«] Done
Tf P^| My C
{Передать в дочернее окно!
Передать текст
{Передать в родительское окно!
Этот текст передается из дочернего окна
jDone
Рисунок 4.12..., .„,j передачи данных между окнами
После создания новым окном можно управлять. Язык JavaScript дает возможность
манипулировать несколькими окнами. При правильном использовании свойств объек-
объекта window можно изменять объекты в других окнах. При этом следует помнить о су-
существовании между окнами отношения родительский/дочерний.
Ограничения
В устаревших версиях JavaScript обращаться к окнам можно было только в на-
направлении "сверху вниз". Это означало, что родительское окно могло использовать
свойства дочернего окна, но не наоборот. В JavaScri pt 1.2 и более поздних версиях
эта проблема была решена. Как уже говорилось, для связи между окнами в направ-
направлении "снизу вверх" используется свойство opener.
Пример применения окон
В приведенном ниже примере показано, каким образом передавать данные меж-
между двумя окнами. Сначала приводится код родительского окна. На рис. 4.12 показано
как родительское, так и дочернее окно.
Код родительского окна находится в листинге 4.12.
Листинг 4.12. Код родительского окна
<html>
<head>
<title>npHMep применения окон - родительское OKHo</title>
<soript language="JavaScript" type="text/javascript">
// Функция создает и открывает новое дочернее окно,
function openWin(){
// Открыть новое окно с именем "ChildWin".
childwin=open("child.html", "ChildWin","toolbar,scrollbars,
menubar,status,width=5 00,height=2 00");
I 4 С. Часть II. Программирование на JavaScript
// Функция передает значение из родительского окна дочернему окну,
function sendToChild(){
childWin.document.childForm.childText.value =
document.parentForm.parenttext.value;
</script>
</head>
<body>
<center>
<Ь>Пример применения окон - родительское окно</Ь>
<br><br><br>
</center>
<form name="parentForm">
Для открытия дочернего окна щелкните на кнопке:
<ЬгХЬг>
<input type="button" name="submit" уа1ие=>гкры>гь дочернее окно"
onclick="openWin()">
<ЬгХЬгХЬг>
<table>
<tr>
<td align="left">
<input type="text" name="parenttext" size=5">
</td>
<td align="left">
<input type="button" name="submit" value="IIepeflaTb текст"
onclick="sendToChild()">
</td>
</tr>
<tr>
<td align="left">
<input type="text" name="received" size=5">
</td>
<td align="left">
Этот текст передается из дочернего окна.
</td>
</tr>
</table>
</form></body>
</html>
В этом родительском окне находится кнопка, после щелчка на которой откры-
открывается дочернее окно. Кроме того, в окне находятся два текстовых поля — первое
для передачи текста дочернему окну, а второе для передачи данных из дочернего
окна. Для создания дочернего окна необходимо щелкнуть на кнопке, в результате
чего откроется дочернее окно. Когда пользователь введет текст в первое текстовое
поле и щелкнет на кнопке Send Text (Передать текст), введенный текст передается
дочернему окну и отображается в соответствующем текстовом поле. Код дочернего
окна приводится в листинге 4.13.
Глава 4. Клиентские сценерии I 4и
Листинг 4.13. Код дочернего окна
<html>
<head>
<title>npHMep применения окон - дочернее OKHo</title>
<script language="JavaScript" type="text/javascript">
<!--
// Функция передает значение иа дочернего окна в родительское,
function sendToParent (){
window.opener.document.parentForm.received.value =
document.childForm.sendText.value;
</script>
</head>
<body>
<center>
<Ь>Пример применения окон - дочернее окно</Ь>
<brXbrXbr>
</center>
<form name="childForm">
<table>
<tr>
<td align="left">
<input type="text" name="sendText" size=5">
</td>
<td align="left">
<input type="button" name="submit" уа1ие="Передать текст"
onclick="sendToParent()">
</td>
</tr>
<br>
<tr>
<td align="left">
<input type="text" name="childText" size=5">
</td>
<td align="left">
Текст, полученный из родительского окна:
</td>
</tr>
</table>
</form>
</body>
</html>
Дочернее окно похоже на родительское, только оно не позволяет открывать еще
одно окно. В дочернем окне находится одно текстовое поле для передачи текста ро-
родительскому окну и одно текстовое поле для приема текста из родительского окна.
Для доступа к родительскому окну в коде используется свойство opener. Следует по-
помнить, что дочернее окно не может напрямую обращаться ко своему родительскому
окну. Родительское окно может вызывать дочернее окно по имени, но не наоборот.
Благодаря манипулированию окнами, можно существенно расширить функцио-
функциональные возможности Web-сайта. При необходимости многие свойства окна легко
изменяются. Но при использовании окон следует быть внимательным, поскольку
1 44 Часть II. Программирование на JavaScript
большое количество (или даже одно) всплывающее окно может не вызывать ниче-
ничего кроме раздражения. Применяйте всплывающие окна только в случае действитель-
действительной необходимости.
Динамические документы
По мере усложнения Web-сайтов появляется необходимость в использовании ди-
динамических документов. Первоначально не было никакой другой альтернативы пред-
представления содержимого, кроме простого языка HTML. Язык HTML давал возмож-
возможность использовать различные типы форматирования, что, в свою очередь, позволяло
создавать довольно неплохие документы, но вскоре одного языка HTML стало не-
недостаточно. Так появились языки сценариев. Комбинирование JavaScript и HTML ста-
стало огромным качественным скачком вперед. Использование JavaScript и HTML с
поддержкой каскадных таблиц стилей означало, что разработчик мог создать стати-
статический документ с помощью HTML, а затем управлять им с помощью JavaScript и
каскадных таблиц стилей.
"Всемирная паутина" прошла немалый путь за очень короткое время. Первое по-
поколение языка гипертекстовой разметки именовалось динамическим (dynamic)
HTML, или DHTML. Как упоминалось ранее, DHTML не представлял собой какую-
либо одну технологию, но являлся комбинацией трех базовых технологий, которые
предоставляли разработчикам инструментарий для создания динамических документов.
Однако с тех пор технологии продвинулись еще дальше.
В самых современных версиях браузеров реализована объектная модель докумен-
документа (DOM — Document Object Model). При этом предпринимается попытка стандар-
стандартизации метода, с помощью которого выполняется доступ к элементам некоторо-
некоторого документа (например, документа HTML или XHTML). Модель DOM,
несомненно, является технологией будущего, но ведь следует еще учитывать нали-
наличие устаревших браузеров.
Этот раздел будет посвящен рассмотрению как старой (DHTML), так и новой
(DOM) технологий создания динамических документов. Будет рассмотрено создание
сценариев, совместимых с версиями 4+ браузеров. Принимая во внимание скорость,
с которой расширяется область применения DOM, это, скорее всего, последняя
редакция данной книги, в которой рассматривается язык DHTML.
Старый метод
Компания Netscape в своем браузере Navigator 4 первоначально реализовала трех-
трехмерное позиционирование с помощью дескрипторов <1ауег> и <Пауег>. С другой сто-
стороны, в браузере Internet Explorer 4 трехмерное позиционирование выполнялось
посредством реализации объектной модели DHTML. При этом расширялись функци-
функциональные возможности существующих HTML-дескрипторов, например, дескрипто-
дескриптора <div>.
После появления версии 4 браузеров в распоряжении разработчиков оказались два
метода создания слоев в документах, но эти методы были жестко привязаны к при-
применяемым браузерам. Каскадные таблицы стилей, которые также были необходимы
для создания динамических документов, были реализованы в обоих типах браузеров.
Эти таблицы реализуют базовые возможности. Сами реализации обладают некоторыми
различиями, как в уровне, так и в интерпретации, поэтому данная область все еще
находится в процессе развития, тем не менее, сама технология постоянно совершен-
совершенствуется.
Глава 4. Клиентские сценарии I
Слои в браузере Navigator 4
Концепция слоев впервые начала использоваться в браузере Navigator 4, но не
только в коде HTML, а и за счет использования объекта layers в JavaScript 1.2. По-
Подобно многому другому в то время, объекты layers поддерживались только в брау-
браузере Navigator 4, а в Internet Explorer поддержка слоев вообще отсутствовала. Тем
не менее, в слоях было заложена определенная польза. Они позволяли управлять
наложением и перемещением элементов окна.
Что же касается HTML, то в его состав был добавлен новый дескриптор <1ауег>.
Этот дескриптор позволял использовать возможности JavaScri pt. Ниже приведен при-
пример применения дескриптора <1ауег>.
<layer id="myLayer" width=20" height=00" bgcolor="red"
top=50" left=00" visibility="show">
Это дескриптор браузера Navigator 4
</layer>
Положение слоев может определяться и абсолютными, и относительными зна-
чениеми, как и для большинства элементов. При использовании относительных зна-
значений указывается положение относительно слоя, в котором содержится данный
слой. При использовании абсолютных значений задается положение объекта в доку-
документе.
Дескриптор <1ауег> использовал абсолютное позиционирование и содержал свой-
свойства, которые позволяли разработчику указывать точное положение слоя в документе.
Позже появился дескриптор, который позволял реализовать относительное позици-
позиционирование слоя. Дескриптор <Науег> определяет встроенный слой.
Дескрипторы HTML составляли лишь часть нововведений, внесенных компани-
компанией Netscape. Помимо них в JavaScript появился объект Layer и массив
document.Iayers, которые использовались для получения доступа к слоям и управле-
управления ими. Для этого объект Layer содержал все необходимые методы и свойства.
Для управления слоями было необходимо, чтобы в дескрипторах <Iayer>, <ilayer>
и <div> (применялся для описания групп дескрипторов) был установлен атрибут
name, даже несмотря на то, что в документе HTML 4 Recommendation (Рекомен-
(Рекомендации по HTML 4) подобное требование отсутствовало. В этом случае синтаксис до-
доступа к слоям имеет очень простой вид. Например, если необходимо получить дос-
доступ к слою с именем layerl, можно воспользоваться следующим синтаксисом:
document.layers['layerl']
Поскольку эти типы слоев представляют собой старый метод реализации динами-
динамических документов, мы не будем приводить их подробное описание. Тем не менее,
далее в этой главе, в разделе "Динамические документы", рассматривается пример,
который поможет понять, каким образом динамические документы используются в
браузере Navigator 4. Более подробно в главе будет исследоваться новый метод, ре-
реализованный в браузере Netscape 6.
Хотите больше узнать об объекте Layer? Прочтите соответствующий
раздел главы 8.
Объектная модель DHTML браузера Internet Explorer 4
В браузере Internet Explorer 4 используется обобщенный подход к DHTML, по-
позволяющий разработчикам не только получать доступ к слоям, которые, как пра-
1 46 Часть II. Программирование на JavaScript
вило, создавались с помощью дескрипторов <div>, но и практически ко всем деск-
дескрипторам в документе. В отношении слоев был выбран подход с использованием дес-
дескриптора <div>, поскольку этот дескриптор был оговорен в документе HTML
Recommendation. Этот дескриптор в основном использовался для объявления в до-
документе блоков данных — блоков, которые можно было использовать в сценариях,
применять к ним стили и управлять ими.
Также был добавлен дескриптор <span>. В то время как дескриптор <div> предо-
предоставлял возможность объединить многочисленные дескрипторы в одну группу, дес-
дескриптор <span> применялся для объединения в группу набора символов в теле дру-
другого дескриптора.
Как и в случае с Navigator, браузер Internet Explorer нуждался в методе досту-
доступа к элементам документа. Однако, в отличие от метода document.!ayers, он не по-
полагался на нестандартный атрибут name дескриптора <div>. Вместо него использо-
использовался стандартный атрибут id. Задействовав для примера тот же самый слой layerl,
синтаксис доступа к слою в Internet Explorer 4 и 5 будет выглядеть следующим об-
образом:
document.all['datablockl']
Несмотря на то что методы Netscape и Internet Explorer отличаются, оба мето-
метода уступают по эффективности подходу DOM.
Новый метод
Объектная модель документа (Document Object Model — DOM) представляет со-
собой весьма обширную тему и включает все аспекты интерпретации документов в
объектной модели, специально разработанной с учетом обеспечения доступности и
гибкости в применении. В этом разделе рассматриваются основы модели DOM, ее
структура и методика ее использования в JavaScript.Это раздел задуман как общий
обзор DOM.
ПРИМЕЧАНИЕ
Если требуется досконально изучить модель DOM и вместе со всеми
ее особенностями, прочтите Рекомендации по W3C DOM уровня 1 и уровня 2 и новые
материалы, посвященные перспективем резвития уровня 3.
Определение модели DOM
Модель DOM обеспечивает доступ ко всем элементам документа и их атрибутам
за счет иерархической структуры. Интерфейс прикладного программирования DOM
API может использоваться для создания, удаления и изменения элементов и их со-
содержимого. Несмотря на то что модель DOM была разработана с целью совместного
применения с любым языком программирования, наиболее часто она использует-
используется в комплекте с XML и HTML. В настоящем разделе внимание будет уделяться связи
модели DOM с языком JavaScript.
Модель DOM уровня 1 поддерживается браузерами начиная с Netscape 6, Internet
Explorer 5 и Opera 5. Кроме того, эти браузеры поддерживают и отдельные элемен-
элементы модели DOM уровня 2. Несомненно, каждый браузер обладает своими особен-
особенностями работы с моделью DOM. Стоит заметить, что более ранние версии упомя-
упомянутых браузеров поддерживают некоторые аспекты модели DOM.
Управление моделью DOM
Перед тем как приступить к рассмотрению принципов использования модели
DOM, необходимо ввести небольшой словарь терминов. В отношении DOM часто
Глава 4. Клиентские сценарии
147
используются три термина, к которым относятся узел, элемент и атрибут. Каждый
документ содержит набор узлов (nodes), который представляет собой либо текст,
либо дескриптор с атрибутами. Дескриптор (например, <img>) в DOM также назы-
называют элементом (element). Каждый элемент включает либо не включает атрибут
(attribute). В приведенном ниже HTML-коде элемент <img> содержит атрибуты src и
name:
<html>
<body>
<img src="dog.gif" name="myDog" alt="Dog">
</body>
</html>
Модель DOM позволяет программе получить доступ ко всем элементам документа
через древовидную структуру объектов. Древовидная структура начинается с корне-
корневого объекта. В HTML-файле это, как правило, дескриптор <html>. В корневом объек-
объекте хранятся другие объекты, между которыми установлено отношение родительский/
дочерний. Дочерним элементом считается любой узел, вложенный в другой узел. В
предыдущем примере узел <html> является родительским узлом узла <body>. Узел
<img> считается дочерним узлом узла <body> и т.д.
Обращаться к узлам можно по их именам (при наличии атрибута name) с помо-
помощью встроенных методов DOM или за счет отношения родительский/дочерний. Для
получения доступа к узлу по имени применяется метод getEIementById() объекта
Document. Для получения доступа к узлу по иерархической структуре используются
массивы Document.parentNode[], Document.chiIdNodes[] и Document.getSibIing[].
С помощью модели DOM элементы и атрибуты можно добавлять, изменять или
удалять. Для создания нового элемента используется метод createEIement(). Ниже при-
приводится пример создания нового элемента привязки, а также задания его атрибутов.
var myNewLink = document.createElement('а');
myNewLink.setAttribute('href', 'home.html');
myNewLink.setAttribute('name', 'Homepage');
Для работы с моделью DOM существует большое количество встроенных мето-
методов и свойств. Полный перечень свойств модели DOM можно отыскать в Рекомен-
Рекомендациях по W3C DOM, доступных по адресу http://www.w3.org/DOM, или в докумен-
документации по браузерам Netscape, Internet Explorer и Opera.
Каскадные таблицы стилей модели DOM
Модель D0M также может применяться с каскадными списками стилей, кото-
которые часто используются для создания Web-страниц, требующих позиционирования,
форматирования или применения динамического содержимого. Каскадные таблицы
стилей позволяют разработчику создавать конструкции представления содержимого
документа, а модель D0M может использоваться для применения созданных кон-
конструкций по отношению к объектной модели. После применения конструкций к
объектной модели программа JavaScript может создавать, изменять или удалять свой-
свойства каскадных таблиц стилей.
Все элементы каскадных таблиц стилей доступны через интерфейс документа.
Кроме того, для доступа к правилам определенной таблицы стилей может исполь-
использоваться интерфейс CSSStyleSheet. Чтобы определить, поддерживает ли модель D0M
каскадные таблицы стилей, можно обратиться к методу hasFeature() с каскадной
таблицей стилей в качестве первого аргумента (функция) и версией (уровнем) в
качестве второго.
I 4u Часть II. Программирование на JavaScript
Пример применения модели DOM
Теперь, когда было рассмотрено, что собой представляет модель DOM, некото-
некоторые из ее методов и принципы управления, приведем один пример использования
модели DOM. Листинг 4.14 состоит из трех различных частей. Первая часть демонст-
демонстрирует динамическое добавление текста в документ, вторая - замену упорядочен-
упорядоченного списка HTML неупорядоченным списком, а третья — динамическое добавле-
добавление ссылки в документ.
Листинг 4.14. Пример различного использования модели D0M.
<html>
<head>
<script "type="text/javascript" language="JavaScript">
<!--
// Добавить текст в документ
function addtext(text){
if (document.createTextNode){
var mytext=document.createTextNode(text);
document.getElementByld("exapmle").appendChild(mytext);
// Заменить упорядоченный список неупорядоченным
function changeList(){
var oldListltems = myList.innerHTML;
var newNode = document.createElement("UL");
myList.replaceNode(newNode);
newNode.innerHTML = oldListltems;
}
// Добавить ссылку в документ
function addLink(){
var myLink = document.createElement('a');
myLink.setAttribute('href', 'http://www.amazon.com');
myLink.setAttribute('name','Amazon');
text = document.createTextNode(' Amazon.com ');
myLink.appendChild(text);
document.getElementByld('firstlink').appendChild(myLink)
</script>
</head>
<body>
<h3>B этом примере демонстрируется применение DOM для решения
различных задач</ЬЗ>
<!--Первый пример использования DOM-->
В этом примере показано, как можно динамически добавить в документ
новый текст.
<div id="example" onClick="addtext('*Это новый текст* ')">
Чтобы вставить новый текст <Ь>щелкните здесь</Ь>.
<hr>
В этом примере показано, как можно заменить упорядоченный список
неупорядоченным.
Глава 4. Клиентские сценарии
<Ьг>
( выполняется в IE 5 )<Ьг>
<!--Второй пример использования DOM-->
<forra name=^'f orml">
<ol id=myList>
<li>Item
<li>Item
<li>Item
<input type="button" уа1ие="Ивменить тип списка"
onclick="changeList()">
</form>
<!--Третий пример использования DOM --> /
В этом примере показано, как можно добавить в документ новую
ссылку.
<div id="firstlink" onClick="addLink()">
Для вставки нового текста <Ь>щелкните здесь</Ь>.
<hr>
</body>
</html>
Использование языка DHTML в различных браузерах
До сих пор рассматривались только два способа создания и управления динами-
динамическими элементами в HTML-документе: старый метод с применением DHTML, a
также новый метод, задействующий возможности модели DOM. Ранее в главе рас-
рассматривался старый способ, а также демонстрировался пример применяемого при
этом синтаксиса. Затем был рассмотрен новый способ и также приведен пример его
синтаксиса. Теперь будет приведен пример кода, используемого для отображения и
скрытия блока данных или слоя. Причем этот код может выполняться не только в
браузерах версии 4, в которых используется метод DHTML, но и в более новых вер-
версиях 5 и 6, в которых применяется модель DOM.
Как демонстрируется в примере, для создания блоков данных будет использовать-
использоваться дескриптор <div>, для форматирования — каскадные таблицы стилей и, наконец,
для определения типа браузера и принятия решения о методе работы с блоками дан-
данных — язык JavaScript. В приведенном примере будет создаваться блок данных (или
слой) и две кнопки. При щелчке на одной из кнопок блок исчезает, при щелчке на
второй блок снова появляется на экране.
Перед тем как перейти к собственно листингу, необходимо рассмотреть несколь-
несколько дополнительных вопросов. Начнем с самого простого. Используемый в примере код
HTML представляет собой всего лишь форму с двумя кнопками, которые при ге-
генерации событий onclick вызывают функции JavaScript. Под формой находится еще
более простой блок <div>, в котором содержится текст "Мой блок". Также стоит
обратить внимание на то, что в примере используется обработчик событий onload
в дескрипторе <body>, который обращается к функции JavaScript. Используемый в
данном случае код выглядит следующим образом:
<body onload="checkBrowser ()">
<form>
<input type="button" value="CKpbiTb"
onclick="changeState('datablock','hidden')">
150 Честь II. Прогреммировение не JevaScript
<input type="button" value="IIoKa3aTb"
onclick="changestate('datablock','visible')">
</form>
<div name="datablock" id="datablock">
<р>Мой блок</р>
</body>
Что касается функции, то она предназначена для установки значений перемен-
переменных, которые соответствуют синтаксису сценария. Код функции выглядит следующим
образом (здесь ieVer соответствует старшей версии браузера IE, в котором откры-
открывается данная страница). Ссылка "Gecko" является частью строки агента пользова-
пользователя браузеров, созданных на основе механизма интерпретации Gecko от Mozilla.org,
например, браузера Netscape 6.
function checkBrowser() {
// IE 4
if((ieVer < 5) && (ieVer > 0)){
block = ".all";
style = ".style";
isDHTML = "true";
// Navigator 4
} else if(navigator.userAgent.indexOf("Nav") != -1){
block = ".layers";
style = "";
isDHTML = '"true";
// IE 5+ и Netscape 6+
} else if((navigator.userAgent.indexOf("Gecko") != -1) ||
(ieVer >= 5)){
isDOM = "true";
Как упоминалось ранее, в браузерах Navigator свойство, к которому не-
необходимо получить доступ, указывается непосредственно после объявления
document.layers['itwiC.tf<wi']. В браузерах Internet Explorer доступ к свойствам осуществ-
осуществляется с помощью коллекции style, при этом используемый синтаксис выглядит сле-
следующим образом: document.all['имяСлоя']Му1е.свойство.
Может показаться, что различия между этими двумя методами усложняют напи-
написание кода, поскольку кажется, что придется написать отдельный блок текста для
каждого типа браузера. Однако в языке JavaScri pt существует функция верхнего уров-
уровня eval(), которая в качестве аргумента использует строку и выполняет ее как
JavaScript-код. Это позволяет динамически создавать часть кода JavaScript, например,
ссылку на слой, и передавать его на выполнение в функции eval().
Излагаемый ранее материал касался только метода DHTML. Теперь воспользуемся
полученными знаниями и применим для новых браузеров модель D0M. Для получе-
получения указателя на слой используется метод getEIementById(), а для скрытия или ото-
отображения слоя — свойство element.style.visibility. Следует также обратить внимание на
то, что в функции устанавливается значение переменных isDHTML и isDOM, ко-
которые будут применяться позже.
Последняя функция, которая выполняет всю остальную работу и вызывается в
результате щелчков на кнопках - changeState(). Эта функция использует два аргумен-
аргумента, первый из которых представляет собой имя слоя, а второй — значение видимо-
видимости слоя, которое необходимо установить. Поскольку для получения доступа к свой-
свойствам слоя и их изменения используются различные методы, функция будет
выглядеть следующим образом:
Глава 4. Клиентские сценарии I Э I
function changeState(dblock, state){
if(isDHTML == "true"){
eval("document" + block + "t1" + dblock + "']" + style +
".visibility = '" + state + "'");
} else if(isDOM == "true"){
var blockElement = document.getElementByld(dblock);
blockElement.style.visibility = state;
}
К этому моменту уже была рассмотрена уже большая часть кода за исключени-
исключением лишь некоторых объявлений переменных и значений свойств таблиц стилей. Пол-
Полный код примера представлен в листинге 4.15.
Листинг 4.15. Управление слоями в браузерах, поддерживающих слои
<html>
<head>
<style type="text/css">
<!--
#datablock{
background-color: lightblue;
}
-->
</style>
<script type="text/javascript" language="JavaScriptl. 2">
// Глобальные переменные браузера
var block = new String ();
var style = new String () ;
var isDHTML = new Boolean (false) ;
var isDOM = new Boolean (false) ;
// Определение версии браузера Internet Explorer.
var ieVer = parselnt(navigator.userAgent.charAt(parselnt(
navigator.userAgent.indexOf("MSIE")) + 5));
// В зависимости от используемого метода, установка значений
// соответствующих переменных,
function checkBrowser(){
if((ieVer < 5) && (ieVer > 0)){
block = ".all";
style = " .style";
isDHTML = "true";
(else if(navigator.userAgent.indexOf("Nav") != -1){
block = ".layers";
style = "";
isDHTML = "true";
}else if((navigator.userAgent.indexOf("Gecko") != -1) ||
(ieVer >= 5)){
isDOM = "true";
}
}
// Установка пересланного состояния видимости,
function changeState(dblock, state){
if(isDHTML == "true"){
eval("document" + block + "['" + dblock + "•]" + style +
".visibility = '" + state + "'");
}else if(isDOM == "true"){
var blockElement = document.getElementByld(dblock);
blockElement.style.visibility = state;
}
}
II—>
</script>
</head>
1 Del Часть II. Программирование на JavaScript
<body onload="checkBrowser()">
<form>
<input type="button" value="Hide"
onclick="changeState('datablock','hidden')">
<input type="button" value="Show"
onclick="changeState('datablock','visible')">
</form>
<div name="datablock" id="datablock">
<р>Мой блок</р>
</body>
</html>
Язык пользовательского интерфейса, основанный на XML
В этом разделе рассматриваются основы языка пользовательского интерфейса, ос-
основанного на XML (XUL— XML-based User Interface Language). XUL работает на мно-
множестве различных платформ в среде механизма интерпретации Gecko и со многими
языками программирования. В разделе обсуждаются основные принципы XUL и опи-
описываются некоторые особенности совместного использования JavaScript и XUL.
Что такое XUL?
Язык XUL основан на XML, который используется для описания объектов и
макетирования пользовательских интерфейсов. Этот язык был создан с целью упро-
упрощения описания содержимого окон и диалоговых окон. Язык XUL широко исполь-
используется в браузерах Mozilla и Netscape 6.
Файловая структура и синтаксис
Файлы XUL, как правило, имеют расширение .xul. Сам язык основан на исполь-
использовании дескрипторов и несколько напоминает XML. Фактически XUL выглядит как
гибрид XML и HTML с добавлением ряда специальных дескрипторов. Как и XML,
язык XUL чувствителен к регистру символов.
Начало XUL-файла может выглядеть следующим образом:
<?xml version="l.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/ess"?>
<!DOCTYPE window>
<window xmlns="
http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
В первой строке указывается, что это XML-файл, а также номер версии. Во вто-
второй строке объявляется, какая таблица стилей будет использоваться для данного
конкретного файла. В третьей строке указывается тип документа, а в четвертой вы-
выделяется пространство имен для XUL-файла, указанного в конце строки URL.
||ЫШЫ!М!И
Хотите больше узнать о пространстве иман в XML? Посетита страницу
по адресу http://www.w3.org/TR/1999/REC-xml-names-19990114.
Языки XUL и JavaScript
Язык XUL сам по себе не выполняет какой-либо определенной функции. Чтобы
браузер мог интерпретировать XUL, необходимо использовать язык программирова-
программирования, который будет объединять различные компоненты интерфейса. В этой книге в
качестве объединяющего языка рассматривается язык JavaScript.
Глава 4. Клиентские сценарии I DO
JavaScript можно вставить в XUL-документ.Для обозначения частей документа, ко-
которые содержат JavaScript-код, применяется дескриптор <html:script></htmI:script>.Kofl
JavaScript вставляется между начальным и конечным дескрипторами. В более сложных
случаях, требующих большего объема кода, JavaScript-код может быть выделен в от-
отдельный файл (с расширением .js). Затем этот файл включается в XUL-файл за счет
указания атрибута src дескриптора <html:script>. Вот пример такого включения:
<html:script language="JavaScript" src="myscript.js"/>
Язык XUL, в основном, работает с оконными элементами управления (widgets,
иногда - буквально "виджетами"). К оконным элементам управления относятся
меню, панели инструментов, полосы прокрутки и т.п. Для взаимодействия с пользо-
пользователем оконные элементы управления могут использовать JavaScript. Например,
предположим, что создается новый оконный элемент управления типа кнопки, ко-
который при нажатии должен выполнять определенную функцию. Используя обработ-
обработчик событий onclick языка JavaScript, можно определить момент нажатия кнопки. То
же относится и к другим типам событий.
Пример использования XUL
Рассмотрим пример XUL-файла, который создает новое меню. В листинге 4.16
приведена очень простая XUL-программа, которая использует оконный элемент уп-
управления типа меню.
Листинг 4.16. Пример использования XUL
<?xml version="l.О"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/ess"?>
<!DOCTYPE window>
<html:script src="myScript.js"/>
<window id="new-window" title="new menus"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/
there.is.only.xul">
<menubar>
<menu value="aNewMenu">
<menupop>
<menuitem value="IlepBbm новый пункт меню"
onclick="shoeFirst();"/>
<menuitem value="B'ropoii новый пункт меню"
onclick="showSecond();"/>
<menuseparator/>
«nenuitem уа1ие="Последний новый пункт меню"
onclick="showLast () ;"/>
</menupop>
</menu>
</menubar>
</window>
В примере создается новое меню aNewMenu, в которое вставляется три новых
пункта. Между первыми двумя и последним пунктом меню помещается разделитель.
Каждый пункт выполняет определенную JavaScript-функцию, которая определяется
в файле "myScript.js".
Резюме
В этой главе были рассмотрены различные аспекты, связанные с программиро-
программированием клиентской части на JavaScript. В этой редакции появилось описание новых
технологий, включающих объектную модель документа и язык XUL. Технологии на-
написания сценариев с каждым днем становятся все более совершенными. С появле-
появлением DOM и XUL разработчики получили инструментарий, позволяющий создавать
разнообразные динамические Web-страницы.
Глава 5
Серверная сторона
JavaScript
В предыдущих главах книги был подробно описан язык программирования JavaScript.
Рассматривались отдельные функциональные возможности языка и области его
применения. В оставшихся главах обсуждается использование JavaScript в качестве язы-
языка программирования, а также рассматриваются среды, в которых выполняется ин-
интерпретация языка.
Помимо применения JavaScript на компьютерах-клиентах, этот язык можно ис-
использовать и на серверах. Эта идея реализована в серверах Netscape Enterprise и
iPlanet Enterprise, а также в среде ASP для информационных серверов Internet (IIS
— Internet Information Server), и позволяет разработчикам создавать гибкие Web-при-
Web-приложения. Область применения таких Web-приложений может быть поистине безгра-
безграничной, но в большинстве случаев они используются с целью поддержки сеансов
пользователей и взаимодействия с базами данных при создании страниц в динами-
динамическом режиме.
ПРИМЕЧАНИЕ
Компании Netscape и Sun объединили свои усилия в деле разработки
различных серверных приложений, имеющих общее наименование iPlanet (Web-сайт
http://vuvuvu.iplanet.com]. Этот альянс образовался после выхода в свет Netscape
Enterprise Server 3.6. Именно поэтому версия 4.0 этого сервера называлась iPlanet
Enterprise Server. Начиная с данного момента, серверная среда JavaScript будет назы-
называться средой Enterprise Server.
На протяжении всей главы подробно рассматривается серверная часть JavaScript.
Будут описаны ее отличия от клиентской части, а также рассмотрены принципы
развертывания Web-приложений. Выполняется анализ различных областей примене-
применения серверных технологий, а также рассматриваются методы управления програм-
программами. По сути, эта глава является введением, описывающим серверную часть
JavaScript.
Различия между серверной и клиентской частями JavaScript
Серверная часть JavaScript отличается от клиентской не только средой интерпре-
интерпретации, но и самой концепцией применения. Эти отличия можно разделить на две
Глава 5. Серверная сторона JavaScript I Э Э
большие категории, каждая из которых разбивается на более мелкие подкатегории.
При этом можно выделить две основных 'категории:
• Различия в серверных средах
• Действительные различия в методах программировании для серверной и кли-
клиентской частей.
Перед тем как приступить к созданию серверных приложений, необходимо иметь
четкое представление об этих различиях. Несмотря на сходство семантики и синтак-
синтаксиса применяемого языка, концепция серверной части отличается от концепции
клиентской части.
Серверная среда
Один из основных фактов, о которых следует знать разработчику при использо-
использовании серверной части JavaScript, — это различия в реализации JavaScript в серве-
серверах Enterprise и IIS. Здесь различия выражены более четко, нежели в клиентской
части, где различия касаются моделей объектов и средств реализации.
Для сервера Enterprise совместными усилиями компаний Netscape и iPlanet были
созданы объекты, свойства и методы, которые соответствуют стандартным функци-
функциональным возможностям серверной части вне зависимости от платформы. Здесь при-
присутствуют элементы языка, которые позволяют получать доступ к файловой систе-
системе, отправлять почтовые сообщения и осуществлять выборку данных из баз данных.
Ни один из этих элементов не является специфическим для какой-либо определен-
определенной платформы. Все они имеют достаточно общий характер, что позволяет их ис-
использовать на всех поддерживаемых сервером платформах.
С другой стороны, компания Microsoft при реализации своего языка JScript во
главу угла поставила платформу Windows. Язык JScript содержит множество объек-
объектов и элементов, характерных для среды Windows. He так давно компания Microsoft
позиционировала язык JScript как базовый в рамках своего проекта .NET. Все эти
вопросы будет коротко рассмотрены ниже в этой главе.
Различные методы программирования
Теперь проанализируем различия в методах программирования для серверной и
клиентской части JavaScript. Помимо того, что серверная часть обладает расширен-
расширенными функциональными возможностями, при ее программировании проявляется ряд
особенностей:
• В среде Enterprise Server сценарии, которые должны выполняться в серверной
части, заключаются между начальным дескриптором <server> и конечным дес-
дескриптором </server>
• В среде Microsoft ASP сначала указывается, что будет использоваться язык
JScript (по умолчанию используется язык VBScript)
• В серверной части доступны дополнительные объекты, методы, свойства и со-
события
• Ни один из клиентских элементов языка не доступен в серверной части (воз-
(возможен доступ только к элементам ядра языка).
В отличие от клиентских сценариев, которые указываются между дескрипторами
<script> и </script>, все сценарии, выполняемые в серверной части в среде Enterprise
Server, заключаются между дескрипторами <server> и </server>. При этом сервер
получает указание, касающееся выполнения кода, заключенного между этими дес-
дескрипторами. Подобная особенность позволяет программисту использовать на одной
15и Часть II. Программирование на JavaScript
странице клиентские и серверные сценарии, причем интерпретация клиентских сце-
сценариев не происходит.
В реализации серверной части от Microsoft разработчику для написания приложе-
приложений доступны несколько языков программирования. Поэтому на странице необхо-
необходимо в качестве используемого языка указать язык JScript. Это можно сделать дву-
двумя способами:
• Включив в качестве первой строки ASP-страницы следующую строку:
<%@LANGUAGE="JScript"%>. В результате для страницы устанавливается язык
JScript.
• Используя начальный и конечный дескрипторы <script> со значением атри-
атрибута runat (который характерен для ASP-страниц) равным server и значени-
значением атрибута language равным JScript.
<script language="JScript" runat="server">
// код
</script>
В серверной части язык JavaScript имеет объекты, предназначенные для отправ-
отправки почтовых сообщений, открытия соединений с базами данных, управления пулом
соединений, доступа к файловой системе и обработки полученных данных. Благода-
Благодаря подобному расширению синтаксиса серверной части, язык JavaScript может при-
применяться при разработке мощных серверных приложений.
И последним различием является то, что в серверной части недоступны элемен-
элементы клиентской части. Это всего лишь характеристика среды, в которой интерпрети-
интерпретируются сценарии, но это может показаться странным для опытного программиста,
который ранее не имел дела с серверной частью языка. Например, в серверной ча-
части отсутствуют объекты navigator и Form. Оба этих объекта специфичны для кли-
клиента, интерпретирующего сценарий.
ПРИМЕЧАНИЕ
Поскольку реализации серверной и клиентской частей являются раз-
различными, то для определения того, поддерживается ли данный обьект, метод, свойство
или событие обратитесь к части III настоящей книги.
Серверная часть JavaScript для Netscape
Компания Netscape была первой, кто реализовал серверную часть JavaScript. По-
Поэтому не должно вызывать удивления, что данная реализация серверной части языка
основана на принципах, разработанных для браузеров. В разделе указывается, какие
версии серверов поддерживают JavaScript, а также описывается, каким образом мож-
можно запускать и управлять приложениями, написанными на JavaScript.
Поддержка серверов
Перед началом разработки серверного приложения на языке JavaScript для сре-
среды сервера Enterprise Server необходимо изучить уровень поддержки языка, к кото-
которому разработчик может получить доступ. Поскольку с течением времени язык
JavaScript претерпевал эволюционные изменения, необходимо убедиться в том, что
ресурсы, на которые разработчик рассчитывает в своем приложении, доступны в
данной реализации серверной части. В табл. 5.1 перечислены поддерживаемые версии
серверной части языка JavaScript в среде Enterprise Server.
Глава 5. Серверная сторона JavaScript
Таблица 5.1. Поддержка
Версия JavaScript
1.1
1.2
1.4
1.5
серверами серверной части JavaScript
Версия Enterprise Server
Netscape Enterprise Server 2.
Netscape Enterprise Server 3.
iPlanet Web Server, Enterprise
iPlanet Web Server, Enterprise
0
0
Edition
Edition
157
4.0
5.0
Компиляция сценариев
В отличие от клиентской части JavaScript, реализация серверной части в среде
Enterprise Server требует компиляции сценариев в файлы, имеющие расширение .web.
Эти двоичные файлы содержат все необходимое для соответствующего Web-прило-
Web-приложения. В файлы .web входят все файлы .html с серверным кодом, а также все исполь-
используемые внешние файлы исходного кода JavaScript (файлы с расширением .js).
Для выполнения компиляции компания Netscape поддерживает инструмент
JavaScript Application Compiler (jsac), работающий в командной строке. Его можно
найти в каталоге bin. Минимальным требованием для компиляции приложения яв-
является наличие файла .html, в котором содержится код приложения. Сам программ-
программный инструмент для создания файла .web требует определения целого ряда парамет-
параметров, которые описаны в табл. 5.2.
В табл. 5.2 все пераметры приведены в виде -option, jsac, кроме
того, допускается применение синтексиса /option. Все пути должны указыветься с
применением обратной косой черты (\), поскольку прямая косая черте используется
дпя определения переметров.
Таблица 5.2. Параметры компилятора командной строки jsac.
Параметр Описание
-а версия Этот параметр позволяет указывать версию интерпретатора, для которого
компилируется приложение. На момент написания книги данный
параметр мог иметь только одно значение - 1.2, указывающее
компилятору на то, каким образом выполняются операции сравнения,
которые отличались в версии JavaScript 1.2.
-с Проверка синтаксиса сценария без создания файла с расширением .web.
Не допускается использование этого параметра совместно с параметром
-о.
-d Отображение содержимого файла.
-f список_файлоа Это параметр определяет текстовый файл, содержащий имена всех
файлов, которые необходимо включить в откомпилированный файл. Этот
параметр используется по причине наличия операционных систем, для
которых установлены ограничения на длину командной строки. Имена
файлов в текстовом файле должны разделяться пробелами. Если в имени
файла содержится пробел, само имя нужно поместить в кавычки.
-h Отображение справочной информации по компилятору. Не используйте
этот параметр совместно с другими параметрами.
I 58 Часть II. Программирование на JavaScript
Параметр Описание
-\ файл_ввода Указывает имя единственного файла ввода .html. При необходимости
включения нескольких файлов используется параметр -f.
-I набор_символов Позволяет задавать набор знаков, который будет использоваться при
компиляции приложения. Параметр набор символов может представлять
собой строку наподобие iso-8859-1.
-о выходной_файл Указывает имя создаваемого файла .web. He используйте этот параметр
совместно с параметром -с.
-р путь Указывает корневой каталог для относительных иман файлов.
-г файл_ошибок Этот параметр позволяет создавать файл, в который будут записываться
коды и описания ошибок компиляции.
-v Отображение расширенных сведений о ходе выполнения компиляции.
Командная строка компилятора при использовании приведенных выше парамет-
параметров для компиляции типичного приложения может выглядеть примерно так:
jsac -о myApp.web -v index.html results.html jsbeans.js
В этой строке указано, что на экран должна выводится расширенная информа-
информации о процессе компиляции, а также заданы имена выходного (myApp.web) и исход-
исходных файлов.
Вот еще один пример, в котором указывается полный путь к исходному файлу
и используется запись возникших при компиляции ошибок в файл.
jsac -о myApp.web -v -i /js/myapps/index.html
-r /js/logs/myapperror.log
Как известно многим программистам, очень важно знать все возможные парамет-
параметры командной строки. Поиск ошибок при компиляции проекта иногда требует
столько же усилий, сколько создание нового проекта.
Диспетчер приложений Server Side JavaScript Application Manager
Диспетчер приложений Server Side JavaScript Application Manager, окно которого
показано на рис. 5.1, — это программа, которая используется для управления сер-
серверными приложениями в среде Enterprise Server. Она позволяет запускать, останав-
останавливать, продолжать выполнение, выполнять, отлаживать, изменять и удалять при-
приложения, созданные для Web-сайта. Эта панель, управления контролирует все
установленные серверные приложения JavaScript.
Эта программа диспетчера предназначена не только для запуска и останова при-
приложений. Она наиболее удобна при определении текущего состояния и данных, от-
отладке и установке параметров конфигурации. После компиляции приложения и его
добавления в Server Side JavaScript Application Manager диспетчер может использо-
использоваться для управления всеми параметрами программы, за исключением, разумеет-
'ся, самого программирования. Однако перед запуском менеджера необходимо выпол-
выполнить несколько подготовительных действий.
Конфигурирование
Во-первых, потребуется активизировать диспетчер Side JavaScript Application
Manager в данном экземпляре Enterprise Server. Это легко делается с помощью дис-
диспетчера Server Manager.
Глава 5. Серверная сторона JavaScript
159
Рисунок 5.1.
Программа Server
Side JavaScript
Application Manager
сервера Enterprise
Server.
Web File Path: d /Netscape/Senrer4/plugin£/sampb^js/bugba;e/bugbase web
Default Page: home html
Initial Page: start html
Built-in Maximum
Database Connections: 0
External Libiaries: None
Client Object
Maintenance: clieni -cookie
Status: Acb\.K
После регистрации на сервере Administration Server выберите опцию, соответству-
соответствующую Web-серверу, на котором необходимо активизировать серверную часть
JavaScript. Находясь в Server Manager для требуемого экземпляра сервера, щелкните
на кнопке Programs (Программы), находящейся в панели меню. Затем в навигаци-
навигационной панели слева на странице щелкните на ссылке Server Side JavaScript. При
этом откроется главный экран, показанный на рис. 5.2.
На главном экране доступны три опции:
• Activate the server-side JavaScript environment (Активизировать среду серверной
части JavaScript)
• Require a password for access to the JavaScript Application Manager (Запросить
пароль доступа к диспетчеру JavaScript Application Manager)
• Select aJavaScript Thread Pool (Выбрать пул потоков JavaScript).
Рисунок 5.2.
Активизация серверной
части JavaScript с
помощью диспетчера
Server Manager
'\"Jf.'. .rinirjj """r bn njf,
' '. '''''"* ;.\j ■ compaq-366
Activate the Server Side Javascript application environment?
Javascript Thread Pool; I none 4 !
Require administration server password for Server Side Javascripj
* Yes
I OU Часть II. Программирование на JavaScript
Первое, что необходимо сделать на главном экране — активизировать среду сер-
серверной части JavaScript. Затем можно установить, чтобы доступ к JavaScript
Application Manager осуществлялся только с применением пароля администратора.
Это опция является весьма желательной, поскольку в противном случае незащищен-
незащищенные приложения подвергаются значительному риску несанкционированного досту-
доступа. При отсутствии пароля можно будет остановить выполнение приложения либо
даже изменить его настройки. И, наконец, если серверную часть JavaScript плани-
планируется использовать для связи с базами данных, необходимо установить опцию пула
потоков. Чтобы получить подробную информацию о пуле потоков, щелкните на кноп-
кнопке Help (Справка).
После активизации серверной части JavaScript и принятии решения относитель-
относительно необходимости защиты диспетчера паролем щелкните на кнопке ОК. Откроется
страница Save And Apply Changes (Сохранить и применить изменения), в которой для
применения выбранных на предыдущей странице опций нужно щелкнуть на кноп-
кнопке Save And Apply (Сохранить и применить). После этого отобразится окно предуп-
предупреждения, в котором сообщается о результате применения опций.
После успешного изменения файла конфигурации (obj.conf) и перезапуска Web-
сервера на экране снова отобразится страница Active Server Side JavaScript. В верх-
верхней части страницы теперь будет находиться ссылка на Server Side JavaScript
Application Manager. Эта ссылка выглядит следующим образом:
http://имя_компьютера/арртдг
где параметр имя_компьютера будет заменен именем компьютера и домена.
ВОЗМОЖНЫЕ ПРОБЛЕМЫ
Если на этом этапе возникли какие-либо проблемы, проверьте следующее:
• Выполняются ли подключаемые модули NSAPI (программный интерфейс серве-
сервера Netscape], которые могут конфликтовать с серверной частью JevaScript?
• Используется ли программное обеспечение сторонних производителей, предназ-
предназначенное для динамического создания Web-страниц текущего сайта, которое
может иметь конфликтующие или перекрывающиеся переметры.
• Изменялся ли в последнее время файл obj.conf?
По первым двум пунктам особого внимания заслуживают те приложения и подклю-
подключаемые модели NSAPI, которые применяются для синтаксического анализа страниц.
Можно попробоветь отключить опцию Persed HTML (Проанализированный HTML],
если оне установлена. Это делается с помощью административного экземпляра
Web-сервере, путем выбора пункта меню Content Management (Управление содер-
содержимым] и щелчка не ссылке Parse HTML в панели навигации.
И, наконец, если проблемы не исчезли, или е последнее время изменялся файл
obj.conf, можно попытаться загрузить предыдущую версию этого файла. Это можно
сделать, выбрав пункт меню Server Preferences (Настройки сервере], а затем в
панели навигации щелкнуть на ссылке Restore Configuration (Восстановить конфи-
конфигурацию]. Прокручивайте по одному пункту столбец obj.conf. Обратите внимание, что
при этом отменяются все изменения, внесенные в файл конфигурации. Иногда это
приводит к тому, что при попытке запуска диспетчера JavaScript ApplicationManager
нарушается выполнение другого процесса.
Глава 5. Серверная сторона JavaScript
161
Теперь, когда все готово к запуску на выполнение диспетчера приложений, щел-
щелкните на ссылке. В результате будет открыта еще одна страница, позволяющая ус-
установить параметры, которые будут использоваться по умолчанию при добавлении
новых приложений. На этой странице также можно определить несколько дополни-
дополнительных настроек.
В табл. 5.3 перечислены возможные опции, доступные при установке значений,
заданных по умолчанию для новых приложений.
Таблица 5.3. Возможные параметры приложений, которые можно установить
с помощью диспетчера JavaScript Application Manager
Параметр
Описание
Web File Path
(Путь к Web-файлу)
Default Page
(Страница, заданная
по умолчанию)
Путь к файлу с расширением .web, заданный по умолчанию.
Если все приложения хранятся в подкаталоге
/ssjsapps/myprojects, потребуется выбрать именно эту опцию.
Эта опция задает для приложения страницу, определенную
по умолчанию. Из соображений практичности можно установить
эту опцию соответствующей index.html.
Initial Page
(Начальная страница)
Built-in Maximum
Database Connections
(Максимальное
количество встроенных
соединений с базами
данных)
Эта опция задает начальную страницу приложения. Например,
если для приложения выбраны глобальные настройки, которые
загружаются лишь при первом запуске приложения и хранятся
в файле global.html, при выборе данной опции потребуется
указать файл global.html.
Если разработчик использует базы данных, оплата за пользование
которыми пропорциональна количеству соединений, эта опция
может оказаться полезной. Она устанавливает максимально
возможное количество соединений с базами данных.
External Libraries
(Внешние библиотеки)
Эта опция определяет абсолютный путь к используемым
приложением внешним библиотекам.
Client Object Maintenance
(Поддержка клиентского
объекта)
Эта опция используется для указания того, должно ли приложение
поддерживать пользовательские сеансы. Возможные значения
опции: Client Cookie, Client-URL, Server-IP, Server-Cookie и
Server-URL.
После установки значений в разделе Default Values When Adding Applications (Зна-
(Значения, заданные по умолчанию, при добавлении приложений), определите собствен-
собственные настройки. В разделе Preferences (Настройки) можно выбрать две опции:
• Confirm On (Включить подтверждение) — Эта опция указывает на то, должно
ли перед выполнением задачи выводится окно подтверждения. Опция может ус-
устанавливаться для следующих задач: удаление, запуск, остановка и/или по-
повторный запуск приложения.
• Debug Output (Вывод отладки) — Эта опция позволяет выбрать будет ли отлад-
отладка выполняться в том же окне (Same Window) или в новом окне (Other
Window).
После установки этих опций щелкните на кнопке ОК. В результате завершится
процесс настройки конфигурации диспетчера Server Side JavaScript Application
Manager. Дополнительную помощь и информацию можно получить, щелкнув на со-
соответствующих ссылках в рамках интерфейса.
162 Часть II. Программирование на JavaScript
Управление сценариями
Управление сценариями является, по-видимому, наиболее редко упоминаемым
аспектом, связанным с развертыванием Web-приложений. Как правило, разработчик
полагает, что созданное приложение является весьма устойчивым и с ним ничего
не может произойти в дальнейшем. Но в реальном мире это утверждение не всегда
справедливо. Даже приложения, которые годами работали превосходно, в конце кон-
концов, могут столкнуться с проблемами. Проблемы могут быть вызваны обновлением
сервера или новым браузером, отдельные элементы клиентской части JavaScript
которого функционируют не совсем так, как ожидалось. Как бы то ни было, про-
проблемы возникают, поэтому надо быть готовым к их появлению.
Диспетчер Server Side JavaScript Application Manager предоставляет средства не
только для управления приложениями, но также и средства для их поддержки. Бо-
Более подробную информацию можно получить на Web-сайте DevEdge либо просто
перед выбором одной из вкладок диспетчера откройте окно справочной информации.
После выбора вкладки Applications (Приложения) отображается информация
относительно всех приложений, установленных на данный момент времени в сис-
системе. Список установленных приложений находится в текстовой области в верхней
части раздела. После выбора одного из приложений к нему можно применить опции,
описанные в таблице 5.4.
Таблица 5.4. Опции приложений в разделе Controls
Опция управления Описание
Start (Пуск) Запускает приложение и делает его доступным для пользователя.
Stop (Останов) Останавливает выполнения выбранного приложения.
Restart (Перезапуск) Останавливает и перезапускает выбранное приложение.
Run (Выполнить) Открывает новое окно и загружает в него URL выбранного
приложения. Это позволяет быстро проверить правильность
работы приложения.
Debug (Отладка) Открывает одно или два окна (в зависимости от установленных
параметров) для отладки приложения.
Modify (Изменить) Позволяет изменять любые параметры, установленные для
выбранного приложения.
Remove (Удалить) Удаляет приложение из списка установленных приложений.
В текущем разделе рассматриваются вопросы управления приложениями. После
выбора приложения в списке установленных приложений отображаются сведения о
самом приложении, а также его текущее состояние. А теперь рассмотрим процесс
отладки, который может обеспечивать весьма эффективный инструментарий для
любого разработчика, использующего серверную часть JavaScript.
Для запуска окна отладки выберите отлаживаемое приложение, а затем щелкните на
кнопке Debug (Отладка). В зависимости от выбранных опций откроется одно или два ос-
основных окна. Если открылось только одно окно, оно будет разделено на два фрейма.
Один из этих фреймов — окно отладки, которое на рис. 5.3 показано как отдель-
отдельное окно. После запуска программы содержимое этого окна при выполнении кода
JavaScript будет изменяться. В окне отладки отображаются данные, которые переда-
передаются в приложение и из приложения. Можно отследить процесс присвоения значе-
значения переменным, создания объектов и различные состояния объектов.
Глава 5. Серверная сторона JavaScript
163
Рисунок 5.3,
Окно отладки
используется для
вывода данных об
отлаживаемом
приложении
т Debugging hangman -Netscape 6
L"fi|.iii >i
hangmanJittnl
Clouting request object,
guess = T
ip = 92.168 1.103"
protocol = "HTTW1.1"
method = TOST"
agent = "МмЩа/5.0
C'mduws, TJ; Windows NT
'.0. cn-Ш. rnlC)
Geek -20001108
"rcabng client object'
num_misses = "
u.ed= *
answer =""»*» «•'
word = "ИУЕЧЛКЕ"
newgame = "false"
gameno = "
Hangman
Y ^u have used the fvllowmg letters so far- L
i—
'V/hatisyourguess1' ]
To learn how to play Hangman, please .> -, 1 ;
Программистам зачастую требуется знать значения переменных, а также возвра-
возвращаемые значения методов. Серверная часть JavaScript позволяет просматривать раз-
различные значения путем использования в сценариях метода debug(), который в про-
процессе выполнения приложения выводит данные в окне Trace Information
(Трассировочная информация). Этот метод аналогичен методу write(), но использу-
используется в серверной части, при этом передаваемая методу строка или переменная ото-
отображается интерпретатором в окне Trace Information. Типичный код, использующий
этот метод, выглядит следующим образом:
debug("Выполняется функция myFunction с аргументом:
+ myVar);
ПРИМЕЧАНИЕ
Более подробная информация по использованию метода debug() при-
приведена в глава 9.
Помимо знания процесса отладки приложения, важно понимать сообщения об
ошибках, которые могут выводиться в процессе отладки. Все ошибки можно разде-
разделить на два основных типа. Ошибки первого типа называются синтаксическими (стан-
(стандартные ошибки серверной части JavaScript). При возникновении ошибки подобно-
подобного рода возвращается информация об объекте, к которому относится данная
ошибка, сообщение об ошибке, имя файла приложения и номер строки.
Второй тип ошибок возникает в базах данных. Такие ошибки могут отличаться по
типу возвращаемых данных, но, как правило, содержат следующую информацию:
• Database/Function (База данных/функция) — Это сообщение предупреждает
пользователя о том, что возникла ошибка, связанная с базой данных, и ука-
указывает функцию, послужившую причиной появления ошибки.
• LiveWire Services Error (Ошибка служб LiveWire) — Это сообщение генерируется
службой подключения к базе данных LiveWire и отображает сведения об
ошибке и причинах ее возникновения.
• Vendor Error (Ошибка поставщика услуг) — Это сообщение также возвраща-
возвращается службой LiveWire, но оно сообщает об ошибке базы данных, к которой
I 64 Часть II. Программирование не JavaScript
пытается подключиться приложение. Для декодирования подобной ошибки
необходимо знать коды ошибок баз данных.
• Standard Server-Side JavaScript Error (Стандартная ошибка серверной части
JavaScript) - Эта ошибка аналогична ошибке первого типа за тем лишь ис-
исключением, что она связана с подключением к базе данных.
Кроме окна отладки на экране находится главное окно или фрейм. При отладке
приложения в этом окне отображается код приложения. Совместное использование
этого окна и окна отладки позволяет разработчику выполнить пошаговое выполне-
выполнение кода, наблюдая за тем, какого рода эффект достигается при выполнении каж-
каждой строки кода. С помощью средства отладки диспетчера Server-Side JavaScript
Application Manager разработчик может обнаружить и устранить практически все
возможные проблемы.
Среда Microsoft ASP
Как и Netscape, компания Microsoft вскоре оценила перспективность реализации
JScript в серверной части и в рамках .NET. Необходимость использования одного язы-
языка как в клиентской, так и в серверной части стала весьма настоятельной. Поэто-
Поэтому в сервере IIS 3.0 появилась поддержка ASP 1.0, а разработчики получили в свое
распоряжение язык JScript. С тех пор были выпущены версии IIS 4.0 и 5.0, а также
ASP 2.0, 3.0 и ASP+ (которую теперь называют ASP.NET).
Поддержка серверов
Перед началом разработки любого серверного приложения на языке JScript для
среды ASP необходимо изучить уровень поддержки языка, доступ к которому полу-
получает разработчик. В табл. 5.5 перечисляются различные версии JScript, поддерживае-
поддерживаемые в серверной части среды IIS.
Версия
2.0
3.0
5.0
6.0
Таблица 5.5. Поддержка серверной части языка JScript
JScript
3.0
4.0
5.0
6.0
Версия IIS Версия ASP
1.0
2.0
3.0
ASP.NET (ранее известная как ASP+)
Область применения языка JScript
Перед подробным рассмотрением области применения серверной части языка
JScript следует рассказать об одной интересной особенности реализации JScript. Ме-
Механизм сценариев JScript в приложениях компании Microsoft может обновляться (в
отличии от других браузеров и сред, поддерживающих основанный на стандарте
ECMAScript язык сценариев). Это означает, что даже используя сервер IIS 4.0 мож-
можно загрузить и установить механизм сценариев JScript 5.6.
Применять язык JScript на самом деле довольно просто. Как упоминалось в гла-
главе 1, в серверной части языка появилось несколько дополнительных объектов, пе-
перечисленных в табл. 5.6, о которых должен знать разработчик. Кроме упомянутых
объектов можно использовать обычные объекты, свойства и методы, к которым уже
привыкли разработчики.
Глава 5. Серверная сторона JavaScript I Ь!Э
Таблица 5.6. Объекты серверной части JScript
Объект Описание
Application Содержит элементы, которые позволяют совместно использовать данные
данного приложения всем его пользователям.
ASPError Содержит элементы, которые позволяют разработчику получать данные об
ошибках, которые могли произойти в ASP-приложении.
ObjectContext Содержит элементы, которые позволяют разработчику фиксировать либо
отменять транзакции, инициируемые сценарием.
Request Содержит элементы, специфические для браузера, выполняющего запрос
сервера IIS.
Response Содержит элементы, специфические для сервера, возвращающего запрос
браузеру пользователя.
Server Содержит элементы, специфические для среды, в которой выполняется
сценарий.
Session Содержит элементы, специфические для сеанса пользователя.
Более подробная информация по перечисленным объектами и их свой-
свойствам, методам, событиям и коллекциям приведена в главе 9.
Проверка среды
Перед тем как приступить к созданию ASP-приложения с использованием JScript,
потребуется выполнить несколько предварительных действий. Эти действия могут незна-
незначительно отличаться от версии к версии IIS, однако их суть остается неизменной.
• Убедитесь в том, что данная установка IIS сконфигурирована для загрузки и
запуска файлов .asp при помощи asp.dll.
• Убедитесь в том, что для начального каталога установлены права доступа
Script (Сценарий) или Execute (Выполнение).
• Убедитесь в том, что язык JScript либо явно установлен как язык Web-страниц,
либо как язык, заданный по умолчанию, в свойствах данного экземпляра IIS.
Несмотря на то что упомянутые моменты кажутся несущественными, невыпол-
невыполнение любого из условий может привести к тому, что сценарии не будут выполнять-
выполняться. По умолчанию все, исключая разве что язык JScript, должно быть установлено
корректно. В целях проверки можно воспользоваться кодом, приведенным в листинге
5.1. Если удастся с помощью IIS запустить этот код на выполнение, а в окне брау-
браузера отобразится сообщение "Работает!", то будут функциональны все примеры ис-
использования ASP, рассмотренные далее в главе.
Листинг 5.1. Код примера, используемого при проверке корректности выполнения
ASP в экземпляре IIS
<html>
<head>
<title>nposepKa использования JScript в ASP</title>
</head>
<body>
<script language="JScript" runat="server">
// Отображение на странице пользователей сообщения "Работает!".
Response.Write("Работает!");
</scriptX/body> </html>
I 66 Часть II. Программирование на JavaScript
Область применения серверной части JavaScript
Теперь, когда были рассмотрены некоторые различия серверной и клиентской
частей JavaScript, а также было рассказано, как создавать приложения в различных
средах, обсудим некоторые области применения серверной части языка JavaScript.В
этом разделе описываются не все возможные области применения, а только неко-
некоторые наиболее характерные из них. В раздел включены примеры реализаций, при-
присущие для обеих возможных сред использования серверной части языка. Благодаря им
пользователь воочию убедится в том, что можно сделать с помощью этого мощно-
мощного языка!
Среда сервера Enterprise Server
Поскольку среды Enterprise Server и IIS отличаются между собой, как и соот-
соответствующие реализации языка JavaScript, сначала рассмотрим примеры использо-
использования JavaScript в среде Enterprise Server. В этом разделе делается упор на следую-
следующих моментах:
• Подключение к базе данных
• Электронная почта
• Работа с файлами.
Подключение к базе данных
Одной из главных особенностей серверной части JavaScript является возможность
подключения к базам данных. Как известно, компания Netscape проторила путь для
использования стандартных технологий (в том числе и в случае с подключением к
базам данных). Эта компания обеспечивает поддержку основных баз данных, таких
как DB2, Informix, Oracle и Sybase и, кроме того, с помощью ODBC (Open DataBase
Connectivity — Открытый интерфейс доступа к базам данных) предоставляет доступ
к другим базам данных, например, к Microsoft SQL Server.
Функциональные возможности серверной части JavaScript, обеспечивающие под-
подключение к базам данных, функционируют за счет использования службы LiveWire,
которая на сегодняшний день уже не устанавливается в качестве отдельного компо-
компонента. Эта служба предоставляет в распоряжение JavaScript объекты, используемые
при подключении к различным базам данных. После установки соединения разработ-
разработчик может запускать операторы SQL с целью выполнения требуемых операций.
IlliflUnbffllUln В версии Enterprise Server компании Netscape служба LiveWire вы-
выступала в роли общего термина для обознечения "серверной части JevaScript". К мо-
моменту появления версии 3 сервера Enterprise Server использовение JavaScript в ка-
качестве стандартного языка возросло. С целью обеспечения определенной
согласованности терминологии, начинея с версии 3 сервера Enterprise Server, термин
LiveWire означал службу, который позволяет разработчикам создавать код для работы
с базами данных.
Подключения к базе данных обрабатываются в пуле (pool). Перед открытием под-
подключения к базе данных, которое позволяет выполнять запросы, необходимо создать
экземпляр объекта DbPool. После этого с помощью упомянутого объекта можно
открывать требуемые подключения. Все параметры, необходимые для открытия под-
подключения, передаются пулу. Допускается создавать пул и без указания параметров.
Однако в этом случае параметры должны передаваться при попытке установки пер-
первого подключения.
Глава 5. Сервернея сторона JaveScript I fc) /
Ниже приводится пример синтаксиса, используемого при создании объекта DbPool.
Все передаваемые параметры описаны в списке, следующем после примера.
var myPool = new DbPool (DBType, DBInstance, UID, PWD, DBName,
MaxConn, CommitFlag);
• DBType - Тип базы данных. Возможные значения: ORACLE, SYBASE,
INFORMIX, DB2 и ODBC.
• DBInstance — Имя экземпляра базы данных. Для ODBC это имя записи DSN.
• UID — Имя пользователя или идентификатор, по которому определяется раз-
разработчик
• PWD — Пароль для подключения.
• DBName - Имя базы данных, в которой будет выполняться регистрация. Для
подключений к базам данных Oracle, DB2 и ODBC в этом случае указывает-
указывается пустая строка (""). В Oracle для подключений подобного типа используется
имя базы данных tnsnames.ora, а для подключений ODBC определяется име-
именем источника данных (Data Source Name, DSN). B DB2 база данных не име-
имеет имени, а ссылки на нее устанавливаются в виде DBInstance.
• MaxConn — Максимальное количество подключений в пуле. Фактически, в
данном случае речь идет о количестве соединений, которые пул может уста-
установить с базой данных.
• CommitFlag — Этот флаг определяет, будет ли выполняться приостановленная
транзакция при разрыве соединения. Если значение флага равно false, выпол-
выполнится откат транзакции. Если значение флага равно true, транзакция будет за-
зафиксирована.
Поскольку допускается создавать экземпляр объекта DbPool с ограниченным на-
набором параметров или вообще без параметров, перед использованием этого объек-
объекта внимательно изучите приведенное в главе 9 описание объекта DbPool.
После создания пула по необходимости можно использовать подключения этого
пула. Для создания подключения используется метод пула, именуемый connectionQ.
Он возвращает доступное соединение. Синтаксис метода connection() имеет следую-
следующий вид:
var myConn = myPool.connection(имя, интервал);
где
• имя — Имя, которое будет использоваться для данного соединения. Посколь-
Поскольку соединение фактически определяется переменной, это имя, как правило,
служит для целей отладки.
• интервал — Числовое значение, соответствующее количеству секунд, которое
отводится на установку соединения.
После установки соединения можно выполнять все операции, требуемые прило-
приложением. Подробные данные по доступным методам можно найти в описании объек-
объектов Connection, Cnrsor и database в главе 9.
Электронная почта
Еще одной особенностью, которую можно использовать в серверных приложени-
приложениях, созданных с помощью JavaScript, является возможность отправки сообщений
электронной почты. Все свойства и методы, необходимые для работы с электрон-
электронной почтой, содержатся в объекте SendMail.
168
Часть II. Программирование на JavaScript
ПОЛЬЗОВАТЕЛЬСКИЕ СЕАНСЫ И ДОСТУП К БАЗАМ ДАННЫХ
Подробное описание работы с пользовательскими сеансами и соединениями с ба-
базами данных во время использования клиентами Web-приложения выходит за рам-
рамки настоящей книги. Однако, существуют определенные моменты, о которых следует
знать при выполнении таких задач.
Необходимо знать, как обребатываются запросы к базе данных. Также требуется
понимать, каким образом данные возвращаются из определенной базы данных и
как следует обрабатывать эти данные.
Кроме того, нужно знать, каким образом управлять подключениями пользователей
к Web-приложениям. В некоторых случаях приложение обрабатывает несколько
пользовательских подключений одновременно. Если сеансы и подключения пересе-
пересекаются, то можно по ошибке передать ошибочные данные не тому пользователю.
Поддержка и управление сеансами пользователей и соединениями с базами данных
может быть предельно важным фектором, поэтому выполнение этих зедеч требует
особого внимения.
ПРИМЕЧАНИЕ
Подробную информацию по объекту SendMail можно нейти в глеве 9,
Использовать объект SendMail достаточно просто. Необходимо установить все
свойства, используемые при повседневной отправке электронных сообщений, и выз-
вызвать метод send() объекта. При возникновении ошибки ее можно проанализировать
с помощью доступных методов обработки ошибок. В листинге 5.2 приведен пример
применения объекта SendMail для создания страницы, с которой пользователи мо-
могут отправлять электронные сообщения. На рис. 5.4 приведен вид страницы на экра-
экране пользователя, а на рис. 5.5 - результаты успешной отправки электронного сооб-
сообщения.
Рисунок 5.4.
Создание страницы
отправки электронного
сообщения
КЦиод the ScndMail obiocl - Netscape 6
To:
From:
Subject:
Body:
ШШ-
Глава 5. Серверная сторона JavaScript I ЬУ
liPHlsmg Itic SendMail obiecl-Nttsc.Tl» В i '
ьъ icr i^ ;-ж h 5„ &?cti^? r-1.* ti-F
Ywiu mc;sage was sent success&illyl
1th 81'MailApp/
->
|-jg|x|
Рисунок 5.5.
Результаты успешной
отправки электронного
сообщения.
Листинг 5.2. Пример применения объекта SendMail
<html>
<head>
<title> Пример применения объекта SendMail</title>
</head>
<body>
<server>
// Определение факта передачи пользователями данных формы
// либо наличия простого запроса формы,
if(request.method == "POST"){
// Соадание объекта SendMail.
var myMail = new SendMail();
// Присваивание свойствам требуемых значений.
myMail.To = request.toAddress;
myMail.From = request.fromAddress;
myMail.Subject = request.subject;
myMail.Body = request.body;
myMail.Smtpserver = "mail.purejavascript.com";
myMail.Errorsto = "errors@purejavascript.com"
// Попытка отсылки электронного сообщения,
if(!myMail.send() ) {
// Если при отправке сообщения произошла ошибка,
// предоставить пользователю адрес,
// по которому он может сообщить о возникшей ошибке,
// а также код ошибки и сообщение об ошибке,
write("При отправке электронной почты возникла ошибка.
Пожалуйста, отправьте электронную почту по
следующему адресу");
write(myMail.Errorsto+"co следующим сообщением об ошибке");
write("Ошибка " + myMail.errorCode() + ": " +
myMail.errorMessage()) ;
} else{
// Если ошибок не было, отобразить пользователю
// сообщение об успешной отправке,
write("Сообщение отправлено успешно!");
}
} else{
//Если данная страница была вызвана, а форма не была
//передана, вывести на страницу форму электронного сообщения.
write('<form name="myForm" method="post">');
write ('<table border="l"Xtr><td> ' ) ;
write('<table border=">');
write('<tr align="left" valign="top">') ;
write ( r<td><b>KoMy:</bX/td>' ) ;
write ('<tdXinput type=" text" name="toAddress" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top"> ' ) ;
write ( '<td><b>OT:</bX/td>' ) ;
write ('<tdxinput type="text" name="fromAddress" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">');
I /U Часть II. Программирование на JavaScript
write('<td><b>TeMa:</bX/td>");
write (' <tdXinput type="text" name="subject" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">');
write ( ' <td><b>Coo6u(eHiie : </b></td>' ) ;
write ( ' <tdXtextarea name="body" ' ) ;
write (' cols=0" rows=0" wrap="soft"X/textarea>') ;
write('</td>');
write('</tr>');
write('<tr align="left" valign="top">');
write('<TD colspan=2 align="right"Xinput type="submit"');
write(' value="OrapaEHTb">');
write('</td>');
write('</tr>');
write('</table>');
write ( '</tdX/tr></table>' ) ;
write('</form>');
}
</server>
</body>
</html>
Как видно из примера, объект SendMail позволяет легко создавать страницы, с
помощью которых пользователи могут отправлять электронные сообщения. В реаль-
реальное полномасштабное Web-приложение разработчику придется включить код для
проверки ошибок. Для этого можно использовать клиентскую часть JavaScript, ко-
которая будет проверять данные на соответствие основным требованиям, например,
соответствие введенных электронных адресов заданным синтаксическим правилам.
Обработка файлов
Объект File позволяет выполнять различные системные задачи, например, чте-
чтения дискового файла и запись в дисковый файл. Объект File имеет множество мето-
методов и свойство prototype, которое позволяет программисту создавать новые свойства
и методы объекта.
ЦцМшЬяаип||dlnl Более подробная информация по объекту File находится в глава 9.
Как и использование объекта SendMail, применение объекта File не связано с
особыми трудностями. Методы объекта позволяют выполнять различные действия над
файлами в рамках файловой системы.
Функциональные возможности объекта File позволяют программисту указывать,
каким образом файл будет открываться. Файл можно открывать для чтения, запи-
записи, добавления или открывать как бинарный. Эти опции задаются в методе ореп(),
который имеет следующий синтаксис:
myFile.open("option");
Более подробная информация по возможным аргументам метода ореп()
приводится в главе 9.
При выполнении приложений иногда возникает необходимость отображения со-
содержимого файла. Такое приложение может быть административной программой,
которое выполняет чтение файла и выводит его содержимое на страницу. В листин-
листинге 5.3 приведен код приложения, которое выводит на экран содержимое выбранно-
выбранного файла системного журнала.
Глава 5. Серверная сторона JavaScript I / I
Листинг 5.3. Пример использования объекта File для отображения содержимого
файла
<html>
<head>
<title> Пример использования объекта File</title>
</head>
<body>
<server>
// Определение того, передают ли пользователи данные формы или
// просто запрашивают форму.
if(request.method == "POST"){
// Создание экземпляра объекта File и передача ему файла,
// который пользователь выбрал для чтения,
var myLog = new File(request.file);
// Попытка открытия файла,
if(!myLog.open("r") ) {
// Если при открытии файла возникла ошибка,
// сообщить об зтом пользователю,
write("При открытии файла " + request.file +
" возникла ошибка.");
} else{
// Если ошибок не было, открыть файл и отобразить
// его содержимое.
write('<ЬЗ>Файл '+request.file + ' содержит следующее:</ЬЗ>);
while(!myLog.eof ()){
write(myLog.readln());
}
}
} else{
// Если была запрошена форма, вывести на странице окно
// выбора файла, в котором пользователь
// определяет интересующий его файл.
write('<form name="myForm" method="post">');
write('<select name="file">');
write('<option value="/logs/admin.log">
Журнал aflMHHHCTpaTopa</option>');
write('<option value="/logs/user.log">
Журнал пользователя</ориоп>') ;
write('<option value="/logs/error.log">
Журнал onm6oK</option>');
write('</select>');
write('<input type="submit"
уа1ие="Просмотр содержимого файла">');
write('</form>');
}
</server>
</body>
</html>
В приведенном примере пользователь имеет возможность выбрать для просмотра
интересующий его файл. После выдачи запроса приведенное приложение пытается
открыть файл для чтения. При неудачной попытке пользователь получит соответству-
соответствующее сообщение, в котором содержится имя файла. Если файл открыт без ошибок,
его содержимое выводится на экран.
Среда IIS
При рассмотрении среды I IS очень важно продемонстрировать отличие синтак-
синтаксиса языка от реализации Enterprise Server. В этом разделе будут приведены приме-
примеры использования JavaScript в следующих областях:
\ / С. Часть II. Программирование на JavaScript
• Передача данных форм
• Работа с сеансами.
Передача данных форм
Одной из отличительных особенностей реализации серверной части языка
JavaScript в средах Enterprise и I IS — это простота обработки данных форм. Вереде
IIS обработка данных форм осуществляется за счет использования объекта Request
со всеми его свойствами, методами и коллекциями, которые подробно рассматри-
рассматриваются в главе 9.
Для того чтобы задействовать объект Request, необходимо создать форму, кото-
которая будет передавать некоторые данные. Ради простоты рассмотрим пример, когда
форма запрашивает имя и фамилию пользователя. HTML-код этой страницы находит-
находится в листинге 5.4.
Листинг 5.4. Код HTML формы.
<html>
<head>
<title>IIpHMep ASP^opMbi</title>
</head>
<body>
<form action="process.asp" method="post">
HMa:<input name=" first" width=0"Xbr>
Фамилия: <input name="last" width=0"Xbr>
<input type="submit" уа1ие="Передать данные">
</form>
</body>
</html>
После образования формы следует создать файл process.asp, который будет обра-
обрабатывать переданные формой данные. В этом файле для вывода на экран переданных
формой данных будет использоваться метод Write() объекта Response. Как уже упо-
упоминалось, в языке JScript предусмотрены несколько объектов обработки данных,
характерных для реализации IIS. Один из этих объектов — объект Response, который
подробно рассматривается в главе 9.
В данном примере будет применяться коллекция Request.Form, которая исполь-
использует в качестве аргумента имя элемента формы, доступ к которому необходимо по-
получить. В нашем случае это first и last. Соответствующий код показан в листинге 5.5.
Листинг 5.5. Код ASP, использующий для обработки данных формы язык JScript
<html>
<head>
<title>ripHMep ASP-формы: Результаты</1;±1:1е>
</head>
<body>
<script language="JScript" runat="server">
// Отображение имени и фамилии, введенных в поля формы.
Response.Write("Вы ввели: ");
Response.Write(Request.Form("first") + " " + Request.Form("last"));
</script>
</body>
</html>
Глава 5. Серверная сторона JavaScript 1 73
Переменные сервера
Еще один пример использования ASP - обеспечение доступа к различным пере-
переменным сервера. Например, во многих случаях Web-разработчику требуется определить
тип браузера, который выполняет определенный запрос. Это может быть необходи-
необходимо для перенаправления агента пользователя на другой Web-сайт или для вывода на
экран предупреждения.
В листинге 5.6 для доступа к переменной HTTP_USER_AGENT применяется кол-
коллекция Request.ServerVariables. После определения значения переменной с целью
выяснения факта применения браузера Internet Explorer используется метод indexOf().
После этого на экран выводится сообщение о типе используемого браузера с ука-
указанием полной строки агента пользователя.
Листинг 5.6. Пример использования коллекции Request.ServerVariables
<html>
<head>
<title>npKMep ASP-формы: Реэультаты</1:±1:1е>
</head>
<body>
<script language="JScript" runat="server">
// Присваивание строки агента пользователя в переменной.
var ua = new String(Request.ServerVariables("HTTP_USER_AGENT") );
// Проверка того, имеем ли мы в данном случае
// браузер Internet Explorer,
if(ua.indexOf("MSIE") != -1){
Response.Write("Добро пожаловать!<br />");
Response.Write("Агент пользователя: ");
Response.Write(Request.ServerVariables("HTTP_USER_AGENT"));
// Браузер не IE, поэтому выполнить какое-либо другое действие.
} else{
Response.Write("Вы используете не Internet Explorer<br />");
Response.Write("Агент пользователя: " +
Request.ServerVariables("HTTP_USER_AGENT"));
}
</script>
</body>
</html>
Резюме
В предшествующих главах книги рассматривались примеры применения языка
JavaScript как в клиентской, так и в серверной частях. Для многих читателей этим
и ограничивается область применения JavaScript. Тем не менее, в главе 6 будет опи-
описана еще одна среда, в которой прочно обосновался язык JavaScript (точнее
JScript) — среда Windows Script Host.
Глава 6
Написание сценариев
Windows
Общеизвестным является тот факт, что к разряду недостатков операционной си-
системы Windows можно отнести отсутствие поддержки сценариев для автомати-
автоматизированного выполнения задач. Большинство других операционных систем обладают
определенным типом встроенного механизма создания сценариев. Даже в MS-DOS су-
существовала поддержка командных файлов. Правда, эти файлы обеспечивали достаточ-
достаточно ограниченные возможности и в среде Windows были практически бесполезными,
Компания Microsoft приняла к сведению это ограничение и в Internet Explorer
3.0 ввела спецификацию Windows Script, которая предоставляла разработчикам ин-
интерфейс, используемый при создании сценарных механизмов для различных браузе-
браузеров. Спецификация Windows Script Interfaces эволюционировала в то, что на сегод-
сегодняшний день известно как среда Windows Script Host.
Среда Windows Script Host
Среда Windows Script Host (WSH) позволяет автоматизировать выполнение задач
в среде Windows. Аналогом WSH в операционной системе MS-DOS были командные
файлы. Однако, возможности командных файлов были невелики и малоэффективны
для Windows. При работе в среде Windows требовался язык сценариев, и среда WSH
обеспечила приемлемое решение. Предположим, что разработчику необходимо оп-
определить имя компьютера, поместить ярлык на рабочий стол и подключить сетевой
диск, не выполняя каждую операцию по отдельности. В среде Windows Script Host
все эти операции можно выполнить с помощью единственного сценария.
Среда WSH может использоваться совместно с несколькими языками програм-
программирования. В операционных системах Windows 98 и NT/2000 по умолчанию в каче-
качестве языков сценариев используются языки VBScript и JScript. Эта книга посвяще-
посвящена языку JScript, и именно он будет использоваться во всех приводимых примерах.
В настоящее время появилась версия 5.6 среды WSH. Несмотря на то что в дан-
данном случае речь идет о бета-версии, ее можно выгрузить из официального Web-сайта
компании Microsoft. Преимущества данной версии по сравнению с предыдущими вер-
версиями заключаются в улучшенной обработке аргументов, возможности использова-
использования удаленных сценариев, в обработке процессов как объектов, в обеспечении до-
доступа к текущему рабочему каталогу и в улучшенной модели безопасности.
Глава В. Написание сценариев Windows
175
Среда Windows Script Host функционирует следующим образом: разработчик со-
создает сценарий, который использует различные методы и свойства объектов WSH,
затем сохраняет его в файл с расширением .wsf. Такое расширение указывает на то,
что данный файл является файлом среды Windows Script Host. Рассмотрим простой
пример WSH-файла. В листинге 6.1. приведен код WSH-файла, выводящего на экран
имя пользователя локального компьютера, на котором выполняется данный сцена-
сценарий.
Листинг 6.1. Пример WSH-файла
<job>
<script language="JScript">
var WshNetwork = WScript.CreateObject("Wscript.Network") ;
WScript.Echo("Имя пользователя: " + WshNetwork.UserName);
</script>
</jot»
Синтаксис WSH-сценария предельно прост. Код заключается между начальным и
конечным дескрипторами <job><script>, что напоминает обычную программу на
языке JScript или JavaScript. Рассматриваемый сценарий можно запустить нескольки-
несколькими способами. Эти способы описываются далее в главе.
Архитектура
Архитектура среды Windows Script Host является достаточно общей. Имеется все-
всего несколько компонентов, которые совместно используются для создания полно-
полноценного WSH-сценария. Среди них сам сценарий, оболочка Windows, системный
реестр Windows и механизм WSH. Схема взаимодействия компонентов среды Windows
Script Host при обработке сценария показана на рис. 6.1.
Как видно из рисунка, первой обработку сценария начинает оболочка Windows.
Оболочка должна определять тип файла. Это делается путем поиска ассоциации файла
в системном реестре Windows. После получения необходимой информации оболоч-
оболочка передает файл механизму Windows Script Host, который для определения того,
какому механизму (JavaScript, Visual Basic Script или Perl) отправить сценарий на
обработку, вызывает метод IActiveScriptParse::ParseScriptText.
3. Определение подходящего
сценарного механизма из
IActiveScriptParse::ParseScriptText
1. Выполнение
сценария /^болочкаЛ^/Механизм\4: Выполнение сценария
2. Выборка ассоциации
файла для WSH
Системный
реестр
Рисунок 6.1. Архитектура среды WSH
176
Часть II. Программирование на JavaScript
WScript
WshArguments
WshNamed
-Wshllnamed
WshController
WshRemote
- WshRemoteError
- WshNetwork
WshShell
Объектная модель
Среда WSH основана на иерархии объектной
модели, которая включает 14 объектов. Каждый
объект порожден от объекта WScript (корневого
объекта). Объектная модель WSH показана на рис.
6.2.
Не для каждого объекта можно напрямую со-
создавать экземпляры. Объект Wscript доступен в каж-
каждом сценарии, и его экземпляры не должны созда-
создаваться явно. Можно создавать экземпляры объектов
WshController, WshNetwork и WshShell. Для создания
этих объектов используется метод CreateObject. Все
остальные дочерние объекты создаются косвенно с
помощью объектов высшего уровня. Кроме того, в
объектной модели WSH присутствуют несколько
СОМ-объектов.
Преимущества и ограничения
Среда WSH обладает как преимуществами, так
и ограничениями. За счет использования языков
JScript и VBScript среда WSH предоставляет доступ
к ресурсам компьютера и операционной системы
Windows. Можно напрямую работать с системным
реестром Windows, устанавливать принтеры, задан-
заданные по умолчанию, запускать удаленные сценарии
и т.п. Среда WSH представляет собой среду написания сценариев, которая исполь-
использует небольшой объем памяти и хорошо работает со сценариями, не требующими
тесного взаимодействия с пользователями. Благодаря этому среда WSH является иде-
идеальным инструментом для создания сценариев регистрации в системе и процессов
пакетной обработки.
Однако помимо преимуществ существуют и недостатки. Возможность непосред-
непосредственного доступа сценария к ресурсам компьютера может представлять большую
опасность. Если разработчик решит воспользоваться злонамеренным сценарием, он
может причинить немалый вред. Поэтому иногда пользователи отключают WSH.
Кроме того, в WSH имеются определенные ограничения. Выбор графических ком-
компонентов невелик. Нет возможности создавать специальные диалоговые окна. Для со-
создания более эффектного пользовательского интерфейса постребуется прибегнуть к
средствам языка написания сценариев.
—WstiShortCut
—WshllrlShortCut
—WshEnvironment
—WshSpecialFolderS
—WshScriptExec
Рисунок 6.5.
Иерархия объектов WSH
Компоненты Windows Script Host
В состав объектной модели Windows Script Host включен целый ряд различных
компонентов. Некоторые их этих компонентов и их возможности рассматриваются в
текущем разделе.
Объекты
В объектную модель Windows Script Host входит множество различных компонен-
компонентов. У каждого объекта имеются свои методы и свойства. Основными объектами, от
которых порождаются все остальные объекты, являются: WScript, WshController,
WshNetwork и WshShell.
Глава В. Написание сценариев Windows
177
Три наиболее часто используемых объекта, которые будут описываться в этом
разделе - это WScript, WshShell и WshNetwork. Они воплощают в себе большую часть
всех доступных функциональных возможностей среды Windows Script Host. Рассмот-
Рассмотрим более детально каждый из этих объектов.
Объект WScript
Объект WScript представляет собой корневой объект, от которого образуются все
остальные объекты. Создавать экземпляры этого объекта нет необходимости, посколь-
поскольку он доступен в любом файле сценария. Его можно использовать для выполнения
различных задач. Объект WScript может применяться в качестве информационного объек-
объекта для определения имен файлов сценариев, аргументов командной строки и данных
о хосте. Кроме того, он может использоваться для создания объектов, подключения к
этим объектам и отключения от них, обработки событий, останова выполнения сце-
сценария и вывода данных. Простейшая форма использования объекта WScript с помощью
метода Echo для отображения имени пользователя показана в листинге 6.1.
Как упоминалось ранее, с помощью метода CreateObject объект WScript может
создать дочерний объект любого типа. Предположим, что необходимо создать новый
объект WshShell. Для этого применяется следующая строка кода:
WshShellObj = WScript.CreateObject("WScript.Shell");
Теперь читатели могут отметить про себя: "Это все замечательно, но что можно сде-
сделать с новым объектом WshShell?" Продолжайте читать, и скоро вы все узнаете (под-
(подробное описание методов и свойств объекта WScript приводится в главе 15).
Объект WshShell
Объект WshShell является весьма полезным. Он используется для работы с сис-
системным реестром Windows, создания ярлыков, запуска новых процессов оболочки
и чтения системной информации. Он предоставляет в распоряжение программы раз-
разработчика коллекцию ENVIRONMENT, которая позволяет получить доступ и рабо-
работать с переменными окружения (подробное описание методов и свойств объекта
WshShell приведено в главе 15).
А теперь рассмотрим простой пример, который иллюстрируется листингом 6.2.
Здесь на рабочем столе создается ярлык Web-сайта Amazon.com. Для создания объекта
WshShell с именем WshShellObj используется метод CreateObject корневого объекта
WScript. После этого требуется указать, что ярлык должен быть помещен на рабо-
рабочий стол. Для этого применяется метод SpecialFolders с параметром "Desktop". Затем
вызывается метод CreateShortcut, которому передается путь ярлыка. И, наконец,
указывается путь к объекту ярлыка, после чего выполняется сохранение ярлыка.
Листинг 6.2. Пример создания ярлыка с помощью объекта WshShell
<job>
<script language="JScript">
// Создание объекта WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// В качества каталога указать рабочий стол.
myDesktop = WshShellObj.SpecialFolders("Desktop");
// Создание ярлыка на Web-сайт Amazon.com.
var urlShortcut = WshShellObj.CreateShortcut(myDesktop
+ "WAmazon.url") ;
urlShortcut.TargetPath = "http://www.amazon.com";
urlShortcut.Save();
</script>
</job>
1/8 Часть II. Программирование на JaveScript
Объект WshNetwork
Объект WshNetwork применяется для решения целого ряда задач, связанных с
сетью. Этот объект позволяет подключать новые принтеры, определять имя компь-
компьютера, подключать сетевые диски, устанавливать принтеры, которые будет исполь-
использоваться по умолчанию, определять домены пользователей и т.п. Такие типы задач
могут стоять перед администратором сети (подроиное описание методов и свойств
объекта WshNetwork приводится в главе 15).
Рассмотрим пример. Предположим, что в сети появился новый сетевой принтер,
и администратор сети желает упростить процесс установки нового сетевого принте-
принтера на компьютерах пользователей. Для этого администратор создает WSH-сценарий
установки нового принтера, который могут использовать все пользователи. Код ус-
установки нового принтера на компьютер пользователя показан в листинге 6.3.
Листинг 6.3. Устаноака сетевого принтера с помощью объекта WshNetwork.
<job>
<script language="JScript">
// Создание объекта Arguments.
WshArgObj = WScript.Arguments ;
// Считывание имени пользователя и пароля,
var userName = WshArgObj.Item@);
var passwd = WshArgObj.ItemA);
// Создание нового объекта Network и установка нового принтера.
var WshNetwork = new CreateObject("Wscript.Network");
var printer = "\\printers\NewPrinter";
var localName = "myNewPrinter" ;
WshNetwork.AddPrinterConnection(localName, printer, userName, passwd);
</script>
</job>
Поскольку для данного конкретного сценария требуется ввод данных пользова-
пользователем, рекомендуется запускать сценарий из командной строки с помощью метода
cscript.exe (подробная информация по различиям cscript.exe и wscript.exe находится
в разделе "Методы запуска сценариев"). В качестве аргументов пользователь должен
будет ввести имя и пароль. Таким образом, если файл сценария назван
"addPrinter.wsf", командная строка запуска сценария на выполнение в MS-DOS
Windows будет выглядеть следующим образом:
cscript addPrinter.wsf Betty passl23
Методы запуска сценариев
Для запуска WSH-сценария необходимо, чтобы в операционной системе был ус-
установлен механизм Windows Scripting Engine. Он входит в состав операционных си-
систем Windows 98 и NT/2000. Для пользователей Windows 95 WSH можно выгрузить
из Web-сайта компании Microsoft, после чего установить на требуемых компьюте-
компьютерах. Подробную информацию можно найти на Web-сайте по адресу http://
msdn.microsoft.com/scripting.
После установки среды WSH сценарии можно запускать двумя различными спо-
способами: из Windows и из DOS (из командной строки). Способ запуска сценария за-
зависит от его назначения. Если сценарий предполагает взаимодействие с пользовате-
пользователем и использует графические компоненты, лучше отдать предпочтение запуску из
Глава 6. Написание сценариев Windows
179
среды Windows (wscript.exe). Если сценарий предназначен для выполнения операций,
которые можно выполнить только в MS-DOS, или не требует взаимодействия с
пользователем, следует осуществить запуск сценария из командной строки
(cscript.exe). Оба метода можно запускать из командной строки с указанием опреде-
определенных опций. Опции командной строки перечислены в табл. 6.1.
Таблица 6.1. Опции методов wscript.exe и cscript.exe
Тип
//в
//D
//E:engine
//Hxscript
//H:wscript
//I
//Job:<joblD>
//logo
//nologo
//s
//T.nn
//u
//x
Описание
Устанавливает пакетный режим. Подавляет приглашения на ввод данных
пользователем и отображение ошибок сценария.
Включает отладчик.
Запускает сценарий с указанным механизмом сценариев.
По умолчанию использует метод cscript.exe.
По умолчанию использует метод wscript.exe.
Устанавливает интерактивный режим. Отображает приглашения на ввод
данных пользователем и ошибки сценария.
Запускает указанный сценарий jobID из файла .wsf.
Отображает заставку запуска.
Запрещает отображение заставки запуска.
Сохраняет текущие опции командной строки.
Устанавливает максимальное время в секундах, на протяжении которого
может выполняться сценарий.
Недоступен для wscript.exe.
Запускает сценарий в отладчике.
Справка. Выводит на экран информацию о параметрах командной строки.
Для запуска сценария в командной строке используется следующий синтаксис:
wscript <filename>
cscript <filename>
[//options]
[//options]
[arguments]
[arguments]
Аргументы должны разделяться пробелом. Кроме этого, для аргументов WSH
поддерживается технология перетаскивания (drag-and-drop). Можно перетащить файл
в WSH-файл и при условии, что сценарий предназначен для синтаксического ана-
анализа аргументов, имя такого файла будет считаться аргументом.
Windows-сценарии
WSH-сценарии, предназначенные для операционной системы Windows, позволяют
использовать ограниченные графические возможности среды WSH. Эти возможнос-
возможности особенно эффективны, когда сценарий требует визуального взаимодействия с
пользователем. Следует иметь в виду, что WSH не имеет сложных диалоговых окон,
а графические компоненты ограничены инструментами, доступными в VBScript или
JScript, и всплывающими диалоговыми окнами.
Существуют три метода запуска Windows-сценариев. Самый простой — отыскать
файл сценария в окне Windows Explorer (Проводник), а затем выполнить двойной
180
Часть II. Программирование на JavaScript
щелчок с целью его запуска. Второй метод - воспользоваться пунктом Run (Выпол-
(Выполнить) в меню Start (Пуск). В появившемся диалоговом окне потребуется выбрать
WSH-файл и щелкнуть на кнопке ОК. Этот способ проиллюстрирован на рис. 6.3.
Третий способ - запуск сценария в командной строке через wscript.exe.
Все методы идентичны, и выбор одного из перечисленных методов зависит от
личных предпочтений каждого пользователя. Рассмотрим пример, приведенный в
листинге 6.4.
Листинг 6.4. Сценарий "Здравствуй, мир!"
< job>
<script
language="JS cript">
// Отображение текста "Здравствуй, мир!"
WScript.Echo("Здравствуй, мир!");
</script>
Если запустить приведенный сценарий как сценарий для Windows, в результате
его выполнения на экран будет выведено всплывающее диалоговое окно, показан-
показанное на рис. 6.4.
Сценарии, запускаемые из командной строки
WSH-сценарии можно запускать из командной строки. Такой запуск выполняет-
выполняется в среде DOS с помощью выполняемого файла cscript.exe. Например, если необ-
необходимо запустить сценарий "hellp.wsf", применяется следующая командная строка:
cscript hello.wsf
В приведенном примере предполагается, что сценарий запускается из каталога, в
котором он находится. В противном случае потребуется указать путь к файлу сцена-
сценария. В командной строке после имени сценария можно указывать передаваемые сце-
сценарию аргументы или опции. Так, например, если необходимо запустить сценарий в
интерактивном режиме и в качестве аргумента передать строку, командная строка
будет выглядеть следующим образом:
cscript hello.wsf //I /argl
Сценарии, запускаемые из командной строки, как и Windows-сценарии, могут
отображать результаты своей работы на экране. Однако, в отличие от всплывающих
диалоговых окон Windows, сценарии, запускаемые из командной строки, ограничены
окном DOS, в котором они выполняются. Это один из недостатков подобных сце-
сценариев — отсутствие графических компонентов.
l-Г"
"f
Г" "—
i
' .'.'-iAV'
1 i
Г-
"' ""ЧЩЩ!'-! ?*|"х|
1. i ' i г lr.'eit<el
Рисунок 6.З. Запуск сценария с помощью
пункта Run из меню Start
[Windows Script Hast I:, ВI
В
illll
НИИ
Bj^BiHJi
Ш1111^Ш1^И11
Рисунок 6.4. Всплывающее
диалоговое окно WSH
Глава Б. Написание сценариев Windows
181
Рисунок 6.5.
Пример выполнения сценария,
запускаемого с помощью
командной строки
На рис. 6.5 показан пример известной программы "Здравствуй, мир!", которая
выводит на экран соответствующее сообщение.
Удаленные сценарии
В последней версии WSH (версия 5.6) появилась возможность удаленно выполнять
сценарии. Это позволяет дистанционно управлять различными задачами автоматиза-
автоматизации на сетевых компьютерах. Такие задачи можно запускать одновременно. Существует
возможность удаленно запускгжь, останавливать и определять состояние WSH-сце-
нариев. При возникновении ошибки с помощью объекта WshRemoteErrpr можно
получить символ, номер строки, описание ошибки и исходный код ошибки.
При запуске удаленного сценария локальный компьютер предварительно копирует
сценарий на соответствующий удаленный компьютер. Однако для того, чтобы сценарий
можно было запустить на удаленном компьютере, на нем потребуется настроить сис-
систему безопасности. Для того чтобы разрешить выполнение удаленных сценариев, необ-
необходимо выполнить три простых шага. Первый шаг — установить компонент WSH вер-
версии 5.6 (если он еще не установлен). Второй шаг — добавить локальный компьютер в
локальную группу администрирования удаленного компьютера. И третий шаг — с помо-
помощью выполняемого файла Poledit.exe разрешить использование удаленного компонен-
компонента WSH. После этого компьютер будет готов для выполнения удаленных сценариев.
Удаленные сценарии обладают одним ограничением. Они могут выполняться толь-
только в среде Windows 2000/NT. В операционных системах Windows 9x удаленные сцена-
сценарии не поддерживаются. Это вызвано тем, что система не может опознать пользо-
пользователей, которые находятся вне домена NT.
Методы применения удаленных сценариев
Так как же использовать удаленные сценарии? В среде WSH имеется объект
WshRemote и целый ряд свойств и методов для управления выполнением удаленных
сценариев. Объект WshRemote создается с помощью объекта WshController. Сначала
необходимо с помощью метода CreateObject создать экземпляр объекта WshControUer.
После этого для задания удаленного сценария можно использовать метод CreateScript.
Этот метод возвращает объект WshRemote, метод execute() которого может исполь-
использоваться для удаленного запуска сценария.
Как и большинство компьютерных программ, не все сценарии будут выполняться
без ошибок. Тем не менее, в данном случае особых проблем не возникает. Объект-
Объектная модель WSH включает объект WshRemoteError, который может использовать-
использоваться для получения различных данных об ошибках. Экземпляры этого объекта не мо-
1 ОС Часть II. Программирование на JavaScript
гут создаваться напрямую. Объект WshRemoteError доступен как дочерний объект
объекта WshRemote.
Пример удаленного сценария
Рассмотрим пример удаленного сценария. В листинге 6.5 показан пример запуска
сценария maintenance.wsf на удаленном компьютере "Ыие2". Сначала создается объект-
контроллер - объект WshCtrlObj. Затем с помощью метода CreateScript создается
экземпляр объекта WshRemote. В качестве параметров передаются путь к запускаемому
сценарию и имя компьютера. Устанавливается перехват определенных событий, после
чего происходит запуск сценария. Для целей проверки работы на экран выводится
состояние сценария. Текущий сценарий будет ожидать завершения выполнения уда-
удаленного сценария. В случае возникновении ошибки для ее отображения применяет-
применяется функция remote_error.
Листинг 6.5. Пример удаленного сценария.
<job>
<script language="JScript">
// Создание объекта WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создание объекта WshRemote.
remoteScript = WshCtrlObj.CreateScript(
"c:\remote_tasks\maintenance.wsf", "blue2");
// Перехват события.
WScript.ConnectObject(RemoteScript, "RemoteScript_");
// Запуск сценария.
remoteScript.Execute();
// Отображение текущего статуса.
WScript.Echo("Текущий статус удаленного сценария:
+ remoteScript.Status);
while (remoteScript.Status !=2) {
WScript.SleepA00) ;
}
// Перехват ошибок,
function remote_Error(){
var myError = remoteScript.Error;
var errorString = "При выполнении уделенного сценария
произошла ошибка\п";
errorString += Удаленная ошибка: " + myError.Description + "\п";
errorString += "произошла в строке: " + myError.Line + "\n";
errorString += " , сиивол: " + myError. Character + "\n";
errorString += "Источник ошибки : " + myError.Source +"\n";
WScript.Echo(errorString);
}
</script>
Резюме
В главе были описаны различные аспекты среды Windows Script Host. Подробно
рассматривались объектная модель среды и ее отдельные объекты. Были описаны два
метода запуска WSH-сценариев, а также удаленный запуск сценариев. Несмотря на
то что среда WSH 5.6 все еще существует в виде бета-версии, с ее помощью мож-
можно выполнить большой объем задач. Это позволяет надеяться, что в будущих версиях
возможности WSH будут постоянно расширяться.
Часть III
Справочник по
JavaScript
В этой части
7. Ядро JavaScript
8. Клиентская сторона
9. Серверная сторона
Главы на CD-ROM
10. Ядро D0M
11. DOM HTML
12. События D0M
13. D0MCSS
14. Библиотека времени выполнения
JScript RunTime
15. Механизм Windows Script Host
Глава 7
Ядро JavaScript
Настоящая глава содержит подробное описание всех основных составляющих язы-
языков JavaScript и JScript, а также информацию по стандарту ЕСМА-262, 3-я ре-
редакция (ECMAScript). Поскольку определенные детали языков JavaScript, JScript и
ECMAScript несколько отличаются, то для каждого из этих языков отличаются и
определения ядра. Вследствие указанных отличий между стандартами, в настоящей
главе рассмотрены компоненты, которые образуют ядро в одном стандарте, но
могут вообще не определяться в других стандартах. Обсуждаются все нюансы языков,
что позволит найти ответы на все интересующие вопросы, не просматривая другие
источники. Для каждого компонента указаны версия, среда, в которой данный ком-
компонент поддерживается, синтаксис, описание и пример использования, а также масса
другой полезной информации.
Компоненты в настоящей главе приводятся в алфавитном порядке, в соответ-
соответствии с наименованиям объектов, что позволяет быстро отыскать требуемые сведе-
сведения относительно основных частей языка. Методы, свойства, функции и обработчи-
обработчики событий объектов указываются в алфавитном порядке после соответствующего
родительского объекта с использованием точечной нотации, что упрощает изучение
языка. Например, функция sin() объекта Math записывается в виде Math.sin().
@_alpha JScripts.o-t-
@_alpha
# Переменная @_alpha используется при условной компиляции в JScript с целью установки
факта наличия процессора DEC Alpha. Если значение переменной не равно true, она ведет
себя как NaN, Несмотря на то что фактически ее значение не определено.
Программа, приведенная в листинге 7.1, информирует пользователя об установленном
процессора DEC Alpha.
Листинг 7.1. Обнаружение процессора DEC Alpha
<script type="text/jscript" language="JScript">
<! --
@if (@_alpha)
alert("Вы используете процессор DEC Alpha.");
Seise
alert("Bbi HE используете процессор DEC Alpha.");
Send
// "->
</script>
Глава 7. Ядро JavaScript I OU
@JSCript JScript3.O+
@_jscript
f Переменная @ jscript используется при условной компиляции языка JScript для опре-
определения того, применяется ли язык JScript.Значение этой переменной будет всегда true.
ь/% Программа, приведенная в листинге 7.2, выводит на экран окно предупреждения, ос-
Р~ нованное на значении переменной @_jscript.
Листинг 7.2. Обнаружение языка JScript
<script type="text/jscript" language="JScript">
<! --
@if (@_jscript)
alert("Значение переменной @ jscript будет true.");
Seise
alert("Значение переменной @_jscript будет НЕ true.");
@end
// —>
</script>
@Jscript_build JScriPt|.o+
@_jscript_build
Переменная @_jscript_build используется при условной компиляции языка JScript для
хранения номера подверсии механизма создания сценариев JScript.
ПРЕДУПРЕЖДЕНИЕ
Перед получением доступа к переменной @_jscript_build для
ее определения воспользуйтесь оперетором @сс_оп. Более подробная информеция по
оператору @сс_оп приведене ниже в данной главе.
В листинге 7.3 переменная @_jscript_biiild используется для вывода номера подверсии
механизма создвния сценариев JScript.
Листинг 7.3. Выборка номера подверсии JScript
<script type="text/jscript" language="JScript">
<! --
//Установка условной компиляции с целью определения
//переменной @_jscript_build.
@сс_оп
//Используя переменную @_jscript__build,
//вывести номер подверсии JScript.
document.write("Номер подверсии механизма создания
^сценариев JScript",@ jscript build);
// — >
</script>
@Jscript_version JScripJE3'S+
@_jscript_version
\ Переменная @jscript_version используется при условной компиляции языка JScri pt для
хранения номера версии JScript в формате major.minor.
ПРЕДУПРЕЖДЕНИЕ
Перед получением доступа к переменной @_jscript_uersion для
ее определения воспользуйтесь оперетором @сс_оп.
у л В листинге 7.4 переменная @ jscript_version используется для вывода номера версии
JScript.
! оЬ Часть III. Справочник по JavaScript
Листинг 7.4. Определение версии JScript
<script type="text/jscript" languages"JScript">
<!--
//Установка условной компиляции с целью определения
//переменной @_jscript_build.
@сс_оп
//Используя переменную @_jscript_version,вывести номер версии JScript
document.write("Версия JScript",@_jscript_version);
// -->
</script>
@_mac JScriPt3.o+
@_mac
Переменная @_mac используется при условной компиляции языка JScript для опреде-
определения того, является ли система Apple Macintosh. Если значение переменной отлично от
true, она ведет себя так, как будто имеет значение NaN, Несмотря на то что фактически
ее значение не определено.
Код листинга 7.5 информирует пользователя о присутствии системы Apple Macintosh.
Листинг 7.5. Обнаружение системы Apple Macintosh
<script type="text/jscript" language="JScript">
<! --
@if (@_mac)
alert("Bbi используете систему Apple Macintosh.");
Seise
alert("Bbi HE используете систему Apple Macintosh.");
@end
// -->
</script>
@_mc680x0
йз| Переменная @_mc680x0 используется при условной компиляции языка JScript для оп-
"> ределения того, установлен ли процессор Motorola 680x0. Если значение переменной не
true, она ведет себя как NaN, Несмотря на то что фактически ее значение не опреде-
определено.
Код листинга 7.6 информирует пользователя об установлешюм процессоре Motorola 680x0.
Листинг 7.6. Обнаружение процессора Motorola 680x0
<script type="text/jscript" language="JScript">
@if (S_mc680x0)
alertC'Bbi используете процессор Motorola 680x0.");
Seise
alert("Bbi HE используете процессор Motorola 680x0.");
@end
</script>
@ PowerPC 1C . Iе «+
@_PowerPC
# Переменная @_PowerPC используется при условной компиляции языка JScript для оп-
определения того, установлен ли процессор Motorola PowerPC. Если значение переменной
не true, она ведет себя как NaN, Несмотря на то что фактически ее значение не опре-
определено.
Код листинга 7.7 информирует пользователя об установленном процессоре Motorola
PowerPC.
Глава 7. Ядро JavaScript I О /
Листинг 7.7. Обнаружение процессора Motorola PowerPC
<script type="text/jscript" languages"JScript">
8if (@_PowerpC) ,
alert("Вы используете процессор Motorola PowerPC.");
Seise
alert ("Вы НЕ используете процессор Motorola PowerPC") ;
8end
// —>
</script>
@ \ w .. . ,, .
- JScnpt3.C.
@_winl6
[Переменная @_winl6 используется при условной компиляции языка JScript для опре-
определения того, применяется ли система win 16. Если значение переменной отлично от true,
она ведет себя как NaN, Несмотря на то что фактически ее значение не определено.
Код листинга 7.8 информирует пользователя о применении системы winl6.
Листинг 7.8. Обнаружение системы win.16
<script type="text/jscript" languages"JScript">
@if (@_winl6)
alert("Bbi используете 16-разрядную систему Windows.");
@else
alert("Bbi HE используете 16-разрядную систему Windows.");
Send
</script>
@ Win32 JScriPt3.o+
IE 4+
@_win32
^Переменная @_win32 используется при условной компиляции языка JScript для опре-
определения того, применяется ли система Win32. Если значение переменной отлично от true,
она ведет себя как NaN, Несмотря на то что фактически ее значение не определено.
Код из листинга 7.9 информирует пользователя об применении системы Win32.
Листинг 7.9. Обнаружение системы Win32
<script type="text/jscript" language*1"JScript">
@if (@_win32)
alert("Вы используете 32-разрядную систему Windows.");
Seise
alert("Вы НЕ используете 32-разрядную систему Windows.");
@end
</script>
_____ JScript3.0+
Переменная @_х86 используется при условной компиляции языка JScript для опреде-
определения того, установлен ли процессор Intel. Если значение переменной отлично от true,
она ведет себя как NaN, Несмотря на то что фактически ее значение не определено.
Код листинга 7.10 информирует пользователя об установленном процессоре Intel.
Листинг 7.10. Обнаружение процессора Intel
<script type="text/jscript" language*1"JScript">
! аи Часть III. Справочник по JavaScript
gif (@_x86)
alert("Вы используете процессор Intel.");
Seise
alert("Bbi HE используете процессор Intel.");
Send
// — >
</script>
@ccon JScript3.0+
@cc_on
t Оператор @сс_оп используется для инициализации условной компиляции в механизме
создания сценариев.
Влистинге 7.11 показано, каким образом в коде JScript можно использовать оператор
@сс_оп с целью определения версии языка JScript.
Листинг 7.11. Инициализация условной компиляции
<script type="text/jscript" language="JScript">
<! --
//Установка условной компиляции с целью определения
//переменной @_jscript_build.
@сс_оп
//Используя переменную @_jscript_version,вывести номер версии JScript
document.write("Версия JScript ",@_jscript version).
// -->
</script>
__ JScript3.0+
@if (условие1)
onepavopl
gelif (условие^)
опера.тор2
Seise
операяорЗ
Send
Оператор @if во многом аналогичен обычному оператору if, но он используется при
определении значений компилированных переменных и имеет несколько отличающий-
отличающийся синтаксис. Если значение выражения условие! равно true, выполняется оператор опе-
оператор 1. В противном случае вычисляется значение выражения условие2, которое опреде-
определяет, будет ли выполняться оператор оператор2. Оператор @elif аналогичен оператору
else...if языка JavaScript, хотя и отличается по внешнему виду. Можно использовать про-
произвольное количество операторов @elif или не использовать их вообще. Для обработки
вариантов, которые не соответствуют ни одному из приведенных в операторе @if усло-
условий, используется один оператор @else. Как и оператор @elif, оператор @else можно не
указывать. Для завершения области действия оператора @if необходимо применять опе-
оператор @end,
j Программа, приведенная в листинге 7.12, выводит различные сообщения в зависимос-
ти от типа используемого процессора.
Листинг 7.12. Использование оператора @if для отображения типа процессора
<script type="text/jscript" language="JScript">
< ! --
//Вывести сообщение о типе используемого процессора.
@if(@_jscript)
alert("Bbi используете процессор DEC Alpha.");
gelif(@_mc680x0)
alert("Bbi используете процессор Motorola 680x0.");
gelif(@_PowerPC)
alert("Bbi используете процессор Motorola PowerPC.");
Глава 7. Ядро JavaScript I О У
@elif(@_x86)
alert("Bbi используете процессор Intel.");
Seise
alert("Я не могу определить тип используемого процессора!");
@end
</script>
JScript3.O+
IE 4+
gset gvarName = value
: Свойство @set позволяет создавать переменные языка JScript.HMH переменной должно
начинаться с символа амперсанда. Если переменная используется до того, как она была
описана, ее значением будет NaN.
В листинге 7.13 свойство @set используется для создания пользовательской скомпилиро-
скомпилированной переменной ©number и присвоения ей значения 25. Затем эта переменная ис-
используется для вывода сообщения в окне браузера.
Листинг 7.13. Создание скомпилированной переменной с использованием
свойства @set
<script type="text/jscript" language="JScript">
//Создание скомпилированной переменной @number и присвоение
//ей значения 25
@set @number = 25
//Вывод в окне браузера сообщения, основанного на значении,
//которое хранится в скомпилированной переменной @number.
@if(@number == 25)
document.write("Число равно ",@number);
Seise
document.write("Число не равно 25.");
@end
</script>
Операции
- (вычитание) JavaScript 1.0+, ECMAScrlpt 1E+, JScript 1.0+
x ' Nav2+, NES2+, IE 3+, Opera3+
nural - num2
& Число, находящееся справа от знака операции, вычитается из числа, находящегося слева
от знака операции. Если хотя бы один операнд является строкой, перед выполнением
вычитания делается попытка преобразования строки в число.
В коде листинга 7.14 создается строка 5". Эта строка перед вычитанием из нее числа 25
преобразуется в число. На экран выводится результат выполнения операции B0).
Листинг 7.14. Использование операции вычитания
<script type="text/javascript" language="JavaScript">
//Объявить число 45 как строку
aString = new String(5");
//Вычесть из числа 45 число 25
answer = aString - 25;
document.write("результат = D5-25)<br>");
//Результат равен 2 0
document.write("результат = ",answer);
</script>
190
Часть III. Справочник по JavaScript
- (унарное отрицание)
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
-num
Операция унарного отрицания изменяет знак переменной пит на противоположный. При
изменении знака переменной ее содержимое не изменяется, изменяется только знак воз-
возвращаемого значения. Если операнд — строка, перед выполнением операции отрицания
он преобразуется в число.
jВ коде листинга 7.15 создается строка 6". При выполнении операции отрицания эта стро-
ка преобразуется в число. Результатом операции является число -36.
Листинг 7.15. Использование операции отрицания
<script type="text/javascript" language="JavaScript">
<! --
//Объявление числа 36 в качестве строки
aString = new String(6");
//изменение знака числа на противоположный
answer = -aString;
document.write("результат = -aString<br>");
//Результат равен -36
document.write("результат = ",answer);
// -->
</script>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
переменная
переменная —
Префиксная операция декремента, представленная в первой строке описания синтакси-
са, уменьшает значение переменной переменная на 1. Операция возвращает новое, умень-
уменьшенное значение.
Во второй строке описания синтаксиса представлен постфиксная операция декремента.
Также как и первая операция, она уменьшает значение переменной переменная на 1, но
он возвращает исходное значение, которое имела переменная до выполнения операции.
В обоих случаях, если операнд — строка, перед выполнением операции она преобразу-
преобразуется в число.
В листинге 7.16 иллюстрируется использование префиксной и постфиксной операций
декремента. Обратите внимание, что переменная пит содержит строку, которая перед вы-
выполнением операции преобразуется в число. Результат выполнения приведенного кода по-
показан на рис. 7.1.
-- (декремент)
«Операции лецмменг* * Micriisoft Internet ;„ ИКС I
Рисунок 7.1.
Различие между префиксным и
постфиксным декреме\1том
Перед префиксным декрементом
imm=807
После префиксного декремента
Результат опьрадак равек 806
После постфиксного декремента
пшп=805
Результат операции рэвек 806
'<$} Done
My Computet
ш
а!
J
Глава 7. Ядро JavaScript I У I
Листинг 7.16. Использование операции декремента
<script type="text/javascript" language="JavaScript">
^i
//Перед выполнением операции декремента записать
//в переменную значение
document.write("<ЬЗ>Перед префиксным декрементом</пЗ>");
num = new String("807"); //Переменная num содержит строку 807.
document.write("num=",num,"<br>"); //На экран выводится число 807.
//Выполнение операции префиксного декремента для
//значения переменной num
returnValue = --num;
document.write("<ЬЗ>После префиксного декремента</пЗ>");
document.write("num=",num,"<br>"); //На экран выводится число 806.
//Значение переменной returnValue равно 806
document.write("Результат операции равен ",returnValue,"<br>");
//Выполнение операции постфиксного декремента значения переменной num
returnValue = num--;
document.write("<ЬЗ>После постфиксного декремента</ЬЗ>") ;
document.write("num=",num,"<br>"); //На экран выводится число 805.
//Значение переменной returnValue равно 806
document.write("Результат операции равен ",returnValue,"<br>");
// —>
</script>
Е\ JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
^ис мс/ Nav2+ NES2+ |E 3+ Opera3+
!операнд
^Операция ! инвертирует булево значение, возвращаемое выражением операнд. Таким об-
образом, если значение выражения операнд равно true, результатом операции будет false,
если значение выражения операнд равно false, результатом операции будет true. Если
значение выражения операнд не является булевым, перед выполнением операции инвер-
инверсии оно преобразуется в true или false.
и* В листинге 7.17 символ " перед выполнением операции инвертирования с помощью !
ir преобразуется в булево значение true. Переменная theReverseTruth получает значение false.
Листинг 7.17. Использование логической операции НЕ
<script type="text/javascript" language="JavaScript">
<!--
//Создание переменной со значением 1
theTruth = new String(");
//Инвертирование значения, хранящегося в предыдущей переменной
theReverseTruth = 'theTruth;
//Вывод значений, хранящихся в обоих переменных
document.write("theTruth = ",theTruth,"<br>");
document.write("theReverseTruth = ",theReverseTruth);
// —>
</script>
'= (не оавно) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
" v H ' Nav2+, NES2+, IE 3+, Opera3+
выражение! ! = выражение2
Операция не равно сравнивает первое выражение со вторым. Если значения выражений
не равны, результатом операции является значение true. В противном случае возвраща-
возвращается значение false.
Интерпретаторы JavaScript и Microsoft JScript перед выполнением операции пытаются пре-
преобразовать значения обоих выражений к одному типу данных на базе следующих правил:
• Перед выполнением сравнения true преобразуется в число 1, a false — в число 0.
• Если хотя бы один из операндов имеет значение NaN, операция сравнения возвра-
возвращает false.
1 У С Часть III. Справочник по JavaScript
• Null равно неопределенному значению.
• Null и неопределенное значение не равно ни 0 (нулю), ни "" (пустой строке), ни false.
• При сравнении строки и числа перед выполнением операции предпринимается попытка
преобразовать строку в число.
• При сравнении объекта и строки перед выполнением операции делается попытка пре-
преобразовать объекта в строку.
• При сравнении объекта и числа перед выполнением операции делается попытка пре-
преобразовать объект в число.
• При сравнении двух объектов сравниваются их адреса.
ПРЕДУПРЕЖДЕНИЕ
——_________ В языке JavaScript 1.2 было принято решение в операции "не
равно" НЕ выполнять преобразование типов. В вврсии JavaScript 1.3 и более поздних
снова используется преобразование типов.
В приведенном примере строка 23" преобразуется в число (за исключением версии
JavaScript 1.2, в которой преобразование не проводится) и сравниваются два числа. По-
Поскольку левый операнд равен правому, в окне браузера выводится сообщение "Строка
523 РАВНА числу 523".
Листинг 7.18. Использование операции !=
<script type="text/javascript" language="JavaScript">
<! --
//Перед сравнением этой строки с числом
//строка будет преобразована в число.
if(23" != 523)
{
//Если числа не равны, вывести это сообщение.
document.write("Строка 523 НЕ равна числу 523");
}
else
{
//Если числа равны, вывести это сообщение.
document.write("Строка 523 РАВНА числу 523");
)
// -->
</script>
!== (не идентично) JavaScript 1.3+, ECMAScript 3E+, JScript 1.0+
v м ' Nav4.06+, IE 3+, Opera5+
выражение1 ! == выражение2
t Операция неидентичности сравнивает первое выражение со вторым. Если значение, на-
находящееся в левой части операции, не равно значению в правой части операции, воз-
возвращается true, в противном случае false.
ПРИМЕЧАНИЕ
Перед выполнением сравнения преобразование типов данных не
производится.
В листинге 7.19 строка "8765" НЕ преобразуется в число, поэтому выражения имеют раз-
различный тип. Поскольку выражения имеют различный тип, они не равны, и в окне бра-
браузера выводится сообщение "Строка 8765 НЕ равна числу 8765".
Листинг 7.19. Использование операции !==
<script type="text/javascript" language="JavaScript">
<! --
//Сравнить строку с числом, но не
//преобразовывать ее в число.
if("8765" !== 8765)
{
//Если строка не равна числу, вывести это сообщение.
document.write("Строка 8765 НЕ равна числу 8765");
Глава 7. Ядро JavaScript I 9 u
else
{
// Если строка равна числу, вывести это сообщение.
document.write("Строка 8765 РАВНА числу 8765");
}
// -->
</script>
% (остаток от деления) ^script
numl % пит2
Операция деления с остатком аналогична операции деления, но вместо вычисления ре-
результата обычного деления вычисляется лишь остаток от деления. Если хотя бы один из
операндов — строка, перед выполнением операции делается попытка преобразования стро-
строки в число.
В листинге 7.20 переменной answer присваивается значение 1, поскольку результатом
деления числа 7 на число 2 является 3 плюс остаток 1. Этот остаток присваивается пе-
переменной answer.
Листинг 7.20. Использование операции %
<script type="text/javascript" language="JavaScript" >
//Переменной answer присваивается значение 1.
answer = 7 % 2 ;
//Вывод на экран значения переменной answer
document.write("answer = ",answer);
// -->
</script>
%= (OCTaTOK С присваиванием) JavaScript 1.0+ ECMAScript 1E+, JScript 1.0+
4 ^ ' Nav2+, NES2+, IE 3+, Opera3+
переменная %= значение
f Операция определения остатка с присваиванием делит значение, хранящееся в переменной
переменная, на значение value. Операция возвращает остаток от деления и присваивает его
переменной переменная. Если значение — строка, перед выполнением операции опреде-
определения остатка предпринимается попытка преобразования строки в число.
i/|B листинге 7.21 переменной answer вначале присваивается значение 17. Затем число 17
ir делится на число 3. Остаток от деления, равный 2, присваивается переменной answer.
Листинг 7.21. Использование операции определения остатка с присваиванием
<script type="text/javascript" language="JavaScript">
<!--
//Присваивание переменной answer значения 17.
answer = 17;
//В переменной answer хранится значение 2.
answer %= 3 ;
//Отображение значения переменной answer.
document.write("answer = ",answer);
// —>
</script>
& (поразрядное И) JavaScript 1.0+. ECMAScript 1E+. JScript 1.0+
* r r ' Nav2+, NES2+, IE 3+, Opera3+
numl & num2
Операция поразрядного И рассматривает целые числа, находящиеся слева и справа от
нее, как 32-разрядные двоичные числа. Операция поразрядное И (&) по отдельности
оценивает каждый разряд 32-разрядного результата по соответствующим разрядам лево-
левого и правого операнда на базе таблицы истинности (табл. 7.1). Затем 32-разрядный ре-
результат выполнения логической операции И преобразуется в целое число и возвраща-
возвращается в качестве результата операции поразрядное И.
7 Зак. 733
194
Таблица 7.1.
Первое значение
true
true
false
false
Таблица истинности операции
Второе значение
true
false
true
false
Часть III. Справочник по JavaScript
поразрядное И
Результат
true
false
false
false
В коде листинга 7.22 операция поразрядное И применяется по отношению к числам 11
и 6. Результатом операции является число 2.
Листинг 7.22. Использование операции поразрядное И
<script type="text/javascript" language="JavaScript">
<!--
//целые числа в 32-разрядном двоичном представлении
// 11 = 00000000000000000000000000001011
// 6 = 00000000000000000000000000000110
// 2 = 00000000000000000000000000000010
//результат равен 2
answer = 11 & 6;
//Вывод на экран значения переменной answer,
document.write(1 s 6 = ",answer);
// —>
</script>
&& (логическое И) JavaScript 1.0+ ECMAScript 1E+, JScript 1.0+
v ' Nav2+, NES2+, IE 3+, Opera3+
выраиение1 & & выраиение2
l| Операция логическое И возвращает true, если оба выражения, выражение! и выражение2,
равны true. Если хотя бы одно из выражений равно false, результатом операции будет false.
Следует обратить внимание на то, что реализация операции логическое И в языке
JavaScript несколько-сложнее, чем указывалось ранее. Выполнение операции начинается
с вычисления выражения, находящегося слева от него. Если значение выражения равно
false, операция завершится без вычисления значения правого выражения. Но если зна-
значение левого выражение равно true, для вычисления результата операции логическое И
в целом необходимо вычислить значение правого выражения. В любом случае окончатель-
окончательный результат операции определяется значением последнего вычисленного выражения.
В листинге 7.23 иллюстрируется порядок выполнения операции логическое И. Значение пер-
первого выражения равно false, что приводит к тому, что результатом операции будет false и
на экране появится сообщение "Результат выполнения операции && равен FALSE!". Посколь-
Поскольку значение первого выражения равно false, второе выражение, в котором переменной х
присваивается значение 5, не выполняется и значение переменной остается равным 3.
Листинг 7.23. Операция логическое И
<script type="text/javascript" language="JavaScript">
<!--
//Присваивание переменной х значение 3.
x = 3;
//Значение 5 переменной х не присваивается
//поскольку в первом выражении значение B==х) равно false.
if(B==x) && (х=5))
{
document.write("Результат выполнения операции && равен TRUE!<Ьг>");
}
else
Глава 7. Ядро JavaScript I У U
{
document.write("Результат выполнения операции SS равен FALSE!<br>");
}
//Значение переменной х осталось равным 3
document.write("х=",х,"<Ьг>");
// —>
</script>
&= (поразрядное И с присваиванием) iavaS$r- t1"iо
IE 3+, Opera3+
переменная & = значение
Операция поразрядное И с присваиванием рассматривает целые числа, находящиеся слева
и справа от нее, как 32-разрядные двоичные числа. Операция поразрядное И (&) отдельно
оценивает каждый разряд 32-разрядного результата по соответствующим разрядам лево-
левого и правого операнда на базе таблицы истинности (табл. 7.2). Затем 32-разрядный ре-
результат выполнения логической операции поразрядное И преобразуется в целое число и
присваивается переменной, находящейся слева от операции.
Таблица 7.2. Таблица истинности операции поразрядное И
Первое значение Второе значение Результат
true true true
true false false
false true false
false false false
В коде листинга 7.24 операция поразрядное И с присваиванием применяется к числам 12
и 6 для получения результата 4.
Листинг 7.24. Использование операции поразрядное И с присваиванием
<script type="text/javascript" language="JavaScript">
<!--
// целые числа в 32-разрядном представлении
// 12 = 00000000000000000000000000001100
// 6 = 00000000000000000000000000000110
// 4 = 00000000000000000000000000000100
//Присваивание переменной х значения 6.
х = 6;
//Значение переменной х теперь равно 4.
х &= 12;
//Отображение значения переменной х.
document.write("x = ",х);
// -->
</script>
* (Умножение) JavaScript '
numl * num2
В ходе выполнения операции умножения (*) перемножаются левый и правый операн-
ды. Если хотя бы один операнд — строка, перед выполнением операции предпринима-
предпринимается попытка преобразования строки в число.
В коде листинга 7.25 перед умножением на 6 строка " преобразуется в число. Результат
операции C0) выводится в окне браузера.
Листинг 7.25. Использование операции умножения
<script type="text/javascript" language="JavaScript">
I 9 6 Часть III. Справочник по JavaScript
//Инициализация значения переменной aString.
aString = new String(");
//Выполнение операции уиножения.
х = aString * 6 ;
document.write("x = ",x);
// -->
</script>
'= (умножение с присваиванием)
IE 3+, ОрегаЗ+
переменная *- значение
Значение переменной, расположенной в левой части операции, умножается на значение,
находящееся в правой части операции. Результат умножения присваивается переменной,
расположенной в левой части операции. Если хотя бы один операнд — строка, предва-
предварительно предпринимается попытка преобразования строки в число.
В коде листинга 7.26 перед умножением на 7 строка " преобразуется в число. Резуль-
Результат операции C5) присваивается переменной х.
Листинг 7.26. Использованиа операции умножения с присваиванием
<script type="text/javascript" language="JavaScript">
//Присваивание переменной х значения 7,
//а переменной aString - значения ".
x = 7;
aString = new String(");
//Выполнение операции уиножения с присваиваниеи.
//Отображение значения переменной х.
document.write("x = ",х);
</script>
(Запятая) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
' v ' Nav2+, IE 3+, Opera3+
выражение1, выражение2, . . . ,выражениеНЗ
>| Операция "запятая" позволяет оценивать несколько выражений как одно. При выполне-
выполнении этой операции возвращается только одно значение — значение самого правого вы-
выражения.
В коде листинга 7.27 операция запятая используется для выполнения нескольких опера-
операторов присваивания в одной строке. Переменной у присваивается значение 3, а затем
переменной г присваивается значение 9. Поскольку последним оператором в строке яв-
является z=9, именно это значение (9) и присваивается переменной х. На экран выводятся
значения каждой переменной (х=9, у=3, z=9).
Листинг 2.27. Использованиа опарации "запятая" для разделения операторов
<script type="text/javascript" language="JavaScript" >
//Присваивание значения всем трем переменным.
х = (у = 3, z = 9) ;
//Отображение значений всех трех переиенных.
document.write("x = ",x,"<br>y = ",y,"<br>z = ",z);
</script>
/ (деление) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
* ' Nav2+, NES2+, IE 3+, Opera3+
numl I num2
Число, находящееся слева от знака операции, делится на число, находящееся справа от
знака операции. Если хотя бы один из операндов — строка, перед выполнением опера-
операции предпринимается попытка преобразования строки в число.
Глава 7. Ядро JavaScript I 9 /
i/SB коде листинга 7.28 перед делением на число 14 строка 68" преобразуется в число. Ре-
^ зультат деления A2) присваивается переменной х и выводится в окне браузера.
Листинг 7.28. Использование операции деления
<script type="text/javascript" languages"JavaScript">
<!--
//Присваивание переменной aString строки 68".
aString = new String(68");
//Создание переменной х и присваивание ей значения 12.
х = aString / 14;
//Отображение значении переменной х.
document.write ("x = ",х);
// -->
</script>
Г I (МНОГОСТРОЧНЫЙ комментарий) JavaScript 1.0+, ECMAScript 1E+.
' ' l r r ' JScript 1.0+, Nav2+, IE 3+, Opera3+
/* комментарий */
f Интерпретатор языка JavaScript игнорирует все символы, находящиеся между двумя дес-
дескрипторами комментария. Записывая дескрипторы комментария в разных строках, мож-
можно сроить многострочные комментарии. Не используйте вложенные дескрипторы коммен-
комментариев, поскольку это приводит к ошибке.
В листинге 7.29 показано использование в коде многострочных комментариев.
Листинг 7.29. Использование многострочных комментариев
<script type="text/javascript" language="JavaScript">
<!--
document.write("<Ь2>Мвогоирочние комментарии</п2>");
/* Несмотря на то что это предложение занимает несколько строк,
оно считается одним комментарием, поскольку начинается и
заканчивается дескрипторами комментария.
document.write("Не выводится на экран!");
Обратите внимание, что даже указанный выше оператор JavaScript
считается комментарием. */
// —>
</script>
// (комментарий) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
" х r ' Nav2+, IE 3+, Opera3+
// комментарий
Интерпретатор языка JavaScript игнорирует все символы, находящиеся в строке после
дескриптора комментария.
В листинге 7.30 показано использование однострочного комментария.
Листинг 7.30. Использование однострочных комментариев
<script type="text/javascript" languages"JavaScript">
<!--
document.write("<Ь2>0днострочные комментарии</Ь2>");
//Вся следующая строка считаетси комментарием
//document.write("He выводится на экран!");
// —>
</script>
/= (деление С присваиванием) JavaScript 1.0+ ECMAScript 1Е+, JScript 1.0+
iMavZT, 1МсЬ2*i lc j•, ирвгаз •
переменная /= значение
Значение переменной, находящееся в левой части операции, делится на значение, на-
находящееся в правой части операции. Результат деления присваивается переменной, на-
находящейся в левой части операции. Если хотя бы один из операндов — строка, перед
выполнением операции он преобразуется в число.
I 98 Часть III. Справочник по JavaScript
В коде листинга 7.31 перед делением числа 32 строка "8" преобразуется в число. Резуль-
Результат деления D) присваивается переменной х.
Листинг 7.31. Использование операции деления с присваиванием
<script type="text/javascript" language^"JavaScript">
//Инициализация переменных х и aString.
x = 32;
aString = new String("8");
//Теперь значение переменной х равно 4.
x /= aString;
//Отображения значения переменной х.
document.write("x = ",х);
</script>
?: (условная Операция) JavaScript 1
выражение ? значение1 : значение2
& Булево выражение всегда указывается слева от знака вопроса (?).Если значение выраже-
" ния равно true, в результате выполнения операции возвращается значение!. Если значение
выражения равно false, в результате выполнения операции возвращается значение2.
Подобных результатов можно добиться и с помощью оператора if...else.
В листинге 7.32 условная операция используется совместно со стандартным оператором
if. Условная операция и оператор if дают один и тот же результат, но код условной опе-
операции занимает меньше места. В обоих случаях на экран выводится сообщение "Гамбур-
"Гамбургеры готовы!".
Листинг 7.32. Сравнение условной операции и оператора if
<script type="text/javascript" language="JavaScript">
//Установка флага готовности "YES".
doneCooking = "YES"
//Создание 2 пустых переменных.
var messagel;
var message2;
//Стандартный оператор if
if (doneCooking == "YES")
messagel = "Гамбургеры готовы!";
else
messagel = "Гамбургеры все еще готовятся.";
//То же сообщение с использованием условной операции
message2 = (doneCooking == "YES") ?
"Гамбургеры готовы!"
"Гамбургеры все еще готовятся.";
//Отображение сообщения на экране. Обратите внимание,
//что сообщения идентичны!
document.write("Оператор if возвращает: ",messagel,"<Ьг>");
document.write("Условная операция возвращает: ",meseage2);
</script>
" (поразрядное исключающее ИЛИ) .
numl л пит2
5& Операция поразрядное исключающее ИЛИ рассматривает целые числа, находящиеся слеш
■ и справа от знака операции, как 32-разрядные двоичные числа. Для оценки значения
каждого отдельного разряда результата операция поразрядного исключающего ИЛИ ис-
использует специальную версию логической операции ИЛИ, которая называется исключа-
исключающее ИЛИ.
Глава 7. Ядро JavaScript I 9 Э
Каждый из 32 разрядов числа, находящегося слева от знака операции, сравнивается с
соответствующим разрядом числа, находящегося справа от знака операции. При этом
используется таблицы истинности операции исключающее ИЛИ (табл. 7.3). Полученный
32-разрядный результат преобразуется в целое число и возвращается из операции.
Таблица 7.3. Таблица истинности операции поразрядное исключающее ИЛИ
Первое значение
true
true
false
false
Второе значение
true
false
true
false
Результат
false
true
true
false
В коде листинга 7.33 операция поразрядное исключающее ИЛИ применяется к числам 6
и 3. Результатом выполнения операции является число 5, которое отображается в окне
браузера.
Листинг 7.33. Использование операции поразрядное исключающее ИЛИ
<script type="text/javascript" language="JavaScript">
<! --
//Целые числа в 32-раарядном двоичном представлении
// 6 = 00000000000000000000000000000110
// 3 = 00000000000000000000000000000011
// 5 = 00000000000000000000000000000101
//Отображение в окне браузера числа 5.
document.write( А 3 = ", F л 3) );
// -->
</script>
"= (поразрядное исключающее ИЛИ с присваиванием) JavaScript 1.0+, ECMAScript 1E+,
JScript 1.0+, Nav2+, NES2+, IE 3+, Opera3+
variable A= value
ft Операция поразрядное исключающее ИЛИ с присваиванием считает целые числа, нахо-
находящиеся слева и справа от знака операции, 32-разрядными двоичными числами. Для
вычисления значения каждого отдельного разряда результата операция поразрядное ис-
исключающее ИЛИ с присваиванием использует специальную версию логической операции
ИЛИ, которая называется исключающее ИЛИ.
Каждый из 32 разрядов числа, находящегося слева от знака операции, сравнивается с
соответствующим разрядом числа, находящегося справа от знака операции. Затем на базе
таблицы истинности операции исключающее ИЛИ (табл. 7.4) определяется 32-разрядный
результат. Затем результат преобразуется в целое число и присваивается переменной, на-
находящейся слева от знака операции.
Таблица 7.4. Таблица
Первое значение
true
true
false
false
истинности операции поразрядное
Второе значение
true
false
true
false
исключающее ИЛИ
Результат
false
true
true
false
В коде листинга 7.34 операция поразрядное исключающее ИЛИ с присваиванием применя-
применяется по отношению к числам 10 и 6. Результатом выполнения операции является число 12.
С.00 Часть III. Справочник по JavaScript
Листинг 7.34. Использование операции поразрядное исключающее ИЛИ
с присваиванием
<script type="text/javascript" language»"JavaScript">
<!--
//Целые числа в 32-разрядном двоичном представлении
// 10 = 00000000000000000000000000001010
// 6 = 00000000000000000000000000000110
// 12 = 00000000000000000000000000001100
//Присваивание переменной х значения 10.
х - 10;
//Теперь значение переменной х равно 12.
х А= 6 ;
//Отображение значения переменной х.
document.write ("x = ",х);
// —>
</script>
| (Поразрядное ИЛИ) ^.script i.
numl | num2
йб& Операция поразрядное ИЛИ оценивает целые числа, находящиеся слева и справа от него,
«" как 32-разрядные двоичные числа. Для вычисления значения каждого отдельного разря-
разряда результата поразрядного ИЛИ используется таблица истинности логической операции
ИЛИ (||) (см. табл. 7.5). 32-разрядный результат преобразуется в целое число и возвра-
возвращается из операции.
Таблица 7.5.
Первое значение
true
true
false
false
Таблица истинности операции
Второе значение
true
false
true
false
логическое ИЛИ
Результат
true
true
true
false
В коде листинга 7.35 операция поразрядное ИЛИ применяется к числам 9 и 5. В резуль-
результате выполнения кода в окне браузера выводится число 13.
Листинг 7.35. Использование операции поразрядное ИЛИ
<script type="text/javascript" language="JavaScript">
<!--
//Целые числа в 32-разрядном двоичном представлении
// 9 = 00000000000000000000000000001001
// 5 = 00000000000000000000000000000101
// 13 = 00000000000000000000000000001101
//Отображение в окне браузера числа 13.
document.write("9 | 5 = ", (9 | 5) );
// —>
</script>
I I (логическое ИЛИ) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
выражение! | | выражение2
j| Операция логическое ИЛИ возвращает значение true, если значение левого операнда,
правого операнда или обоих операндов равно true. Если значения обоих операндов рав-
равны false, результатом операции будет значение false.
Глава 7. Ядро JavaScript cUI
Реализация операции логическое ИЛИ в языке JavaScript несколько сложнее, чем было
описано выше. Выполнение операции начинается с оценки значения левого операнда. Если
его значение равно true, правый операнд не вычисляется. Но если значение левого опе-
операнда равно false> для определения результата операции логического ИЛИ необходимо
вычислить значение правого операнда. В любом случае результатом операции является зна-
значение последнего вычисленного операнда.
В листинге 7.36 показан порядок выполнения операции логическое ИЛИ. Значение пер-
первого выражения равно true, что приводит к тому, что операция возвращает значение true.
Поскольку значение выражения равно true, второе выражение, в котором переменной
х присваивается значение 7, не выполняется и значение х остается равным 8.
Листинг 7,36. Использование операции логичаское ИЛИ
<script type="text/javascript" language="JavaScript">
<!--
//Присвоение переменной х значение 8.
x = 8;
//Присвоение переменной х значении 7 не происходит
//поскольку значение первого выражении (8==х) равно true.
if((8==x) || (x=7))
(
document.write("Результат выполнении операции || равен TRUE!<br>");
}
else
(
document.write("Результат выполнении операции || равен FALSE!<br>");
}
//Значение переменной х равно 8.
document .write ( "x=" , зс, "<Ьг>" ) ;
// -->
</script>
1= (Поразрядное ИЛИ С присваиванием) JavaScript 1.0+, ECMAScript 1E+,
JScript 1.0+,Nav2+,NES2+,IE 3+,Opera3+
переменная | = значение
& Операция поразрядное ИЛИ с присваиванием считает целые числа слева и справа от знака
операции 32-разрядными двоичными числами. Для вычисления значения каждого отдель-
отдельного разряда результата используется логическая операция ИЛИ. 32-разрядный резуль-
результат этой операции преобразуется в целое число и присваивается переменной слева от
знака операции.
В коде листинга 7.37 операция поразрядного ИЛИ с присваиванием применяется к чис-
числам 2 и 5. Результатом выполнения операции является число 7.
Листинг 7.37. Использование операции поразрядного ИЛИ
<script type="text/javascript" language»"JavaScript">
<!--
// Целые числа в 32-разрндном двоичной представлении
// 2 = 00000000000000000000000000000011
// 5 = 00000000000000000000000000000101
// 7 = 00000000000000000000000000000111
//Присвоение переиенной х значение 2.
х. = 2;
//Выполнение операции логическое ИЛИ с присваиванием.
х I = 5 ;
//Отображение значении переменной х.
document.write("x = ",х);
// -->
</script>
20Э Часть III. Справочник по JavaScript
- (Поразрядное НЕ) '-Script 1-O^^^j
~ операнд
I Операция поразрядное НЕ рассматривает число справа от знака операции как 32-разрядное
двоичное число. При выполнении операции инвертируются все разряды числа. Таким обра-
образом, все единицы становятся нулями, а все нули — единицами. 32-разрядный результат
преобразуется в целое число и возвращается из операции.
Результат выполнения операции НЕ может привести в замешательство из-за метода пред-
представления чисел со знаком. Необходимо помнить, что результатом применения опера-
операции поразрядное НЕ над положительным числом будет исходное число с противополож-
противоположным знаком минус 1.
В коде листинга 7.38 показано использование операции поразрядное НЕ. Обратите вни-
внимание, что результатом операции является число -3, которое представляет собой исходное
число B) с противоположным знаком (-2) минус 1.
Листинг 7.38. Использование операции поразрядное НЕ
<script type="text/javascript" language="JavaScript">
<!--
//Целые числа в 32-разрядном двоичном представлении
// 2 = 00000000000000000000000000000010
// -3 = 11111111111111111111111111111101
//Отображение результата операции поразрядное НЕ.
document.write("~2 = ",(~2)); //Отображение -3
// —> .
</script>
+ (Сложение) JavaScript 1.0+ ECMAScrlpt 1Е+, JScript 1.0+
v ' Nav2+, NES2+, IE 3+, Opera3+
операнд1 + операнд2
Операция сложения может выполнять две функции в зависимости от типа данных опе-
операндов. Первая функция — простое сложение, в котором число слева от знака операции,
складывается с числом справа от знака операции. Для этого типа сложения оба операн-
операнда должны быть числами.
Вторая функция операции сложения — конкатенация строк. Если хотя бы один операнд
является строкой, сначала выполняется преобразование нестрокового операнда в строку,
а затем путем дополнения строки слева от знака операции строкой справа от знака опе-
операции осуществляется сцепление (конкатенация) строк.
В коде листинга 7.39 показано сложение чисел и конкатенация строк. Чтобы понять, каким
образом выполняется сложение для различных типов данных, сравните листинг 3.39 с
результатами выполнения кода, приведенными на рис. 7.2.
Листинг 7.39. Сложение чисел и конкатенация строк
<script type="text/javascript" language="JavaScript">
<!--
//Инициализация переменной aString.
aString = new String(7");
//Переменная answerNum содержит число 90.
answerNum = 67 + 23;
//Переменная answerStr содержит строку 723".
answerStr = aString + 23;
//Отображение результата.
//Отображение на экране числа 90.
document.write("answerNum =",answerNum,"<br>");
//Отображение на экране числа 6723.
document.write("answerStr =",answerStr);
// -->
</script>
Глава 7. Ядро JavaScript
203
Рисунок 7.2.
Использование операции
сложения для сложения чисел и
конкатенации строк
Г I'fTfPF'lSliW in fifi
£8e |* ¥«w w 'Link»
Microsoft Internet Екр„
answerNum =90
answeiStr =6723
J
++ (инкремент)
Ц Операции инкремента - Microsoft Internet ExpL
H
Перед префиксным кккремектом
После завершения опершрш ярефмхсиог© хнкрененха
Операция возвращает значение 80S
После выполнения операции постфиксного кккренемта
цщп=809
Операция возвращает значение 808
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
++веремеяная (префиксный инкремент)
переменная** (постфиксный инкремент)
\ Операция префиксного инкремента увеличивает
значение параметра переменная на 1. Операция
возвращает новое увеличенное значение.
Операция постфиксного инкремента аналогич-
аналогична операции префиксного инкремента. Она
также увеличивает значение параметра перемен-
переменная на 1, однако возвращает значение, кото-
которое переменная имела до выполнения операции
инкремента.
В обоих случаях, если операнд — строка, пе-
перед выполнением операции происходит его
преобразование в число.
В коде листинга 7.40 показано использование
операций префиксного и постфиксного инк-
инкремента. "Обратите внимание, что переменная рисуНок 7.3, Различие между префиксным
num содержит строку, которая перед выпол- и пОстфиксным инкрементом
нением инкремента преобразуется в число. Ре-
Результат выполнения приведенного в листинге кода показан на рис. 7.3.
Листинг 7.40. Использование операции инкремента
<script type="text/javascript" language="JavaScript">
/* Перед выполнением операции префиксного инкремента присвоить
переменной значение */
document.write("<пЗ>Перед префиксным инкрементом</пЗ>");
num = new String("807"); //Переменная num содержит строку 807.
document.write("num=",num,"<br>"); //На экран выводится 807.
/* Выполнение операции постфиксного инкремента над значением
переменной num * /
returnValue = ++num;
document.write("<пЗ>После завершения операции префиксного
**инкремента</пЗ>") ;
document.write("num=",num,"<br>"); //На экран выводится 808.
//На экран выводится результат операции префиксного инкремента —
//число 808.
document.write("Операция возвращает значение ",returnValue,"<br>");
/* Выполнение операции постфиксного инкремента над значением
переменной num * /
returnValue = num++;
document.write("<пЗ>После выполнения операции постфиксного
и»инкремента</ЬЗ>") ;
document.write("num=",num,"<br>"); //На экран выводится 809.
//На экран выводится результат операции постфиксного инкремента —
//число 808.
document.write("Операция возвращает значение ",returnValue,"<br>");
</script>
C.U4 Часть III. Справочник по JavaScript
+= (Сложение С Присваиванием) JavaScript 1.0+,ECMAScript 1Е+ JScript 1.0+
х r ' Nav2+, NES2+, IE 3+, Opera3+
переменная += значение
$S| Операция сложения с присваиванием может выполнять две функции в зависимости от
» типа операндов. Первая функция — простое сложение, в котором число слева от знака
операции, складывается с числом справа от знака операции. Результат сложения запи-
записывается в переменную слева от операции сложения. Если один из операндов является
строкой или представляет собой другой объект, отличный от числа, он будет преобра-
преобразован в число.
Вторая функция операции сложения с присваиванием — конкатенация строк. Если хотя
бы один операнд является строкой, сначала выполняется преобразование операнда, от-
отличного от строки, в строку, а затем путем дополнения строки слева от знака опера-
операции строкой справа от знака операции осуществляется конкатенация строк. Новая стро-
строка присваивается переменной, указанной слева от знака операции.
В коде листинга 7.41 операция сложения с присваиванием используется для сложения двух
чисел и для конкатенации двух строк.
Листинг 7.41. Использование операции сложения с присваиванием
<script type="text/javascript" language="JavaScript">
<! --
//Инициализация переменных nun и str.
num = 42;
str = new String(2");
//Использовать операции сложения с присваиванием.
num += 8; //Переменная num содержит число 50.
str += 8; // переменная str содержит строку 28".
//Отображение результатов выполнения операции сложения с присваиванием
document.write ("num = " ,num,"<br>str = ",str);
// -->
</script>
< (меньше) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
V ' Nav2+, NES2+, IE 3+, Opera3+
число! < число2
Операция меньше сравнивает число слева от знака операции с числом справа от знака
операции. Если число слева меньше числа справа, возвращается значение true. Если число
слева больше либо равно числу справа, возвращается значение false. Если хотя бы один
операнд является строкой или не числом, перед выполнением сравнения выполняется
преобразование значение операнда в число.
В листинге 7.42 строка 5" перед выполнением операции сравнения преобразуется в число.
Поскольку число 45 меньше числа 68, на экран выводится сообщение 5 is less than 68".
Листинг 7.42. Использование операции "меньше"
<script type="text/javascript" languages"JavaScript">
<! --
//Присваивание переменной str строки 5".
str = new String (5" );
//Сравнение перененной с числом 68.
if(str < 68)
document.write(5 меньше чем 68");
else
document.write("Возвращается FALSE!");
// —>
</script>
« (Сдвиг влево) »**• tw^wjueg. ».
число! « число2
Глава 7. Ядро JavaScript C.U5
# Операция сдвиг влево рассматривает целое число слева от знака операции как 32-разряд-
32-разрядное двоичное число. При выполнении операции все разряды параметра число! сдвигаются
влево на количество позиций, заданное параметром число2. Разряды сдвигаются влево,
а освободившиеся разряды справа заполняются нулями. Поскольку длина чисел ограни-
ограничивается 32 разрядами, те разряды, которые выходят за эту границу, теряются. 32-раз-
32-разрядный результат выполнения операции сдвига преобразуется в целое число и возвра-
возвращается из операции.
ПРИМЕЧАНИЕ
Результат операции сдвиг влево можно быстро вычислить путем
умножения исходного числа на 2 в степени х, где х — количество позиций сдвига.
В листинге 7.43 разряды числа 2 сдвигаются влево на две позиции. В результате получа-
получается число 8.
Листинг 7.43. Использование операции сдвига влево
<script type="text/javascript" language="JavaScript">
<!--
//Целые числа в 32-разрядном двоичном представлении
// 2 = 00000000000000000000000000000010
// 8 = 00000000000000000000000000001000
//Присваивание переменной х значения 8
х = 2 « 2;
//Отображение значения переменной х.
document.write( « 2 = ",х);
// —>
</script>
«= (Сдвиг влево с присваиванием* . \a4naS^l 1i°+,uEC,MA3ScoPt 1E,+I
* м ^ 'JScript 1.0+,Nav2+,NES2+,IE 3+,Opera3+
переменная «= число
& Операция сдвиг влево с присваиванием рассматривает целое число, хранящееся в пере-
переменной слева от знака операции, как 32-разрядное двоичное число. В ходе выполнения
операции сдвигаются влево все разряды числа на количество позиций, заданное числом
справа от знака операции. Разряды сдвигаются влево, а освободившиеся разряды справа за-
заполняются нулями. Поскольку длина чисел ограничивается 32 разрядами, те разряды, ко-
которые вышли за эту границу слева, теряются. 32-разрядный результат выполнения опера-
операции сдвига преобразуется в целое число и присваивается переменной слева от знака операции.
В листинге 7.44 32-разрядное представление числа 3, которое хранится в переменной х, сдви-
сдвигается на две позиции алею. Результат операции, число 12, присваивается переменной х.
Листинг 7.44. Использование операции сдвига влево с присваиванием
<script type="text/javascript" language="JavaScript">
<! --
//Целые числа в 32-разрядной двоичной представлении
// 3 = 00000000000000000000000000000011
// 12 = 00000000000000000000000000001100
//Присваивание переменной х значение 3.
х = 3;
//Теперь значение перененной х равно числу 12.
х «= 2 ;
//Отображение значения переиенной х.
document.write ("x = ",х);
// -->
</script>
<= (Меньше либо равно) JavaScript 1.0+ ECMAScript 1E+, JScript 1.0+
х r ' Nav2+, NES2+, IE 3+, Opera3+
число! <= чисяо2
206 Часть III. Справочник по JavaScript
#В ходе выполнения операции меньше либо равно сравнивается число слева от знака опе-
операции с числом, находящимся справа от знака операции. Если левое число меньше или
равно правого числа, операция возвращает значение true. Если левое число больше пра-
правого числа, операция возвращает значение false.
В листинге 7.45 строка 4" перед выполнением сравнения будет преобразована в число.
Поскольку число 34 меньше числа 77, на экран выводится сообщение 4 меньше или
равно 77".
Листинг 7.45. Использование операции меньше либо равно
<script type="text/javascript" language="JavaScript">
//Присваивание переменной str значения 4".
str = new String(4") ;
//Сравнение значения переменной с числом 77.
if(str <= 77)
document.write(4 меньше или равно 77");
else
document.write("Возвращается FALSE!");
</script>
= (присваивание) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
V H ' Nav2+, NES2+. IE 3+, Opera3+
переменная = значение
k Значение справа от знака операции присваивается переменной слева от знака операции.
В коде листинга 7.46 операция присваивания используется для присвоения переменным
данных различных типов. Затем для определения типа данных, хранящихся в перемен-
переменных, используется операция type of. Далее типы данных отображаются в окне браузера
(х — число, у — строка, z — булева переменная).
Листинг 7,46. Использование операции присваивания
<script type="text/javascript" language="JavaScript">
//Переменная
x = 456; //x содержит число.
document.write("Тип переменной х ",typeof x,"<br>");
//Переменная
у = new String("npHBeT") //у содержит строку.
document.write("Тип переменной у ",typeof y,"<br>");
//Переменная
z = true; //z содержит булево значение.
document.write("Тип переменной z ",typeof z) ;
</script>
-= (вычитание с присваиванием) .
переменная -= значение
& Число справа от знака операции вычитается из значения переменной слева от знака опе-
операции. Результат вычитания записывается в переменную слева от знака операции. Если
один из операндов является строкой, перед выполнением операции предпринимается
попытка преобразовать строку в число.
В листинге 7.47 строка "878" перед выполнением операции вычитания преобразуется в
число. Затем число 55 вычитается из числа 878, а результат — число 823 — присваива-
присваивается переменной answer.
Листинг 7.47. Использование операции вычитания с присваиванием
<script type="text/javascript" language="JavaScript">
//Присваивание переменной aString строки "878".
aString = new String("878");
Глава 7. Ядро JavaScript C_(J /
//Присваивание переменной answer значения 823.
answer -= 55;
//Отображение значения переменной answer,
document.write("answer = ",answer);
// -->
</script>
== fnaBHO) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
lH ' Nav2+, NES2+, IE 3+, Opera3+
выражение1 -~ выражение2
6k В ходе выполнения операции равно сравнивается значение выражение слева от знака опе-
операции со значением выражения справа от знака операции. Если значения выражений рав-
равны, операция возвращает значение true. Если значения выражений не равны, операция
возвращает значение false.
Интерпретатор JavaScript перед выполнением операции сравнения пытается преобразовать
операнды к одному типу данных во всех версиях, за исключением версии 1.2. При не-
необходимости выполнения операции преобразования типов JavaScript использует следу-
следующие правила:
• Перед сравнением значение true преобразуется в число 1, a false — в число 0.
• Если хотя бы один из операндов содержит NaN, операция равенства возвращает false.
• Null соответствует неопределенному значению.
• Null и неопределенное значение не равны ни 0 (нулю), ни "" (пустой строке), ни false.
• При сравнении строки и числа предпринимается попытка преобразовать строку в чис-
число, а затем выполняется сравнение.
• При сравнении объекта и строки делается попытка преобразовать объект в строку, а
затем выполняется сравнение.
• При сравнении объекта и числа предпринимается попытка преобразовать объект в
число, а затем выполняется сравнение.
• При сравнении двух объектов сравниваются их адреса.
ПРЕДУПРЕЖДЕНИЕ
В JavaScript 1.2 было принято решение НЕ производить преоб-
преобразование типов данных операндов в операции равно. В версии 1.3 и более поздних
версиях вновь появляется преобразование типов.
Влистинге 7.48 строка 49" преобразуется в число (за исключением версии JavaScript 1.2,
в которой преобразование типов данных не выполняется) и сравниваются два числа.
Поскольку операнд слева от операции равенства равен операнду справа, на экран вы-
выводится сообщение "Строка 749 РАВНА числу 749".
Листинг 7.48. Использование операции равенства
<script type="text/javascript" language="JavaScript">
//Перед выполнением сравнения строка преобразуется в число.
if(49" == 749)
document.write("Строка 749 РАВНА числу 749");
else
document.write("Строка 749 НЕ равна числу 749");
</script>
c_Uo Часть III. Справочник по JavaScript
=== (идентичность) I™** 1*.
выражение1 === выражение2
Операция идентичности сравнивает первый операнд со вторым. Если значение слева равно
значению справа от знака операции, возвращается значение true. Если значения не равны,
операция возврашает значение false.
ПРИМЕЧАНИЕ
Перед выполнением сравнения преобразование типов не выполняется.
В листинге 7.49 строка 26" НЕ преобразуется в число, поэтому операнды имеют раз-
различные типы. Поскольку операнды имеют различные типы данных, они не равны, сле-
следовательно, в окне браузера выводится сообщение "Строка 326 НЕ равна числу 326".
Листинг 7.49. Использование операции идентичности
<script type="text/javascript" language="J&vaScript">
<! --
//Строка сравнивается с числом.
if(26" === 326)
{
document.write("Строка 326 HE равна числу 326");
}
else
{
document.write("Строка 326 РАВНА числу 326");
}
// -->
</script>
> (больше) JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
v ' Nav2+, NES2+, IE 3+, Opera3+
число1 > число2
\ При выполнении операции больше сравнивается число слева от знака операции с чис-
числом справа от знака операции. Если число, расположенное слева, больше числа, распо-
расположенного справа, операция возврашает значение true. Если число, находящееся слева
меньше либо равно числа, находяшегося справа, операция возвращает значение false.
Если хотя бы один операнд является строкой либо не является числовым, перед выпол-
выполнением сравнения производится преобразование значение операнда в число.
В листинге 7.50 строка 12" перед выполнением операции сравнения преобразуется в
число. Поскольку число 112 больше числа 68, на экран выводится сообщение 12 боль-
больше чем 68".
Листинг 7.50. Использование операции "больше".
<script type="text/javascript" language="JavaScript">
<! --
//Присваивание переменной str строки 12".
str = new String(12") ;
//Сравнивание значения переменной с числом,
if(str > 68)
document.write(12 больше чем 68") ;
else
document.write("Возвращается FALSE!");
// —>
</script>
>= (больше ЛИ6О paBHO) ^Script 10+1^МА^+1Е+^сr.pM.0*
переменная >= значение
Глава 7. Ядро JavaScript 209
В ходе выполнения операции больше либо равно производится сравнение числа слева от
знака операции с числом справа от знака операции. Если число слева больше или рав-
равно числу справа, операция возвращает значение true. Если число слева меньше числа
справа, операция возвращает значение false.
В листинге 7.51 строка "95" перед выполнением операции сравнения преобразуется в число.
Поскольку число 95 больше числа 44, на экран выводится сообщение "95 больше рав-
равно 44".
Листинг 7.51. Использование операции "больше либо равно"
<script type="text/javascript" languages"javaScript">
//Инициализация переменной str.
str = new String("95");
//Сравнение значения переменной с числом 44.
if(str >= 44)
document.write("95 больше или равно 44");
else
document.write("Возвращается FALSE!");
// -->
</script>
» (СДВИГ ВПраВО СО Знаком) JavaScript 1.0+^ECMASaipt+ ^
число! >> число2
При выполнении операции сдвига вправо со знаком целое число слева от знака опера-
операции рассматривается как 32-разрядное двоичное число. Операция сдвигает все разряды
параметра число! на количество позиций, заданное параметром число2. Разряды сдвига-
сдвигаются вправо, а слева освободившиеся позиции заполняются либо единицами, либо ну-
нулями. Если исходное число положительное, освободившиеся разряды заполняются нулями.
Если же исходное число отрицательное, освободившиеся разряды заполняются едини-
единицами. Поскольку длина чисел ограничивается 32 разрядами, те разряды, которые выш-
вышли за эту границу справа, теряются. 32-разрядный результат выполнения операции сдвига
преобразуется в целое число и возвращается из операции.
ПРИМЕЧАНИЕ
Результат операции сдвига вправо со знаком можно быстро вычислить
путем деления исходного числа на 2 в степени х без остатка, где х — количество
позиций сдвигв.
В листинге 7.52 разряды числа 14 сдвигаются вправо на две позиции. В результате полу-
получается число 3. Программный код также выполняет сдвиг разрядов числа -4 на одну по-
позицию вправо, что в результате дает число -2.
Листинг 7.52. Использование операции сдвига вправо со знаком
<script type="text/javascript" languages"JavaScript">
<! —
// целые числа в 32-разрядном двоичном представлении
// 14 = 00000000000000000000000000001110
// 3 = 00000000000000000000000000000011
//Переменной х присваивается значение 3.
х = 14 » 2;
//Отображение значения переменной х.
document.write(4 » 2 = ",х);
document.write("<br>");
//Целые числа в 32-разрядном двоичном представлении
// -4 = 11111111111111111111111111111100
// -2 = 11111111111111111111111111111110
//Переменной у присваивается значение -2.
у = -4 >> 1; //Значение переменной у равно -2.
с: 1 О Часть III. Справочник по JavaScript
//Отображение значения переменной у.
document.write("-4 » 1 = ",у);
// -->
</script>
»= (Сдвиг вправо со знаком и присваиванием) -,...... ■ J-avaScript 2'5+
v r r ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
переменная »= значение
f Операция сдвига вправо со знаком и присваиванием рассматривает целое число, храня-
хранящееся в переменной слева от знака операции, как 32-разрядное двоичное число. При
выполнении операции все разряды этого числа сдвигаются вправо на количество пози-
позиций, заданное целым числом справа от знака операции. Разряды сдвигаются вправо, а
освободившиеся слева позиции заполняются либо единицами, либо нулями. Если исход-
исходное число положительное, освободившиеся разряды заполняются нулями. Если же ис-
исходное число отрицательное, освободившиеся разряды заполняются единицами. Посколь-
Поскольку длина чисел ограничивается 32-разрядами, те разряды, которые вышли за эту границу
справа, теряются. 32-разрядный результат выполнения операции сдвига преобразуется в
целое число и присваивается переменной слева от знака операции.
В листинге 7.53 32-разрядное представление числа 15, которое хранится в переменной х,
сдвигается на одну позицию вправо. Результат выполнения операции, число 7, присва-
присваивается переменной х.
Листинг 7.53. Использование операции сдвига вправо со знаком и присваиванием
<script type="text/javascript" language="JavaScript">
// Целые числа s 32-разрядном двоичном представлении
// 15 = 00000000000000000000000000001111
// 7 = 00000000000000000000000000000111
//Присваивание переменной х значения 15.
х = 15;
//Теперь значение переменной х равно 7.
х »= 1;
//Отображение значения переменной х.
document.write("x = ",х);
</script>
>» (Сдвиг вправо с заполнением нулями) _..... . .iava£cri.pt ]Ц+
х г ' ' ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
число! >» число2
Операция сдвига вправо с заполнением нулями считает целое число слева от знака опе-
операции 32-разрядным двоичным числом. В ходе выполнения операции все разряды пара-
параметра число1 сдвигаются на количество позиций, заданное параметром число2. Разряды
сдвигаются вправо, а освободившиеся слева позиции заполняются нулями независимо
от знака исходного целого числа. Поскольку длина чисел ограничивается 32 разрядами,
те разряды, которые вышли за эту границу справа, теряются. 32-разрядный результат
выполнения операции сдвига преобразуется в целое число и возвращается из операции.
В листинге 7.54 разряды числа 13 сдвигаются вправо на одну позицию. В результате по-
получается число 6. Код также выполняет сдвиг разрядов числа -8 на две позиции впра-
вправо, что в результате дает число 1073741822.
Листинг 7.54. Использование операции сдвига вправо с заполнением нулями.
<script type="text/javascript" language="JavaScript">
//Целые числа в 32-разрядном двоичном представлении
// 13 = 00000000000000000000000000001101
// 6 = 00000000000000000000000000000110
Глава 7. Ядро JavaScript С. I I
//Присваивание переменной х значения 6.
х = 13 >» 1;
//Отображение значения переменной х.
document .write (3 »> 1 = ",х);
document.write("<br>");
//Целые числа в 32-разрядном двоичном представлении
// -8 = 11111111111111111111111111111000
// 1073741822 = 00111111111111111111111111111110
//Присваивание переменной у значения 1073741822.
у = -8 >» 2;
//Отображение значения переменной у.
document, write ("-8 >» 2 = ",у);
</script>
>>>= (Сдвиг вправо с заполнением нулями и присваиванием) , ,,...., ■
JavaScript 1.0+, ECMAScript 1E+,
JScript 1.0+, Nav2+, NES2+, IE 3+
аеременная >»= значение
#При выполнении операции сдвига вправо с заполнением нулями и присваиванием счита-
считается, что целое число, хранящееся в переменной слева от знака операции, является 32-
разрядным двоичным числом. При выполнении операции все разряды данного числа
сдвигаются вправо на количество позиций, заданное целым числом справа от знака опе-
операции. Разряды сдвигаются вправо, а освободившиеся слева позиции заполняются ну-
нулями независимо от знака исходного целого числа. Поскольку длина чисел ограничива-
ограничивается 32 разрядами, те разряды, которые вышли за эту границу справа, теряются.
32-разрядный результат выполнения операции сдвига преобразуется в целое число и при-
присваивается переменной слева от знака операции.
В листинге 7.55 32-разрядное представление числа -6, которое хранится в переменной х,
сдвигается на одну позицию вправо. Результат операции, число 1073741822, присваи-
присваивается переменной х.
Листинг 7.55. Использование операции сдвига вправо с заполнением нулями и
присваиванием
<script type="text/javascript" language="JavaScript">
//Целые числа в 32-разрядном двоичном представлении
// -6 = 11111111111111111111111111111010
// 1073741822 = 00111111111111111111111111111110
//Присвоить переменной х значение -6.
х = -6;
//Теперь переменная х содержит число 1073741В22.
X >»= 2 ;
//Отображение значения переменной х.
document.write("x = ",х);
</script>
abstract JavaScript 1.2+, ECMAScript 2E+, JScript 5+
Зарезервированное ключевое слово
В настоящее время ключевое слово abstract в языке JavaScript не реализовано, однако оно
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
ActiveXObject JSeriptf£+
var переменная = new
ActiveXObject(имя_Сервера. имя_Тип а,расположение)
2 I 2 Часть III. Справочник по JavaScript
# Объект ActiveXObject создает ссылку на объект, который связан с другим приложением
или инструментальным средством через интерфейс автоматизации. Аргументы объекта
ActiveXObject перечислены в табл. 7.6.
Таблица 7.6. Аргументы объекта ActiveXObject
Аргумент Описание
имяСервера Имя приложения, предоставляющего объект
имя_Типа Тип или класс создаваемого объекта
расположение Имя сетевого сервера, на котором создается объект. Этот аргумент
необязателен.
В листинге 7.56 объект ActiveXObject используется для создания таблицы умножения в
документе Microsoft Excel. Приложение Excel будет запущено автоматически.
Листинг 7.56. Созданиа таблицы умножения в документе Excel
<script type="text/jscript" language="JScript">
<! --
var ExcelSheet = new ActiveXObject("Excel.Sheet");
//Сделать Excel видимым через объект Application.
ExcelSheet.Application.Visible = true;
//Создать в Excel таблицу умножения.
for (i=l;i<ll;i++)
{
// множители в первых двух строках.
ExcelSheet.ActiveSheet.Cells(i,l).Value = i ;
ExcelSheet.ActiveSheet.Cells(i,2).Value = 9;
//Создать строку Excel для обработки умножения,
var aString = new String("=A");
aString += i ;
aString += "*B";
aString += i ;
ExcelSheet.ActiveSheet.Cells(i,3).Value = aString;
}
// —>
</script>
JavaScript 1.1+, ECMAScript 1E+, JScript 1.0+
Nav3+, IE3+, Opera5+
arguments
arguments [индекс]
Объект Arguments представляет собой массив, содержащий все аргументы, передаваемые
в вызываемую функцию, а также другие полезные свойства. Этот объект автоматически
создается и инициализируется при вызове функции и выходит из области действия при
завершении выполнения функции. Доступ к передаваемым функции аргументам осуще-
осуществляется за счет указания параметра индекс в скобках массива. В табл. 7.7 перечислены
свойства объекта Arguments.
ПРИМЕЧАНИЕ
Для использования объекта Arguments нет необходимости указыветь
функцию через точку после слове Arguments, как можно было ожидать. Это вызвано
тем, что объвкт Arguments отличается от массиаа Function. erguments[]. связанного
с объектом Function. Использование объекте Arguments позволяет получить доступ к
аргументам функций, не имвющих имен.
Глава 7. Ядро JavaScript
Свойство
callee
caller
length
Таблица 7.7. Свойства объекта Arguments
Описание
Содержит выполняемую в настоящий момент функцию
Содержит объект Arguments вызывающей функции
Длина массива аргументов
213
В листинге 7.57 создается функция, которая выводит в окне предупреждения название
любимого блюда Пользователя. Функция вызывается в результате щелчка на кнопках. До-
Доступ к аргументам, передаваемым в функцию, осуществляется внутри функции при
помощи индексов массива.
Листинг 7.57. Использование объекта для отображения любимых блюд
<html>
<body>
Для того чтобы узнать любимое блюдо пользователя, выберите его имя!
<form>
<input type="button"
value="Мередит"
OnClick=displayFood(this,"пицца")>
<input type="button"
value="Эллисон "
OnClick=displayFood(this,"бобы")>
<input type="button"
value="БейЛей"
OnClick=displayFood(this,"морковь")>
<input type="button"
value="Майкл"
OnClick=displayFood(this,"хлеб")>
<input type="button"
value="Po6"
OnClick=displayFood(this,"хот-дог")>
</form>
<script type="text/javascript" language="JavaScript">
//Создание функции, которая отображает название любимого
//блюда пользователя
function displayFood()
//Создание строки, содержащей имя пользователя
var aString ="Любимое блюдо ";
aString +=. arguments[0].value;
//Добавление в конец строки названия любимого блюда
aString += arguments[1];
//Отображение строки в окне предупреждения
alert(aString);
/ / ~"~ ^
</script>
</body>
</html>
JavaScript 1.2+, ECMAScript 1E+, JScript 5.5+
Nav4+, IE5.5+, Opera5+
Arguments.callee
arguments.callee
j Свойство callee объекта Arguments содержит выполняемую в настоящий момент функ-
функцию. Это свойство полезно, если функция не имеет имени.
214
Часть III. Спрааочник по JavaScript
В листинге 7.58 создается функция, которая выводит в окне предупреждения название
любимого блюда пользователя. Функция вызывается при нажатии кнопок. Код выполня-
выполняемой функции выводится на экран за счет использования свойства callee.
Листинг 7.58. Использование свойства callee объекта Arguments.
<html>
Узнайте, какие функции используются при нажатии кнопок,
соответствующих любимым блюдам пользователей!
<f orm>
<input type="button"
value="Мередит"
OnClick=displayFood(this,"пицца")>
<input type="button"
value="Эллисон"
OnClick=displayFood(this,"бобы")>
<input type="button"
уа1ие="БейЛей"
OnClick=displayFood(this,"морковь")>
<input type="button"
value="Майкл"
OnClick=displayFood(this,"хлеб")>
<input type="button"
value="Po6"
OnClick=displayFood(this,"хот-дог")>
</form>
<script type="text/javascript" language="JavaScript">
//Создание функции, которая отображает название любимого
//блюда пользователя,
function displayFood()
//Создание строки, которая содержит имя пользователя,
var aString ="Любимое блюдо " ;
aString += argumenta[0].value;
//Добавление в конец строки названия любимого блюда.
aString += arguments[1];
в окне предупреждения.
//Отображение строки
alert(aString);
//Отображение на экране функции с помощью свойства callee
alert(arguments.callee.toString());
</script>
</html>
JavaScript 1.2+
Nav4+
Arguments.caller
arguments.caller
Свойство caller объекта Arguments содержит объект Arguments вызывающей функции. Если
данная функция не была вызвана из другой функции, свойство caller содержит null.
В листинге 7.59 создаются две функции. Одна выводит в окне предупреждения название
любимого блюда пользователя, а вторая отображает количество аргументов вызывающей
функции. Окно предупреждения с названием любимого блюда выводится в результате
щелчка на любой кнопке. Затем эта функция вызывает другую функцию, которая в окне
предупреждения указывает, что первой функции были переданы два аргумента.
Листинг 7.59. Использование свойства caller объекта Arguments.
<html>
Для того чтобы узнать любимое блюдо пользователя, выберите его имя!
<form>
Глава 7. Ядро JavaScript
215
<input
<input
<input
<input
<input
</form>
<script
type="button"
value="Мередит"
OnClick=displayFood(this,"пицца")>
type="button"
value="Эллисон"
OnClick=displayFood(this,"бобы")>
type="button"
value="БейЛей"
OnClick=displayFood(this, ''морковь") >
type="button"
value="Майкл"
OnClick=displayFood(this,"хлеб")>
type="button"
value="Po6"
OnClick=displayFood(this,"хот-дог")>
type="text/javascript" language="JavaScript">
//Отображение количества аргументов функции, вызвавшей данную функцию
function displayArgLength()
{
var argLengthStr = "Эта вызывающая функция содержала ";
argLengthStr += arguments.caller.length;
argLengthStr += " аргументов.";
alert(argLengthStr);
>
//Создание функции, которая отображает название любимого
//блюда пользователя.
function displayFood()
{
//Создание строки, которая содержит имя пользователя,
var aString ="Любимое блюдо "
aString += arguments[0].value;
//Добавление в конец строки названия любимого блюда.
aString += arguments[1];
//Отображение строки в окне предупреждения,
alert(aString);
displayArgLength();
</script>
</html>
JavaScript 1.1+, ECMAScript 1E+, JScript 5.5+
Nav3+, IE5.5+, Opera5+
Arguments.length
arguments.length
Свойство length объекта Arguments определяет количество аргументов, переданных в
функцию, связанную с объектом Arguments. Если в функцию передается меньше аргу-
аргументов, чем указано в ее объявлении, свойство length будет содержать количество фак-
фактически переданных аргументов. Это количество соответствует количеству элементов в
массиве аргументов, связанном с объектом Arguments.
В листинге 7.60 свойство length объекта Arguments используется для обработки любого
количества аргументов, переданных функции displayFood().
Листинг 7.60. Использование свойства length для получения доступа к элементам
объекта Arguments
<html>
Для того чтобы узнать названия любимых блюд пользователя, выберите
его имя!
<form>
d I U Часть III. Справочник по JavaScript
<input type="button" уа1ие="Мередит"
OnClick=displayFood(this,"пицца","салат","пирожные")>
<input type="button" уа1ие="Эллисон"
OnClick=displayFood(this,"бобы","картошка")>
<input type="button" уа1ие="БейЛей"
OnClick=displayFood(this,"морковь")>
<input type="button" уа1ие="Майкл"
OnClick=displayFood(this,"хлеб","бобы")>
<input type="button" value="Po6"
OnClick=displayFood(this,"хот-дог")>
</form>
<script type="text/javascript" language="JavaScript">
<! --
//Создание функции, отображающей название любимого
//блюда пользователя,
function displayFood()
{
//Создание строки, которая содержит имя пользователя.
var aString ="Любимые блюда " ;
aString += arguments[0].value;
//Добавление в конец строки названия любимого блюда.
for(var i=l; Karguments.length; i++)
{
aString += arguments[i];
aString += ", " ;
}
//Отображение строки в окне предупреждения,
alert(aString);
>
// -->
</script>
Arrav JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
' Nav3+, NES3+, IE 4+, Opera3+
var переменная = new Array ()
var переменная = new Array (int)
var переменная = new Array {aprl, ..., aprN)
Несмотря на то что массивы можно создавать с помощью базового объекта языка
JavaScri pt, тем не менее, объект Array предоставляет более простой метод создания мас-
массивов и работы с ними.
В табл. 7.8 описываются аргументы и возвращаемые значения конструкторов объекта Array.
Эти конструкторы создают новый массив и в двух случаях заполняют его аргументами,
переданными в списке параметров. Конструктор без аргументов устанавливает свойство
length равным 0.
Таблица
Тип
Аргументы
7.8. Аргументы
Параметр
int
и возвращаемые значения, связанные с объектом
Описание
Array.
Если конструктор массива содержит один аргумент,
создается массив, а значение его свойства length
устанавливается равным int.
apr1,...aprN Если список параметров конструктора массива содержит
несколько аргументов, создается массив, который
заполняется указанными аргументами. Значение свойства
length устанавливается равным количеству аргументов в
списке параметров.
Возвращаемые Конструктор возвращает созданный массив,
значения
В табл. 7.9 перечислены свойства и методы, используемые объектом Array.
Глава 7. Ядро JavaScript
217
Тип
Свойство
Методы
Таблица 7.9.
Параметр
constructor
index
input
lastlndex
length
concat()
join()
P°P()
push()
reverse()
shift()
slice()
sort()
splice()
toSource()
toStringO
unshift()
unwatch()
watch()
Свойства и методы, используемые объектом Array
Описание
Указывает функцию, которая создает прототип объекта Array.
Содержит исходную строку, с которой производится сравнение
регулярного выражения (только для чтения).
Содержит позицию регулярного выражения в строке
(только для чтения).
Содержит позицию после регулярного выражения в строке
(только для чтения).
Содержит количество элементов в массиве.
Вставляет элементы в конец массива.
Объединяет все элементы массива в одну строку.
Удаляет последний элемент массива.
Добавляет элемент в конец массива.
Изменяет порядок элементов в массиве на обратный.
Удаляет элементы в начале массива.
Возвращает подмножество массива.
Сортирует элементы массива.
Вставляет элементы в массив и удаляет элементы из массива.
Преобразует элементы в строку, заключенную в квадратные
скобки.
Преобразует элементы в строку.
Вставляет элементы в начало массива.
Прекращает слежение за свойством.
Устанавливает слежение за свойством.
В листинге 7.61 с помощью конструктора Array создается массив чисел. После создания
массива его элементы выводятся на экран с применением квадратных скобок ([]).
Листинг 7.61. Создание объекта Array и работа с его элементами.
<html>
<Ь2>Создание и использование массивов</Ь2>
<script type="text/javascript" language="JavaScript">
//Создать массив с тремя числами.
пшпАггау = new ArrayD5,67,34);
document.write("Создать массив чисел,который содержит 45,67
//Вывести на экран содержимое массива,
document.write("[0]=",numArray[0],"<br>");
document.write("[1]=",numArray[1],"<br>");
document.write("[2]=",numArray[2]);
и 34<Ьг>");
//выводит на экраи 45
//выводит на экран 67
//выводит на экраи 34
</script>
</html>
С. А О Часть III. Справочник по JavaScript
Array.COncat() JavaScript 1.2+ ECMAScript 3E+ JScript 3.0+
' x/ Nav4+, NES3+, IE 4+, Opera5+
array.concat (argl,.. . argN)
# Метод concat() вставляет элементы, содержащиеся в списке параметров, в конец суще-
существующего массива и возвращает полученный массив. Имеющиеся элементы в массиве
не изменяются. Если в списке параметров содержится объект Array, его элементы будут
внесены в массив, который вызвал этот метод.
В табл. 7.10 перечислены аргументы и возвращаемые значения метода concat().
Таблица 7.10. Аргументы и возвращаемые значения метода concatQ
Тип Параметр Описание
Аргументы arg1,...argN Список параметров метода concat() содержит один или
несколько элементов, которые необходимо вставить в конец
массива.
Возвращаемые Метод concat() возвращает исходный массив с
значения добавленными элементами.
В листинге 7.62 метод concat() используется для отображения наименований всего то-
товара, содержащегося на двух полках в бакалейно-гастрономическом магазине. Обратите
внимание на то, каким образом были объединены многомерные массивы (см. рис. 7.4).
Листинг 7.62. Использоввние методе concetO для выводе нв экрвн перечня товвров
<script type="text/javascript" language="JavaScript">
//Отображение элементов
//массива.
function displayElements(theArray)
{
//Цикл по элементам массива.
for(i=0; i<theArray.length; i++)
{
//Отображение элемента.
document.write(" - ",theArray[i] [1]," ");
document.write(theArray[i][0],"<br>");
//Создание полки в бакалейно-гастрономическом магазине,
//используя для представления товаров на полке массив,
shelfl = new Array(["apples",10],["oranges",25]);
document.write("Shelf 1 contains:<br>");
//Вывести на экран содержимое полки 1.
displayElements(shelfl) ;
//Создание второй полки,
//используя для представления товаров на полке массив.
shelf2 = new Array(["grapes",50],["bananas",3],["lemons",8])
document.write("Shelf 2 contains:<br>");
//Отображение содержимого полки 2.
displayElements (shelf2) ;
//Создание общего перечня товаров на двух полках,
//за счет объединения двух массивов в один,
inventory = shelfl.concat(shelf2);
//Отображение содержимого всех полок.
document.write("<br>The total inventory contains:<br>");
displayElements(inventory) ;
// —>
</script>
Глава 7. Ядро JavaScript
219
тода сопсаШ - Microsoft Int. . ЙШОЕЗ
Рисунок 7.4.
Создание перечня товаров,
содержащихся на двух полках в
бакалейно-гастрономическом
магазине
F(e E* View Fi "..Links" Address
Shelf lcontams.
-10 apples
- 25 oranges
Shelf 2 contains:
-50 grapes
~D
- 8 lemons
The total inventory contains:
-10 spples
- 25 oranges
- 50 grapes
-3 bananas
-8 lemons
Й)> Computer
JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
Nav3+, NES3+, IE 4+, Opera3+
Array.constructor
array.constructor
Свойство constructor объекта Array используется для создания прототипа объекта.
В листинге 7.63 показано использование свойства constructor объекта Array.
Листинг 7.63. Свойство constructor объекта Array.
<script type="text/javascript" language="JavaScript">
//Создание нового массива, используя свойство constructor.
myArray = new Array("Майк","Эрик","Ори","Джейсон","Джонатаи","Кевин") ,
if(myArray.constructor == Array){
document.write("Объект создан");
</script>
JavaScript 1.2+, JScript 3.0+
Nav4+, NES3+, IE 4+, Opera4+
Array.index
array.index
% Свойство index — это свойство только для чтения, определяющее позицию регулярного
выражения, совпадающего со строкой. Это свойство доступно только для тех объектов
Array, которые возвращаются со следующих методов, использующихся при работе с ре-
регулярными выражениями:
• RegExp.exec()
• String.match()
• String.replace()
£ В листинге 7.64 создается регулярное выражение, которое содержит строку поиска "крас-
' ный". Метод ехес() используется для поиска в строке регулярного выражения. Затем для
вывода на экран сообщения "Слово 'красный' было обнаружено в позиции 4" применя-
применяется свойство index, которое содержит позицию D) слова "красный" в строке.
Листинг 7,64. Использование свойства index для определения позиции строки поиска
<script type="text/javascript" language="JavaScript">
myReg=/красный/;
myArray = myReg.exec("Вот красный мяч.");
document.write("Слово 'красный1 было обнаружено
myArray.index);
//
позиции
</script>
220 Часть III. Справочник по JavaScript
Array input JavaScript 1.2+, JScript 3.0+
1 H Nav4+, NES3+, IE 4+. Opera4+
array.input
# Свойство input — это свойство только для чтения, содержащее строку, с которой про-
производилось сравнение регулярного выражения. Это свойство доступно только для тех
объектов Array, которые возвращаются следующими методами, использующимися при
работе с регулярными выражениями:
• RegExp.exec()
• String.match()
• String.replace()
В листинге 7.65 создается регулярное выражение, которое содержит строку поиска "крас-
"красный". Метод ехес() используется для поиска в строке регулярного выражения. Затем для
вывода на экран строки поиска применяется свойство input.
Листинг 7.65. Использование свойства input для вывода на экран регулярного
выражения.
<script type="text/javascript" language="JavaScript">
^ t — —
туЯед=/красный/;
myArray = myReg.exec("Вот красный мяч.");
document.write("Слово "красный" было обнаружено в строке •",
myArray.input, " ' ") ;
</script>
JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
array.join()
array.join(строка)
\ Метод join() преобразует все элементы массива в строки, а затем объединяет все стро-
строки в одну. Если в списке параметров присутствует аргумент, он используется для раз-
разделения элементов в строке, возвращаемой данным методом. В табл. 7.11 перечислены
аргументы и возвращаемые значения метода join().
Таблица 7.11. Аргументы и возвращаемые значения метода joinQ
Тип
Аргументы
Возвращаемые
значения
Параметр
string
Описание
Строка, которая используется для разделения элементов в
строке, возвращаемой данным методом.
Все элементы массива объединяются в одну строку
и возвращаются из метода.
В листинге 7.66 создается массив фруктов. Содержимое этого массива выводится на эк-
экран с использованием метода join(). В качестве разделителя элементов массива в строке,
выводимой на экране, используется тире.
Листинг 7.66. Использование метода joint) для вывода на экран элементов массива
<script type="text/javascript" language="JavaScript">
<!--
//Создание массива, который содержит названия трех фруктов.
fruit = new Array("Яблоко","Апельсин","Виноград");
//Преобразование элементов массива в строку
//с тире, разделяющим каждый элемент.
aString = fruit.join("-"); //aString = "Яблоко-Апельсин-Виноград"
//Отображение строки, созданной с поиощью метода join().
document.write("Массив фруктов содержит: ",aString);
// —>
</script>
Глвва 7. Ядро JavaScript С.С.Л
Array.lastlndex JavaScript 1.2+, JScript 3.0+
' Nav4+, NES3+, IE 4+
array.lastlndex
f Свойство lastlndex — это свойство только для чтения, которое содержит позицию за пос-
последним символом регулярного выражения, найденным в строке. Это свойство доступно
только для тех объектов Array, которые возвращаются следующими методами, исполь-
использующимися при работе с регулярными выражениями:
• RegExp.exec()
• String.match()
• String.repIaceO
В листинге 7.67 создается регулярное выражение, которое содержит строку поиска "крас-
"красный". Метод ехес() используется для поиска в строке регулярного выражения. Затем для
вывода на экран числа 11, которое представляет собой позицию, находящуюся за най-
найденным в строке словом "красный", применяется свойство lastlndex.
Листинг 7.67. Использование свойства lastlndex для вывода на экран позиции зв
последним символом регулярного выражения
<script type="text/javascript" language="JavaScript">
<!--
туЯед=/красный/;
myArray = myReg.exec("Это красный мяч.");
document.write("Значение свойства lastlndex равно ",
myArray.lastlndex);
// —>
</script>
Arrav Ipnnth JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
«nay.ienyui Ngv3+i NES3+i |E 4^ 0 3+
array.length
|& Свойство length содержит количество элементов в массиве. Это свойство допускает как
• считывание, так и запись. Если в свойство length записать число, которое больше ис-
исходного значения свойства, в конец массива будут добавлены новые элементы с нео-
неопределенными значениями. Если в свойство length записать число, которое меньше ис-
исходного, в конце массива удаляются элементы.
В листинге 7.68 создается массивы монет. Затем количество монет в массиве уменьшает-
уменьшается с 4 до 3 путем изменения свойства length. Поскольку последним элементом в мас-
массиве был элемент Quarter, при уменьшении свойства length этот элемент из массива
удаляется.
Листинг 7.68. Использование свойства length для уменьшения количества
элементов в массиве.
<script type="text/javascript" language="JavaScript">
//Создание массива монет.
coins = new Array("Penny","Nickel","Dime","Quarter");
x = coins.length; //переменная х содержит значение 4.
coins.length = 3 //элемент " Quarter " удален из массива.
//Вывести на экран содержимое массива.
document.write("Массив монет содержит: ", coins.join (','));
// -->
</script>
Arrav DOnh JavaScript 1.2+, ECMAScript 3E+, JScript 5.5+
J'H HW Nav4+, NES3+, IE5.5+, Opera5+
array.pop ()
\ Метод рор() "выталкивает" элементы с конца массива, удаляя последний элемент и
г уменьшая значение свойства length массива на единицу. Метод возвращает элемент, "вы-
"вытолкнутый" из массива. В табл. 7.12 представлено возвращаемое значение метода рор().
222
Тип
Возвращаемые
значения
Таблица 7.12. Аргументы
Параметр
Часть III. Справочник
и возвращаемые значения метода рор()
Описание
Метод возвращает последний элемент
по JavaScript
массива.
В листинге 7.69 создается массив страниц, который представляет пачку листов. Метод
рор() удаляет и возвращает верхний лист. После выполнения метода рор() переменная
cnrrentPaper будет содержать "Page3", а значение свойства length массива будет равно 2.
Листинг 7.69. Использование метода рор() для удаления последних элементов массива
<script type="text/javascript" language="JavaScript">
//Создание массива листов и удаление верхнего листа.
pileOfPapers = new Array("Pagel"," Page2"," РадеЗ");
currentPaper = pileOfPapers.pop(); //Изъят РадеЗ
document.write(currentPaper," изъят из пачки.");
</script>
Arrav DTOtOtVOe JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
y"H yH Nav3+, NES3+, IE 4+, Opera5+
Array.prototype.property
Щ Свойство prototype позволяет добавлять к объекту Аптау новые свойства и методы (обо-
» значенные в разделе синтаксиса как свойство/метод), которые можно будет использовать
в коде.
В листинге 7.70 свойство prototype используется для обеспечения возможности применения
для массивов метода рор(). Несмотря на то что метод рор() уже доступен, будет создан
новый метод рор(). Этот новый метод заменит первоначальный метод Аггау.рор(). Новый
метод pop() используется в конце кода для удаления элемента "Персик" из массива со-
соков. Содержимое массива flavorArray выводится на экран до, и после использования но-
нового метода рор(). Это позволяет увидеть, что элемент "Персик" был удален.
Листинг 7.70. Создание нового метода для объекта Array
с помощью свойства prototype
<script type="text/javascript" language="JavaScript">
//Эта функция удаляет последний элемент массива. Этот последний
//элемент является возвращаемым значением функции,
function pop()
if(this.length != 0)
var lastElement = this[this.length-1]; //Получение доступа к
//последнему элементу,
this.length = this.length-1; //Удаление последнего
//элемента из массива,
return(lastElement); //Возврат последнего элемент.
//Сделать функцию *>ор() доступной для всех объектов Array.
//Этот метод заменит метод рор() объекта Array браузера Netscape.
Array.prototype.pop = pop;
//Создание массива соков.
var flavorArray = new Array("Клубника","Голубика","Персик");
//Вывести на экран содержимое массива соков,
document.write("Масив соков содержит: ");
document.write(flavorArray.join(', '),"<br>");
Глава 7. Ядро JavaScript 223
//Удалить из массива соков элемент "Персик".
var removedElement = flavorArray.pop();
document.write(removedElement," был удален из массива соков.<br>");
//Отображение содержимого массива соков после применения метода рор()
document.write("The flavor array now contains: ");
document.write(flavorArray.join(', '),"<br>");
// —>
</script>
дггяи nnch/l JavaScript 1.2+, ECMAScript 3E+, JScript 5.5+
Array.pusny Nav4+ nesk+ |E5 5+ ь•
array.push (aprl,. .. aprN)
f Метод push() "заталкивает" элементы, указанные в списке параметров, в конец масси-
массива в том же порядке, в котором элементы перечислены в списке. В табл. 7.13 приведены
аргументы и возвращаемые значения метода push().
Таблица 7.13. Аргументы и возвращаемые значения метода push()
Тип Параметр Описание
Аргументы apr1,...aprN Один или несколько элементов, которые необходимо
добавить в конец массива
Возвращаемые Последний вставленный в массив элемент -
значения последний элемент в списке параметров
В листинге 7.71 создается массив страниц, который представляет пачку листов. Метод
push() вставляет в массив еще два листа. После выполнения метода push() переменная
currentPaper будет содержать "Page4", а значение свойства length массива будет равно 4.
Листинг 7.71. Использование метода push() для вставки элементов в конец массива.
<script type="text/javascript" language="JavaScript">
<!--
//Создание массива листов.
pileOfPapers = new Array("Pagel"," Page2");
//Вставка в конец массива двух листов.
currentPaper = pileOfPapers.push("РадеЗ"," Paged");
//Отображение содержимого пачки листов.
document.write("В пачке ", pileOfPapers.join (','), ".");
// —>
</script>
Array.reversef) ,a»,st,ip,
array.reverse()
Метод reverse() обращает порядок следования элементов массива.
В листинге 7.72 создается массив, который представляет очередь. Метод reverse() исполь-
зуется для обращения порядка следования элементов массива. Таким образом, "Полли"
станет первым элементом, "Лесли" — вторым, а "Черил" — последним, третьим элемен-
элементом.
Листинг 7.72. Обращение порядка следования элементов массива с помощью
метода reversed
<script type="text/javascript" language="JavaScript">
<!--
//Создание массива имен персон, стоящих в очереди в
//бакалейно-гастрономический магазин.
lineOfPeople = new Array("Черил","Лесли","Полли");
lineOfPeople.reverse(); //Обращение порядка следования
//элементов в массиве.
224 Часть III. Справочник по JavaScript
//Отображение имен, содержащихся в массиве.
//Обратите внимание, что порядок следования элементов был обращен.
document.write("lineOfPeople[0]=",lineOfPeople[0],"<br>");
document.write("lineOfPeople[1]=",lineOfPeople[1],"<br>");
document.write("lineOfPeople[2]=",lineOfPeople[2],"<br>");
// -->
</script>
Array.Shift() JavaScript 1.2+ ECMAScript 3E+ JScrlpt 5.5+
' v/ Nav4+, NES3+, IE5.5+, Opera5+
array.shift()
йс& Метод shift() удаляет из массива и возвращает первый элемент. После удаления перво-
«" го элемента оставшиеся элементы перемешаются в начало массива. Таким образом, эле-
элемент, который был в массиве вторым, становится первым. В табл. 7.14 показано возвра-
возвращаемое значение метода shift().
Таблица 7.14. Возвращаемое значение метода shift()
Тип Параметр Описание
Возвращаемое Матод возвращает элемент массива,, который
значение занимал первую позицию до выполнения метода shift()
В листинге 7.73 создается массив персон, ожидающих освобождения столика в рестора-
ресторане. Метод shift() берет из массива первое имя и перемещает все остальные имена на одну
позицию вперед. После выполнения метода shift() переменная personToSeat будет содер-
содержать элемент "Кент". Элемент "Джон" переместился в позицию lineOfPeople[0], а элемент
"Джереми" — в позицию lineOfPeople[l].
Листинг 7.73, Удаление первого элемента массива с помощью метода shift()
<script type="text/javascript" language="JavaScript">
//Создание массива персон, ожидающих освобождения столика в ресторане
lineOfPeople = new Array("Кент","Джон","Джереии");
personToSeat = lineOfPeople.shift(); //Элемент Кент изымается
//hs массива.
//Отображение имени персоны, которое было удалено hs массива,
document.write("Пожалуйста, садитесь, ",personToSeat,"<br>");
//Вывести на экран имен персон, оставшихся в массиве,
document.write("Персоны, ожидающие освобождения столика: ",
lineOfPeople.join(', '));
// -->
</script>
JavaScript 1.2+, ECMAScript 3E+, JScript 3.0+
N4 шг O
array.slice (старт)
array, slice (старт, стоп)
Й5& Метод slice() возвращает новый массив, который содержит элементы исходного массива,
«■ начиная с элемента, имеющего номер cmapm, и заканчивая элементом с номером стоп. Если
параметр стоп не указан, новый массив будет содержать элементы исходного массива, на-
начиная с элемента с номером старт и до конца массива. В табл. 7.15 приведены аргументы
и возвращаемые значения метода slice().
Таблица 7.15. Аргументы и возвращаемые значения метода slice()
Тип Параметр Описание
Аргументы старт Позиция, с которой будет начинаться новый массив. Для
задания позиции с конца массива можно использовать
отрицательные числа. Например, -1 - последний элемент
массива, -2 - предпоследний.
Глава 7. Ядро JavaScript
Тип Параметр
стоп
Возвращаемые
значения
225
Описание
Позиция, где будет заканчиваться новый массив. Как и в
случае с параметром старт, параметр стоп может быть
отрицательным.
Метод возвращает новый массив, который содержит
элементы исходного массива с номерами, задаваемыми
параметрами старт и стоп.
В листинге 7.74 создается массив чисел. С помощью метода slice() из этого массива со-
создается новый массив. После выполнения метода slice() массив newNumArray содержит
элементы 23 и 759.
Листинг 7.74. Выделение из массива подмассива с помощью метода sliced
<script type="text/javascript" language="JavaScript">
<! —
//Создание массива иэ четырех чисел и вывести на экран его содержимое
numArray = new ArrayC45,23,759,5) ;
document.write("numArray содержит числа:",numArray.join(', '),"<br>");
//Создание нового массива, представляющий собой подмассив
//исходного массива.
newNumArray = numArray.slice A,3) ; //новый массив содержит [23,759]
//Отображение содержимого нового массива,
document.write("newNumArray содержит числа: ",
newNumArray.join(', '),"<br>");
// —>
</script>
Arrav SortH JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
J w Nav3+, NES3+, IE 4+, Opera5+
array.sort()
array.sort (функция)
Метод sort() сортирует элементы массива. В табл. 7.16 приведен аргумент метода sort().
Если метод используется без параметров, JavaScript пытается преобразовать все элемен-
элементы массива в строки и отсортировать их в алфавитном порядке. Если массив необходи-
необходимо отсортировать в другом порядке, необходимо задать параметр функция, которая бу-
будет реализовывать алгоритм сортировки.
Тип
Аргумент
Таблица 7.16.
Параметр
функция
Аргумент, связанный с методом
Описание
Функция, выполняющая
sort()
сортировку массива.
Как упоминалось ранее, если необходимо отсортировать массив не в алфавитном поряд-
порядке, потребуется задать параметр функция, которая будет реализовывать алгоритм сорти-
сортировки. Эта функция должна быть написана с учетом следующих правил:
• Функция должна использовать два аргумента и производить их сравнение.
• Функция должна возвращать число, которое указывает взаимный порядок двух аргу-
аргументов функции.
• Если в отсортированном массиве первый аргумент должен находиться впереди вто-
второго аргумента, необходимо, чтобы функция возвращала отрицательное число.
• Если в отсортированном массиве первый аргумент должен находиться позади второ-
второго аргумента, необходимо, чтобы функция возвращала положительное число.
• Если аргументы равны, функция должна возвращать значение 0.
226
Часть III. Справочник по JavaScript
Если функция, заданная в методе sort(), воз-
возвращает 0, указывая что аргументы равны,
после вызова функции аргументы сохраняют
свое положение в массиве друг относительно
друга.
Сортировка массива - Microsoft internet Explore! ЯЩЦл I
Перед использованием метода sort массив содержит:
Позиция 0 = треугольник
Позшдая 1 = прямоугольник
Позшдая 2 = квадрат
После метода з
Позиция 0 = квадрат
Позиция 1 = треугольник
Позиция 2 = прякоугмьнкк
Рисунок 7.5, Сортировка элементов
массива по количеству символов
С целью получения более глубокого представ-
представления о принципах работы метода sort() в
листинге 7.75 показано, каким образом можно
использовать данный метод для сортировки,
основанной на количестве символов каждого
аргумента. Обратите внимание на то, как из-
изменяется порядок следования элементов в
массиве (см. рис. 7.5).
Листинг 7.75. Сортировка массива,
основанная на длине аргументов
<script type="text/javascript" language="JavaScript">
<! --
//Отображение содержимое массива.
function contentsOfArray(theArray)
{
document.write("массив содержит:<br>");
//Цикл по элементам массива.
= ",theArray[i],"<br>")
f5 Mj>Computer
J
for(i=0; i<theArray.length;
{
document.write("Позиция ",i,
//Сортировка аргументов по их длине,
function sortOnArgLen(argl,arg2)
if (argl.length < arg2.length)
return -1;
if(argl.length > arg2.length)
return 1 ;
if (argl.length == arg2.length)
return 0;
//Создание массива фигур и отображение его содержимого,
shapes = new Array("треугольник","прямоугольник","квадрат")
document.write("Перед использованием метода sort ");
contentsOfArray(shapes);
//Сортировка массива.
shapes.sort(sortOnArgLen) ;
document.write("<Ьг>После метода sort ");
contentsOfArray(shapes);
</script>
Array.splice()
JavaScript 1.2+, ECMAScript 3E+, JScript 5.5+
Nav4+, IE5.5+, Opera5+
array.splice(старт,удалить,аргЗ,...,aprN)
Метод splice() позволяет вставлять элементы в массив, а также удалять элементы из
массива. Если параметр удалить не равен нулю, из массива удаляются элементы, начи-
начиная с позиции старт и заканчивая позицией старт+удалить. Если параметр удалит
равен нулю, элементы из массива не удаляются. Если параметр удалить не указан, и
массива удаляются все элементы, начиная с позиции старт. Если за параметром удалит
указаны аргументы, они вставляются в массив, начиная с позиции старт. Существующие
элементы перемещаются к концу списка, освобождая место для новых элементов.
Глава 7. Ядро JavaScript
227
В Navigator 4 содержалась ошибка, которая приводила к тому, что из
массива удалялся только один элемент. Вмасто возврата массива, который содержал
удаленный элемент, метод возврещап сам элемент. Кроме того, если из массива не
удалялись элементы, вместо пустого массива метод возвращал null.
В табл. 7.17 перечислены аргументы и возвращаемые значения метода spHce().
Таблица 7.17. Аргументы и возвращаемые значения метода splice()
Тип
Параметр Описание
Аргументы старт Позиция, с которой начинается изменение массива.
удалить Количество элементов, которые будут удалены из массива,
начиная с позиции, заданной аргументом старт.
apr3,...,aprN Новый массив элементов, которые будут вставлены в
массив, начиная с позиции, заданной аргументом старт.
Возвращаемые
значения
Если из массива удаляются элементы, метод возвращает
эти элементы в виде массива.
Для более глубокого понимания принци-
принципа работы метода spliceQ в листинге
7.76 показано использование удаления и
вставки элементов в массив на примере
имитации заказа блюд в ресторане. Обра-
Обратите внимание как после того, как по-
покупатель передумал, гамбургер был заме-
заменен на хот-дог (см. рис. 7.6).
Листинг 7.76. Использование метода
spliced с целью имитации заказа
блюд в ресторане
<script type="text/javascript"
1anguage="JavaScrip t">
//Отображение текущего захаза.
function printOrder(theArray)
document.write("Текущий
wsaxa3:<br>") ;
//Цикл по элементам массива.
for(i=0; i<theArray.length; i
pte
6°
Начальный тлкш принят
Текущий заказ
- гамбургер
- картофель фри
- иапиток
Пок>т1ат«ль вместо гам»ург«гя чахотел хот-дог.
Текущий заказ'
- хот-дог
- картофель фри
-иапиток
rf -#■■
-Л-
Рисунок 7.Б. Изменение заказа с помощью
метода spliceQ
document.write("- ",theArray[i],"<br>") ;
//Создание захаза и его отображение на экране.
foodOrder = new Array("гамбургер","картофель фри"
document.write("<ЬЗ>Начальный saxas принят</ЬЗ>");
printOrder(foodOrder);
//Заменить гамбургер хот-догом.
foodOrder.splice@,1,"хот-дог");
document.write("<ЬЗ>Покупатель вместо гамбургера
document.write("захотел хот-дог.</h3>");
//Вывод на печать нового saxasa.
printOrder(foodOrder);
// -->
</script>
"напиток");
Array.toSource()
array.toSource()
JavaScript1.3+, JScript3.0
Nav4.06+, IE4
С. С. О Часть III. Справочник по JavaScript
# Метод toSource() возвращает одну строку, представляющую собой источник объекта
Array. Возвращаемая строка содержит все элементы массива, разделенные запятыми. Чтобы
указать, что данная строка является массивом, она заключена в квадратные скобки ([]).
Если внутри данного массива содержится еще один массив, в строке будет представле-
представлено и его содержимое, заключенное в свои квадратные скобки.
В листинге 7.77 создается массив цветов и массив чисел. Массив чисел входит в массив
цветов. Для создания строки источника массива цветов используется метод toSource().
["Синий", "Зеленый", "Красный", [3, 6, 7]]
Листинг 7.77. Создание источника массива с помощью матода toSource()
<script type="text/javascript" language="JavaScript">
<!--
//Создание массива чисел.
numbers = new ArrayC,6,7);
//Создание массива цветов и подмассива чисел.
colors = new Array("Синий","Зеленый","Красный",numbers);
//Отображение на экране в одной строке содержимого массива,
astring = colors.toSourсе(); // Создание на базе содержимого
//массива строки.
document.write(aString); // Отображение строки на экран.
// -->
</script>
Array.t0String() JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
' ' Nav3+, IE 4+, Opera5+
array.toString()
Метод toStringO возвращает одну строку, содержащую все элементы массива, разделен-
разделенные запятыми. Может возникнуть вопрос, зачем нужен этот метод, если то же самое и
даже больше можно сделать с помощью метода join(). Дело в том, что JavaScript исполь-
использует метод toStringO для автоматического преобразования массива в строку, в случае если
массив используется в качестве строки.
ПРЕДУПРЕЖДЕНИЕ
В версии JavaScript 1.2 элементы в строке не разделяются
запятыми. Вместо этого кеждый элемент заключается в квадратные скобки.
В табл. 7.18 приведено возвращаемое значение метода toString().
Таблица 7.18. Возвращаемое значение метода toStringO
Тип Параметр Описание
Возвращаемое Строка, содержащая все элементы массива,
значение
В листинге 7.78 создается массив цветов, а затем для преобразования содержимого мас-
массива в строку, которая выводится в окне браузера, применяется метод toString().
Листинг 7.78. Использование метода toStringO объекта Array
<script type="text/javascript" language="JavaScript">
< !--
//Создание массива цветов.
colors = new Array("Синий","Зеленый","Красный");
//Представление содержимого массива в виде строки,
document.write(colors.toString() ) ; //Возвращается
//"Синий,Зеленый,Красный"
// -->
</script>
Глава 7. Ядро JavaScript 229
Arrav iincthiftM JavaScript 1.2+, ECMAScript 3E+, JScript 5.5+
y U Nav4+, NES3+, Opera5+
array.unshift(aprl,...aprN)
f Метод unshift() добавляет аргументы, приведенные в списке параметров, в начало масси-
массива. Существующие элементы перемещаются в конец массива, освобождая место под новые
элементы. В табл. 7.19 перечислены аргументы и возвращаемые значения метода unshift().
Таблица 7.19. Аргументы и возвращаемые значения метода unshift()
Тин Параметр Описание
Аргументы apr1,...aprN Элементы, вставляемые в массив
Возвращаемые Длина массива после вставки новых элементов
значения
В листинге 7.79 создается массив школьных классов. С помощью метода unshift() в на-
начало массива вставляются два новых класса — 100 и 93. После выполнения метода
unshift() массив grades будет содержать элементы [100,93,95,87], а параметр newLength
будет содержать новую длину массива — 4.
Листинг 7.79. Вставка элементов в начало массива с помощью метода unshiftO
<script type="text/javascript" language="JavaScript">
//Создание массива школьных классов.
grades = new Array(95,87) ;
//Вставка в массив двух новых класса.
newLength = grades.unshiftA00,93);
//Отображение содержащихся в массиве классов.
for(i=0; i<newLength;
document.write("Классы[",i,"]=",grades[i],"<br>");
</script>
Array.unwatch()
Array.unwatch (свойство)
Метод unwatch() объекта Array используется для прекращения слежения за свойством,
указанным в параметре свойство.
j В листинге 7.80 показано применение метода unwatch() для прекращения слежения за
' указанным пользователем свойством р.
Листинг 7.80. Пример использования метода unwatchO объекта Array
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln("myArray." + id + " изменено с "+ oldValue + " на ") ;
document.writeln(newValue + "<br>");
return newValue;
var myArray = new Array () ;
Array, prototype, p = 1,"
myArray.watch("p",alertme);
myArray.p = 2;
myArray.unwatch("p" ) ;
myArray.p = 3;
myArray.watch("p",alertme);
myArray.p = 4;
</script>
с. oU Часть III. Справочник по JavaScript
Array.valueOfO
array.valueOf ()
Метод valueOf() возвращает элементарное значение объекта. В случае с объектом Array
метод valueOf() возвращает элементы массива, разделенные запятыми. Если в массиве
содержится подмассив, при использовании этого метода возвращаются как элементы
массива, так и элементы подмассива.
В листинге 7.81 создается массив цветов и массив чисел. Массив чисел является подмас-
сивом массива цветов. Поскольку метод valueOf() возвращает все элементы массива, в
окне браузера выводится строка "Blue,Green,Red,3,6,7".
Листинг 7.81. Использование метода valueOfl) для вывода значения объекта Array
<script type="text/javascript" language="JavaScript">
<!--
//Создание массива чисел.
numbers = new ArrayC,6,7);
//Создание массива цветов и подмассива чисел.
colors = new Array("Синий","Зеленый","Красный",numbers);
//Отображение элементарного значения массива.
document.write(colors.valueOf()); //Отображение элементов массива.
// -->
</script>
Array.watch(property,function)
Метод watch() объекта Array используется для включения слежения за свойством, за-
заданным параметром property. При изменении параметра свойство после вызова метода
watch() вызывается функция, заданная параметром функция.
В листинге 7.82 показано использование метода watch() для включения слежения за ука-
указанным пользователем свойством р.
Листинг 7.82. Пример использования метода watch!) объекта Array
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document, writeln ("myArray. " + id + "изменилось с" + oldValue + "на");
document.writeln(newValue + "<br>");
return newValue;
}
var myArray = new Array () ;
Array.prototype.p = 1 ;
myArray.watch("p",alertme);
myArray.p = 2;
// —>
</script>
Automation JScrlpt?«+
IE4+
Объект ядра JScript
# Объекты автоматизации — это объекты, которые связаны с другими приложениями или
инструментальными средствами через интерфейсы автоматизации. Такие объекты позво-
позволяют пользователям JScript получить доступ к свойствам и методам приложений из кода
JScript.Подробное описание использования объектов автоматизации приведено в описа-
описании ActiveXObject() и GetObject().
\Л Примеры использования объектов автоматизации приведены в описании ActiveXObject()
Р* и GetObject().
Главв 7. Ядро JeveScript
231
JavaScript1.2, ECMAScript 2E+, JScript 5+
Nav4+, NES3+, IE5+, Opera5+
boolean
Зарезервированное ключевое слово
& В настоящее время ключевое слово boolean не реализовано в серверной части языка
• JavaScript, однако оно зарезервировано для будущего использования. Обратите внимание,
что ключевое слово boolean не идентично объекту Boolean.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
Boolean JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
Nav3+, NES3+, IE 4+, Opera5+
var variable = new Boolean(значение)
var variable = Boolean(значение)
\ Объект Boolean — это объект-оболочка для элементарного булева значения, который пре-
предоставляет метод для преобразования значения в строку. Булево значение может быть либо
true, либо false. В языке JavaScript для представления значения true используется число
1, а для представления значения false — 0, но существует специальный метод toString(),
который возвращает строки "true" или "false".
Объект Boolean создается с помощью конструктора Boolean() и оператора new или с
помощью функции Boolean(). Аргумент, возвращаемое значение и метод объекта Boolean
перечислены в табл. 7.20.
Таблица 7.20, Аргумент, возвращаемое значение, свойства и методы объекта Boolean
Тип
Параметр Описание
Аргумент
value
Значение, которое необходимо преобразовать в булево
значение и сохранить в объекте. Значения null, NaN, ""
(пустая строка) и 0 (нуль) преобразуются в false. Все другие
значения (включая строку "false") преобразуются в true.
Возвращаемые
значения
Если используется оператор new, возвращается объект
Boolean. Если используется функция Boolean(),
возвращается элементарное булево значение.
Свойства constructor Задает функцию, которая создает прототип объекта
Boolean.
prototype Определяет прототип данного класса.
Методы toSource Возвращает объект Boolean в виде строки.
toString() Этот метод возвращает элементарное булево значение,
хранящееся в объекте Boolean. Если объект содержит
значение true, возвращается строка "true", если объект
содержит значение false, возвращается строка "false".
unwatch() Прекращает слежение за свойством.
valueOf() Возвращает содержащееся в объекте булево значение.
watch Устанавливает слежение за свойством.
и* В листинге 7.83 создается объект Boolean и элементарное булево значение. При изучении
г результата работы кода (см. рис. 7.7) необходимо отметить два основных момента. Во-пер-
Во-первых, конструктор Boolean() преобразует строку "false" в булево значение true. Во-вторых,
boolObj — это объект Boolean, a boolVal — просто переменная, которая содержит элемен-
элементарное булево значение.
£#
So £ommuracatot
'исунок 7.7.
равнение объекта Boolean и
жментарного булева значения
boolObj = true [object]
boolVal = false [boolean]
С 3 С Часть III. Справочник по JavaScript
Листинг 7.83. Сравнение объекта Boolean и элементарного булевого значения
<script type="text/javascript" language="JavaScript">
//Создание объекта Boolean.
boolObj = new Boolean("false");
document.write("boolObj = ",boolObj); //Отображение значения true.
document.write(" [",typeof boolObj,"]<br>"); //Отображение объекта.
//Создание элементарного булева значения.
boolVal = Boolean(false) ;
document.write("boolVal = ",boolVal);// Отображение значения false.
document.write(" [",typeof boolVal,"]");//Отображение булева значения
</script>
Boolean.constructor JavaScript 1.1+ ECMAScript 1E+. JScript 3.0+
Nav3+, NES3+, IE 4+, Opera3+
Boolean.constructor
f Свойство constructor объекта Boolean используется для создания прототипа объекта.
В листинге 7.84 показано использование свойства constructor объекта Boolean.
Листинг 7.84. Свойство constructor объекта Boolean
<script type="text/javascript" language="JavaScript">
//Создание нового объекта Boolean, используя свойство constructor.
myBoolean = new Boolean(true);
if(myBoolean.constructor == Boolean){
document.write("Объект создан");
</script>
Boolean.nrOtOtVDe JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
K 1V Nav3+, IE 4+, Opera5+
Boolean.prototype.свойство
Boolean.prototype.метод
# Свойство prototype позволяет добавлять к объекту Boolean новые свойства и методы,
которые можно будет использовать в коде.
В листинге 7.85 свойство prototype используется для создания нового метода letter(), ко-
который могут использовать все объекты Boolean. Метод letter() использует функцию
letterBoolean(), которая в зависимости от содержимого объекта возвращает значение true
или false.
Листинг 7.85. Добавление нового метода к объекту Boolean с помощью
свойства prototype
<script type="text/javascript" language="JavaScript">
//Эта функция возвращает строку "Т" ил "F" в зависимости от значения,
//содержащегося в объекте Boolean, который использует эту функцию,
function letterBoolean ()
if (this == true) return("T");
else return ("F") ;
//Сделать функцию letterBoolean доступной для всех объектов Boolean.
Boolean.prototype.letter = letterBoolean;
// Создать объект Boolean, содержащий значение true.
var myBooleanObj = new Boolean(true); // Значение объекта
// myBooleanObj равно true.
// Отображение содержимого объекта Boolean, используя метод letter.
document.write("myBooleanObj равен ",myBooleanObj.letter());
//Возвращается строка "Т"
</script>
Главе 7. Ядро JavaScript cuu
Boolean.toSource() JavaScrlpt1.3+. JScripU.O
x/ Nav4.06+, IE4
boolean.toSource()
f Метод toSource() возвращает одну строку, представляющую собой источник объекта
Boolean. Возвращаемая строка заключается в круглые скобки.
В листинге 7.86 создается объект Boolean со значением true. Затем для получения строки
источника "(new Boolean(true))" используется метод toSource().
Листинг 7.86. Использование метода toSource() объекта Boolean
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Boolean со значением true.
bool = new Boolean A) ;
// Отображение источника объекта Boolean.
document.write(bool.toSource());
// -->
</script>
Boolean.toString() JavaScript 1.1+, ECMAScrlpt 1E+. JScript 3.0+
э" Nav3+, IE 4+, Opera5+
boolean.toString()
Ж» Метод toStringO возвращает элементарное булево значение объекта Boolean в строковом
• представлении ("true" или "false"). Возвращаемое значение метода toStringO представлено
в табл. 7.21.
Таблица 7.21. Возвращаемое значение метода toStringO
Тип Описание
Возвращаемое Если объект Boolean содержит значение true, возвращается строка "true",
значение Если объект содержит значение false, возвращается строка "false".
В листинге 7.87 метод toStringO используется для выполнения операции сравнения строк,
а не булевых значений. Без применения метода toStringO оператор if определил бы, что
булево значение не равно строке.
Листинг 7.87. Выполнения сравнения строк с помощью метода toStringO
объекта Boolean
<script type="text/javascript" language="JavaScript">
<!--
//Создание объекта Boolean, который содержит булево значение "false".
boolObj = new Boolean(false);
//Преобразование объекта boolObj в строку "false"
//перед сравлнением объекта со строкой "false".
if(boolObj.toString() == "false") // Результат сравнения дает true.
alert("РАВНО"); // Отобразить сообщение "РАВНО",
else
alert("HE равно");
// -->
</script>
Boolean.unwatch()
Boolean.unwatch (свойство)
Метод unwatch() объекта Boolean используется для прекращения слежения за свойством,
указанным в параметре свойство.
$ В листинге 7.88 показано использование метода unwatch() для прекращения слежения за
указанным пользователем свойством р.
Листинг 7.88. Пример использования метода unwatchf) объекта Boolean
<script type="text/javascript" language="JavaScript">
Часть III. Справочник по JavaScript
function alertme(id,oldValue,newValue)
document.writeln("myBoolean." + id + " изменисоль с "
+ oldValue + " на ") ;
document.writeln(newValue + "<br>");
return newValue;
var myBoolean = new Boolean();
Boolean.prototype.p = 1 ;
myBoolean.watch("p",alertme);
myBoolean.p = 2;
myBoolean.unwatch ( "p") ;
myBoolean.p = 3;
myBoolean.watch("p",alertme);
myBoolean.p = 4;
</script>
Boolean.ValueOfO JavaScript1.1+, ECMAScript 1E+, JScript3.0+
Nav3+, NES2+, IE4+, Opera3+
boolean.valueOf()
& Метод valueOf() возвращает элементарное значение объекта. В случае с объектом Boolean
этот метод возвращает содержащееся в объекте булево значение.
В листинге 7.89 создается объект Boolean со значением true. Поскольку метод valueOf()
возвращает булево значение объекта, в окне браузера выводится строка "true".
Листинг 7.89. Использование метода valueOfO Для определения значения
объекта Boolean
<script type="text/javascript" language="JavaScript">
// Создание объекта Boolean со значением true.
bool = new Boolean A) ;
// Отображение источника объекта Boolean,
document.write(bool.valueOf());
</script>
Boolean.watch() JaJaSfipL1cL+
x/ Nav4+, NES3+
Boolean.watch (свойство, функция)
k Метод watchQ объекта Boolean используется для включения слежения за свойством, за-
заданным параметром свойство. При изменении параметра свойство после вызова метода
watch() вызывается функция, заданная параметром функция.
В листинге 7.90 показано использование метода watch() для включения слежения за ука-
указанным пользователем свойством р.
Листинг 7.90. использования метода watchf) объекта Boolean
<script type="text/javascript" languages"JavaScript">
function alertme(id,oldValue,newValue)
document.writeln("myBoolean." + id + " изменисоль с "
+ oldValue + " на ");
document.writeln(newValue + "<br>");
return newValue;
var myBoolean = new Boolean();
Boolean.prototype.p = 1;
myBoolean.watch("p",alertme);
myBoolean.p = 2;
</script>
Глава 7. Ядро JavaScript
235
JavaScript 1.1+, ECMAScript 1E+, JScript 1.0+
Nav3+, IE 3+, Opera3+
break
break метка;
f Ключевое слово break позволяет преждевременно выходить из циклов и условного опе-
оператора switch. В большинстве случаев слово break применяется без метки, но в некото-
некоторых случаях может применяться метка (см. табл, 7.22), При использовании метки выпол-
выполнение кода прерывается и выходит из цикла, обозначенного параметром метка. Для
вставки метки необходимо указать имя метки с двоеточием (:) перед кодом, из кото-
которого необходимо выйти при выполнении.
Таблица 7.22. Аргумент ключевого слова break
Тип
Параметр Описание
Аргумент метка
Метка, задающая код, из которого необходимо выйти.
В листинге 7.91 показано применение меток и операторов break при использовании вло-
вложенных циклов. Результат исполнения кода показан на рис. 7.8.
Листинг 7.91. Использование операторов break и меток
<script type="text/javascript" language="JavaScript">
//Выполнить внешний цикл 4 раза.
forLoopl:
for (var counterl = 1; counterl <= 5; counterl++)
<
//Выполнить внутренний цикл 4 раза для каждого прохода
//по внешнему циклу.
for (var counter2 = 1; counter2 <= 5; counter2++)
{
//Вывести на экран значения счетчиков циклов,
document.write("Counterl=",counterl);
document.write(" Counter2=",counter2,"<br>");
//Выйти из внутреннего цикла после 3 проходов
//по внутреннему циклу,
if (counter2 == 3)
break;
//Выйти из внешнего цикла после 3 проходов по внешнему циклу,
if (counterl == 3)
break forLoopl;
document.write("Выполнено!");
//-->
</script>
byte
Зарезервированное ключевое слово
Рисунок 7,8.
Использование меток и
операторов break во
вложенных циклах
JavaScript1.2+, ECMAScript 2E+, JScript 5+
Nav4+, NES3+, IE5+, Opera5+
|Й£НЫ«?а(в. .■■■>■*■■■'•■'■■"*"'"■■■■ •■:■ ' ''■ '.- \ '
Counterl^l Couiiter2:=:l
Counterl=l Counter2=2
Counterl=l Counter2=3
■ Counter 1=2 Counter2=l
Counterl=2 Counter2=2
Couotcrl=2 Counter2=3
Counterl=3 Counter2=l
Выполнено!
-ai" ~b^ Document Dor ^/ *^t _^
ЯШБ31
4
2 О и Часть III. Справочник по JavaScript
#В настоящее время ключевое слово byte не реализовано в серверной части языка
JavaScript, однако оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
сясо JavaScript1.2+, ECMAScript 2E+, JScript3.0+
Nav4+, NES3+, IE4+, Opera5+
Зарезервированное ключевое слово
i В настоящее время ключевое слово case не реализовано в серверной части языка
JavaScript, однако оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
JavaScript1.2+, ECMAScript 2E+, JScript 5+
Nav4+, NES2+, IE5+, Opera5+
Зарезервированное ключевое слово
; В настоящее время ключевое слово char не реализовано в серверной части языка
JavaScript, однако оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
dass JavaScript1.2+, ECMAScript 1E+, JScript3.0+
Nav4+, NES3+, IE4+, Opera5+
Зарезервированное ключевое слово
[ В настоящее время ключевое слово class не реализовано в языке JavaScript, однако оно
зарезервировано для будущего использования.
Пример использования ключевого слова class не приводится, поскольку оно зарезерви-
зарезервировано для будущего использования.
COnst JavaScript1.2, ECMAScript 1E+, JScript 5+
Nav4+, NES3+, IE5+, Opera5+
Зарезервированное ключевое слово
> В настоящее время ключевое слово const не реализовано в языке JavaScript, однако оно
зарезервировано для будущего использования.
Пример использования ключевого слова const не приводится, поскольку оно зарезерви-
зарезервировано для будущего использования.
rnntinup JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
Nav3+, IE 4+, Opera3+
continue
# Оператор continue инициирует выполнение цикла с его начала. Как правило, оператор
continue используется без метки, но в некоторых случаях за оператором может следовать
метка (см. табл. 7.23). При использовании метки выполнение кода продолжается с нача-
начала цикла, обозначенного меткой.
Таблица 7.23. Аргумент ключевого слова continue
Тип Параметр Описание
Аргумент метка Метка, обозначающая цикл, с которого необходимо продолжить
выполнение кода.
Начало цикла может варьироваться в зависимости от типа цикла. В табл. 7.24 указано мес-
место, с которого продолжается выполнение кода при использовании ключевого слова continue.
Глава 7. Ядро
Тип цикла
for
while
do...while
for...in
JavaScript
Таблица 7.24. Переходы при использовании оператора continue
Переход
Выражение в скобках,
Выражение в скобках,
Выражение в скобках,
Следующее свойство
следующее за ключевым словом for
следующее за ключевым словом while
следующее за ключевым словом while
текущего объекта
УЗ/
ПРЕДУПРЕЖДЕНИЕ
В Navigator 4 имеется ошибка, которая приаодит к тому, что
выражение а скобках после кпючеаого споаа while а цикпе do...while при переходе к
нему с помощью оператора continue не выполняется. Выполнение кода начинается с
начала цикла. Указанной проблемы можно избежать за счет испопьзоаания цикла while.
Для вставки метки необходимо перед кодом, с которого будет продолжено выполнение,
указать имя метки с двоеточием (:).
В листинге 7.92 показано использование меток и оператора continue. Этот пример доста-
достаточно сложен, поэтому для начала сравните код, приведенный в листинге 7.79, с ре-
результирующим окном, показанным на рис. 7.9. Обратите внимание, что фраза "Конец
внутреннего цикла" не была выведена на экран после фразы "Продолжить с начала внут-
внутреннего цикла.", поскольку выполнение кода продолжилось с начала внутреннего цикла. При
использовании оператора continue с меткой выполнение кода продолжается с цикла, обо-
обозначенного меткой outerLoop.
Листинг 7.92. Использование оператора continue.
<script type="text/javascript" language="JavaScript">
//Выполнить дважды цикл outerLoop
outerLoop:
for (var counterl = 1; counterl <= 2; counterl++)
document.write("Начало внешнего цикла.<br>");
//Выполнить дважды цикл innerLoop
innerLoop:
for (var counter2 = 1; counter2 <= 2; counter2++)
//Вывести на экран значения счетчиков каждого цикла
document.write("Начало внутреннего цикла.<Ьг>");
document.write("Counterl=",counterl,"<br>");
document.write("Counter2=",counter2,"<br>");
//Если цикл innerLoop выполняется второй раз,
//завершить выполнение и перейти к началу цикла innerLoop
if (counter2 == 2)
document.write("Продолжить с начала
*♦ внутреннего цикла.<Ьг>");
continue;
//Если цикл outerLoop выполняется второй раз,
//завершить выполнение и перейти к началу цикла outerLoop
if (counterl == 2)
document.write("Продолжить с начала
"•внешнего цикла.<br>");
continue outerLoop;
document.write("Конец внутреннего цикла.<br>");
document.write("Конец внешнего цикла.<br>");
document.write("Выполнено!");
</script>
238
Часть III. Справочник по JavaScript
gk {■« View go £orwnuriesta
Рисунок 7,9.
Результат использования
оператора continue
Начало внешнего цикла
Начало внутреннего цикла.
Counterl=l
Counter2=l
Конец внутреннего цикла.
Начало внутреннего цикла.
Counter 1=1
Counter2=2
Продолжить с начала внутреннего цикла.
Конец внешнего цикла
Начало внешнего цикла.
Начало внутреннего цикла.
Couttferl=2
Counter2=l
Продолжить с начала внешнего цикла.
Выполнено'
'Document 0И ! -/£, с^
Date JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
var переменная = new Date();
var переменная = new Date(миллисекунды!) ;
var переменная = new Date (сорока)
var переменная = new Date (год, месяц, день, часы,
минуты, секунды, миллисекунды2)
> Объект Date содержит все параметры даты и времени от года до миллисекунд. Если при
создании объекта Date были заданы аргументы, новый объект будет содержать указан-
указанную дату, в противном случае объекту будет присвоена текущая дата. Аргументы и ме-
методы объекта Date перечислены в табл. 7.25.
ПРЕДУПРЕЖДЕНИЕ
Конструктор Date() такжа можно аызывать в виде функции,
исключив оперетор new. В этом спучее конструктор возвращавт не объект Dete, а дату
в строковом представлении.
Tun
Аргумент
Таблица
Параметр
конструктор
мипписекунды1
строка
год
месяц
день
часы
минуты
7.25. Аргументы и методы объекта Date
Описание
Задает функцию, которая создает прототип объекта Date.
Требуемая дата задается количеством миллисекунд между
полуночью 1 января 1970 г. по Гринвичу и требуемой датой.
Требуемая дата задается в виде строки. Формат строки
должен соответствовать методу parse() объекта Date.
Четырехзначное представление года.
Месяц задается целым числом, при этом 0 соответствует
январю, 11 - декабрю.
День месяца задается целым числом от 1 до 31.
Необязательный аргумент.
Часы задаются целым числом, при этом 0 соответствует
полночи. Необязательный аргумент.
Минуты часа задаются целым числом от 0 до 59.
Необязательный аргумент.
Глава 7. Ядро JavaScript
Тип Параметр
секунды
миллисекунды2
Методы getDate()
getDay()
getFullYear()
getHours()
getMilliseconds()
getMinutes()
getMonth ()
getSeconds()
getTimeO
getTimezoneOffset()
getUTCDate()
getUTCDayO
getUTCFullYear()
getUTCHours()
getUTCMilliseconds()
getUTCMinutes()
getUTCMonth()
getUTCSeconds()
getVarDate()
getYear()
parse()
setDate()
setFullYear()
setHours()
setMilliseconds()
setMinutes()
setMonth()
setSeconds()
setTime()
setUTCdate()
239
Описание
Секунды минуты задаются целым числом от 0 до 59.
Необязательный аргумент.
Миллисекунды задаются целым числом от 0 до 999.
Необязательный аргумент.
Возвращает день месяца.
Возвращает день недели.
Возвращает год (локальное время) в четырехзначном
формате.
Возвращает часы.
Возвращает миллисекунды.
Возвращает минуты.
Возвращает месяц.
Возвращает секунды.
Возвращает дату и время в миллисекундах.
Возвращает смещение местного часового пояса от
часового пояса Гринвича (в минутах).
Возвращает день месяца по Гринвичу.
Возвращает день недели по Гринвичу.
Возвращает четырехзначный год по Гринвичу.
Возвращает часы по Гринвичу.
Возвращает миллисекунды по Гринвичу.
Возвращает минуты по Гринвичу.
Возвращает месяц по Гринвичу.
Возвращает количество секунд по Гринвичу.
Возвращает дату в формате VT_DATE.
Возвращает год в четырехзначном или в двухзначном
формате.
Преобразует строку даты и времени в миллисекунды.
Устанавливает день месяца.
Устанавливает год в четырехзначном формате.
Устанавливает часы.
Устанавливает миллисекунды.
Устанавливает минуты.
Устанавливает месяц.
Устанавливает секунды.
Устанавливает дату и время в миллисекундах.
Устанавливает смещение местного часового пояса от
часового пояса Гринвича в минутах.
240
Тип
Параметр
setUTCFullYear()
setUTCHoursf)
setUTCMilliseconds()
setUTCMinutesf)
setUTCMonthf)
setUTCSecondsf)
setYear()
toGMTString()
toLocalString()
toSource()
toStringf)
toUTCString()
unwatch
UTC()
watch
Часть III. Справочник по JavaScript
Описание
Устанавливает день месяца по Гринвичу.
Устанавливает часы по Гринвичу.
Устанавливает миллисекунды по Гринвичу.
Устанавливает минуты по Гринвичу.
Устанавливает месяц по Гринвичу.
Устанавливает секунды по Гринвичу.
Устанавливает год в четырехзначном или в двухзначном
формате.
Возвращает дату и время по Гринвичу в виде строки.
Возвращает дату и время в формате локального
времени в виде строки.
Возвращает источник объекта Date.
Возвращает дату и время в формате локального
времени в виде строки.
Возвращает дату и время по Гринвичу в виде строки.
Прекращает слежение за свойством.
Преобразует дату и время по Гринвичу в миллисекунды.
Устанавливает слежение за свойством.
i/j(flj В листинге 7.93 показано, каким образом можно создать объект Date, используя в кон-
конструкторе Date() различные аргументы.
Листинг 7.93. Создание объектов Dated
<script type="text/javascript" language="JavaScript" >
//Создать новый объект Date с использованием всех аргументов.
theDatel = new DateB002,9,29,20,5,8 , 10) ;
//Создать новый объект Date только с использованием миллисекунд.
theDate2 = new Date(theDatel.getTime());
//Создать новый объект Date с использованием строки.
theDate3 = new Date(theDatel.toString ());
//Отображение всех объектов Date.
document.write("theDatel-> ",theDatel.toString());
document.write("<br>theDate2-> ",theDate2.toString());
document.write("<br>theDate3-> ",theDate3.toString());
</script>
JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
Nav3+, NES3+, IE 4+, Opera3+
Date.constructor
Date.constructor
Свойство constructor объекта Date используется для создания прототипа объекта.
В листинге 7.94 показано использование свойства constructor объекта Date.
Листинг 7.94. Свойство constructor объекта Dete
<script type="text/javascript" language="JavaScript">
// Создание нового объекта Date,
myDate = new Date();
используя свойство constructor.
Глава 7. Ядро JavaScript С.Ч- I
if(myDate.constructor == Date)(
document.write("Объект создан")
</script>
Date aetDateO JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
'y w Nav2+, NES2+, IE 3+, Opera3+
date.getOate ()
Метод getDate() возвращает день месяца в виде целого числа в диапазоне от 1 до 31.
Код листинга 7.95 выводит на экран текущий день месяца в виде целого числа в диа-
диапазоне от 1 до 31, используя метод getDate().
Листинг 7.95. Использование метода getDateO для отображения дня месяца
<script type="text/javascript" language="JavaScript">
// Создание объекта Date, содержащего текущую дату и время.
theDate = new Date();
// Отображение на экране даты.
document.write("Текущая дата ",theDate.getDate());
</script>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
date. getDayO
Метод getDayO возвращает день недели в виде целого числа в диапазоне от 0 (воскре-
(воскресенье) до 6 (суббота).
% В листинге 7.96 метод getDayO используется для определения дня недели, выраженно-
' го в виде целого числа. Затем число преобразуется в строку, соответствующую дню не-
недели.
Листинг 7.96. Использование метода getDayO для вывода на экран дня недели
<script type="text/javascript" language="JavaScript">
//Данная функция преобразует день недели из числа
//в строку и возвращает полученную строку,
function getDayString(num)
var day; // Создание локальной переменной для хранения
строки.
switch(num)
case 0:
day="BocKpeceHbe";
break;
case 1:
day="Понедельник";
break;
case 2:
day="Вторник";
break;
case 3:
day="Среда";
break;
case 4:
day=eTBepr";
break;
case 5:
day="Пятница";
break;
case 6:
day="Cy66oTa";
С.Ч-С. Часть III. Справочник по JavaScript
break;
default:
day="Ошибочный номер дня" ;
}
return day ;
}
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Oate();
// Отображение дня недели на экране.
document.write("Сегодня ",getDayString(theDate.getDay()));
// -->
</script>
Date.getFullYear() JavaScript 1.2+, ECMAScript 1E+ JScript 3.0+
v w Nav4+, IE 4+, Opera5+
date.getFullYear()
$S| Метод getFullYear() возвращает локальный год в четырехзначном виде.
Г Код листинга 7.97 с помощью метода getFuDYear() отображает на экране локальный год.
Листинг 7.97. Использование метода getFullYearC) для аывода на экран года
<script type="text/javascript" language="JavaScript">
<!--
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
// Отображение на экране полного года.
document.write("Год ",theDate.getFullYear());
// — >
</script>
natP nPtHnurcM JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Date.getHoursu Nav2+ ne$h+ (e 3+ онрегаз+
date.getHourB()
Метод getHours() возвращает часы дня в виде целого числа в диапазоне от 0 (полночь)
до 23.
Э листинга ^-98 выводит на экран текущее значение часов в виде целого числа в ди-
апазоне от 0 до 23, используя метод getHours().
Листинг 7.98. Использование метода getHours() для вывода на экран текущего
значения часов
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
// Отображения значения (в часах).
document.write("Текущее значение часов ",theDate.getHours ());
// "->
</script>
Date.getMilMseCOndsO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
3 " Nav4+, IE 4+, Opera5+
date.getMilliseconds()
Метод getMilliseconds() возвращает миллисекунды дня в виде целого числа в диапазоне
от 0 до 999.
Код листинга 7.99 выводит на экран текущее значение (в миллисекундах), используя
метод getMiIIiseconds().
Листинг 7.99. Использование метода getMillisecondsO для аывода на экран
текущего значения (в миллисекундах)
<script type="text/javascript" language="JavaScript">
Глава 7. Ядро JavaScript c4u
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
// Отображение значения (в миллисекундах).
document.write("Текущее значение миллисекунд ",
theDate.getMilliseconds());
</script>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
date.getMinutes()
Метод getMlnutesO возвращает минуты дня в виде целого числа в диапазоне от 0 до 59.
Код листинга 7.100 выводит на экран текущее значение минут, используя метод
getMinutes().
Листинг 7.100. Использование метода getMinutesO для отображения текущего
значения (в минутах)
<script type="text/javascript" language="JavaScript">
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
// Отображение значение времени (в минутах).
document.write("Текущее значение минут ",theDate.getMinutes());
</script>
Date.getMonth() JavaScript 1.0+ ECMAScript 1E+, JScript 1.0+
э w Nav2+, NES2+, IE 3+, Opera3+
date. getMonthO
Метод getMonth() возвращает номер месяца в виде целого числа в диапазоне от 0 (ян-
(январь) до 11 (декабрь).
Код листинга 7.101 выводит на экран текущий месяц, используя метод getMonth().
Листинг 7.101. Использование метода getMonthO для вывода на экран
текущего месяца.
<script type="text/javascript" language="JavaScript">
//Данная функция преобразует месяц из целого числа
//в строку и возвращает полученную строку,
function getMonthString(num)
var month; // Создание локальной переменной для хранения строки,
switch(num)
case 0:
month="flHBapb";
break;
case 1:
month="Февраль";
break;
case 2:
month="MapT";
break;
case 3:
month="Anpenb";
break;
case 4:
break;
case 5:
month="PljoHb"
break;
Часть III. Справочник по JavaScript
case 6:
month="Hjojib" ;
break;
case 7:
month="AerycT";
break;
case 8:
month="CeHTa6pb";
break;
case 9:
month="Октябрь";
break;
case 10:
month="Ноябрь";
break;
case 11:
month="fleKa6pb";
break;
default:
топ^="Ошибочный номер месяца" ;
}
return month;
}
// Создание объекта Date, который содержит текущую дату и вреия.
theDate = new Date();
// Отображение ноиера месяца на экране.
document.write("Текущий месяц ",getMonthString(theDate.getMonth()))
// -->
</script>
Date.getSecondsl) «-** ™\™";«»%■*%£
date.getSeconds()
Метод getSeconds() возвращает количество секунды дня в виде целого числа в диапазо-
диапазоне от 0 до 59.
Код листинга 7.102 выводит на экран текущее значение времени (в секундах), исполь-
используя метод getSeconds().
Листинг 7.102. Использоввние метода getSecondsO для вывода нв экран текущего
значения времени (в секундах)
<script type="text/javascript" language="JavaScript">
// Создать объект Date, который содержит текущую дату и вреия
theDate = new Date();
// Отображение текущего значения времени (в секундах).
document.write("Текущее значение времени (в секундах) ",
theDate.getSeconds());
// —>
</script>
Datp арГПтрй JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
a v/ Nav2+, NES2+, IE 3+. Opera3+
date.getTime()
Метод getTime() возвращает эквивалент объекта Date, выраженный в миллисекундах.
Миллисекунды соответствуют целому количеству миллисекунд, пошедших между 1 ян-
января 1970 г. и датой, указанной в объекте Date.
С помощью методе getTime() гораздо удобнее сравниветь в миллисекундах
две даты, а не выражать в миллисекундах отдельные части даты.
Глава 7. Ядро JavaScript с.45
Код листинга 7.103 с помощью метода getTime() выводит на экран число 946684800000 —
количество миллисекунд, прошедших между датами 1 января 1970 г. и 1 января 2000 г.
Листинг 7.103. Использование метода getTimeO для вывода на экран количества
миллисекунд, прошедших между 1970 и 2000 годами
<script type="text/javascript" language="JavaScript">
<!--
// Создание объекта Date, который содержит данные для
// полуночи 1 января 1970 г.
Datel970 = new DateA970,1,1,0,0,0,0);
// Создание объекта Date, который содержит данные для
// полуночи 1 января 2000 г.
date2000 = new DateB000,1,1,0,0,0,0) ;
// Отображение количества миллисекунд, прошедших между
// указанными датами.
document.write(date2000.getTime()-date1970.getTime() ) ;
document.write(" миллисекунд прошло между 1.01.1970 и 1.01.2000");
// -->
</script>
Date.getTimezoneOffset() JavaScript 1.0+^ECMASmpt+ 1EO+ScripM.0+
date.getTimezoneOffset()
| Метод getTimezoneOffsetO возвращает разницу между местным часовым поясом и часо-
вым поясом Гринвича. Эта разница выражается целым числом минут между местным
временем и временем по Гринвичу. Несмотря на то что getTimezoneOffsetO — метод
объекта Date, текущая дата и время не имеют значения, поскольку разница во време-
времени вычисляется на основании настроек системы, на которой выполняется код JavaScript.
Код листинга 7.104 с помощью метода getTimezoneOffsetO выводит на экран разницу
между местным часовым поясом и часовым поясом Гринвича. Обратите внимание на то,
что при изменении даты и времени разница во времени не изменяется, поскольку при
проведении вычислений метода содержимое объекта Date не используется.
Листинг 7.104. Использование метода getTimezoneOffsetO для вывода на экран
разницы во времени между часовыми поясами
<script type="text/javascript" language="JavaScript">
<!--
// Создание двух различных объектов Date.
aDatel = new DateA990,1,1,0,0,0 , 0) ;
aDate2 = new DateA994,2,13,8,24 , 45 , 300) ;
// Отображение разницы во времени между часовыми поясами.
document.write("Разница во времени для aDatel составляет ") ;
document.write(aDatel.getTimezoneOffset()," минут.<br>");
document.write("Разница во времени для aDate2 составляет "
document.write(aDate2.getTimezoneOffsetO," минут.");
// —>
</script>
Date aetUTCDateO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
*y " Nav4+, IE 4+, Opera5+
date.getUTCDateO
f Метод getUTCDate() возвращает день месяца по Гринвичу в виде целого числа в диа-
диапазоне от 1 до 31.
/f Код листинга 7.105 выводит на экран текущий день месяца по Гринвичу, используя метод
У getUTCDate().
Листинг 7.105. Использование метода getUTCDateO для вывода на экран дня месяца
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
246 Часть III. Справочник по JavaScript
// Отображение даты по Гринвичу.
document.write("Текущая дата по Гринвичу ",theDate.getUTCDate());
</script>
JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
Nav4+, IE 4+, Opera3+
date. getUTCDayO
Метод getUTCDayO возвращает день недели по Гринвичу в виде целого числа в диа-
диапазоне от 0 (воскресенье) до 6 (суббота).
В листинге 7.106 метод getUTCDayO используется для определения дня недели по Грин-
Гринвичу, выраженного в виде целого числа. Затем число преобразуется в строку, соответ-
соответствующую дню недели.
Листинг 7.106. Использование метода getUTCDayO для отображения на экране дня
недели
<script type="text/javascript" language="JavaScript">
// Данная функция преобразует день недели из числа
// в строку н возвращает полученную строку,
function getDayString(num)
var day; // Создание локальной переменной для хранения
строки.
switch(num)
case 0:
day="BocKpeceHbe";
break;
case 1:
day="Понедельник";
break;
case 2:
day="Вторник";
break;
case 3:
day="Среда";
break;
case 4:
day=eTBepr" ;
break;
сазе 5:
day="Пятница";
break;
case 6:
day="Суббота";
break;
default:
day="OuiHB©4Hb»i номер дня" ;
return day;
// Создание объекта Date, который содержит текущую дату н время.
theDate = new Date();
// Отображение дня недели по Грннвичу.
document.write("Текущий день недели по Гннвнчу ",
getDayString(theDate.getUTCDay()));
</script>
Date.qetUTCFllllYearO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
3 w Nav4+. IE 4+, Opera5+
date.getUTCFullYear()
Глава 7. Ядро JavaScript С. Ч-/
|§| Метод getUTCFullYearQ возвращает год в четырехзначном формате (по Гринвичу).
Код листинга 7.107 с помощью метода getUTCFuHYear() выводит на экран год по Грин-
Гринвичу.
Листинг 7.97. Использование метода getUTCFullYeard для вывода на экран года по
Гринвичу
<script type="text/javascript" language="JavaScript">
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
// Отображение года по Гринвичу в полноразмерном формате,
document.write("Текущий год по Гринвичу ",theDate.getUTCFullYear());
</script>
Date qetUTCHoiirsO JavaScript 1.2+, ECMAScript "IE+, JScript 3.0+
э w Nav4+, IE 4+, Opera5+
date.getUTCHours ()
f Метод getUTCHours() возвращает часы дня по Гринвичу в виде целого числа в диапа-
диапазоне от 0 (полночь) до 23.
Код листинга 7.108 выводит на экран текущее значение часов по Гринвичу, используя
метод getUTCHours().
Листинг 7.108. Использование метода getUTCHoursQ для вывода на экран
текущего значения времени (в часах) по Гринвичу
<script type="text/javascript" language="JavaScript">
// Создание объекта Date, который содержит текущую дату и время
theDate = new Date();
// Отображение на экране значения времени (в часах).
document.write("Текущее значение часов по Гринвичу ",
theDate.getUTCHours ());
</script>
Date.getUTCMillisecondsO JavaScript 1.2+. ECMAScript 1E+, JScript 3.0+
э w Nav4+, IE 4+, OperaS+
date.getUTCMilliseconds()
■j& Метод getUTCMillisecondsO возвращает количество миллисекунд дня по Гринвичу в виде
целого числа в диапазоне от 0 до 999.
Код листинга 7.109 выводит на экран текущее значение миллисекунд по Гринвичу, ис-
используя метод getUTCMillisecondsO.
Листинг 7.109. Использование метода getUTCMillisecondsO для вывода на экран
текущего значения миллисекунд по Гринвичу.
<script type="text/javascript" language="JavaScript">
// Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
// Отображение значения миллисекунд по Гринвичу,
document.write("Текущее значение миллисекунд по Гринвичу ",
theDate.getUTCMilliseconds());
</script>
Date qetUTCMiniltesO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
э w Nav4+, IE 4+, Opera5+
date . getUTCMiniites ()
|5k Метод getUTCMinutes() возвращает минуты дня по Гринвичу в виде целого числа в
• диапазоне от 0 до 59.
248 Часть III. Справочник по JavaScript
Код листинга 7.110 выводит на экран текущее значение минут по Гринвичу, исполь-
используя метод getUTCMinutes().
Листинг 7.110. Использование методв getUTCMinutesO для вывода на экран
текущего значения минут по Гринвичу.
<script type="text/javascript" language="JavaScript">
<! --
//Создание объекта Date, который содержит текущую дату и время.
theDate = new Date();
// Отображение значения минут по Гринвичу.
document.write("Текущее значение минут по Гринвичу ",
theDate.getUTCMinutes());
// —>
</script>
Date.getUTCMonth() JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
э w Nav4+, IE 4+, Opera5+
date.getUTCMonth()
|| Метод getUTCMonth() возвращает месяц по Гринвичу в виде целого числа в диапазоне
» от 0 (январь) до 11 (декабрь).
Код из листинга 7.111 выводит на экран текущий месяц по Гринвичу, используя ме-
метод getUTCMonth(). Целое число преобразуется в строку, содержащую название месяца.
Листинг 7.111. Использование метода getUTCMonthO для вывода на экран
текущего месяца.
<script type="text/javascript" languages"JavaScript">
<! --
// Данная функция преобразует месяц из целого числа
// в строку и возвращает полученную строку.
function getMonthString(num)
{
var month; // Создание локальной переменной,
// предназначенной для хранения строки,
switch(num)
{
case 0:
month="flHBapb";
break;
case 1:
month="Февраль";
break;
case 2:
month="MapT";
break;
case 3:
month="Апрель";
break;
case 4:
month="Maft";
break;
case 5 -.
month="Ite)Hb" ;
break;
case 6:
month="MsMib" ;
break;
case 7:
month="ABrycT" ;
break;
case В:
month="CeHTH6pb" ;
break;
Глава 7. Ядро JavaScript С. Ч-У
case 9:
month="OKTa6pb";
break;
case 10:
month="Ноябрь";
break;
case 11:
month="fleKa6pb";
break;
default:
month="Ошибочный ноиер месяца";
}
return month;
}
// Создание объекта Date, который содержит текущую дату и вреия.
theDate = new Date();
// Отображение месяца по Гринвичу
document.write("Текущий иесяц по Гринвичу ",
getMonthString(theDate.getUTCMonth()));
// -->
</script>
Date.qetUTCSeCOndsO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
э " Nav4+, IE 4+, Opera5+
date.getUTCSeconds()
f Метод getUTCSeconds() возвращает секунды дня по Гринвичу в виде целого числа в
диапазоне от 0 до 59.
Код листинга 7.112 выводит на экран текущее значение секунд по Гринвичу, исполь-
используя метод getUTCSeconds().
Листинг 7.112. Использоввнив методе gBtUTCSecondsO для вывода на экрен
текущего значения времени (в секундах}
<script type="text/javascript" language="JavaScript">
<!--
// Создание объекта Date, который содержит текущую дату и вреия.
theDate = new Date();
// Отображение текущего значения секунд по Гринвичу,
document.write("Текущее значение секунд по Гринвичу ",
theDate.getUTCSeconds() ) ;
// -->
</script>
Date.getVarDateQ JScript,E34*
date.getVarDate()
f Метод getVarDate() возвращает значение даты в формате VT_DATE, который можно ис-
использовать в Visual Basic и VBScript при работе с СОМ-объектами, объектами ActiveX
и т.д. Формат зависит от региональных стандартов.
Код листинга 7.113 с помощью метода getVarDate() выводит на экран дату.
Листинг 7.113. Использование метода getVarDateO
<script type="text/jscript" language="JScript">
<! --
// Создание объекта Date, который содержит текущую дату и вреия.
theDate = new Date();
// Отображение даты на экрана.
document.write("Текущая дата ",theDate.getVarDate());
// —>
</script>
2 50 Часть III. Справочник по JavaScript
riPtYoarM JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
.getvearu №v2+ ш^ |Е j
date.getYear()
j Метод getYear() возвращает год, содержащийся в объекте Date. К сожалению, в зави-
зависимости от версии браузера год, может представляться либо в двухзначном, либо в че-
четырехзначном формате. Например, метод getYear() может возвращать 1983 год как 1983
или просто как 83.
ПРИМЕЧАНИЕ
Матод getYear() устарал. Вмасто наго сладуат использовать метод
getFullYeart)
ij Код листинга 7.114 с помощью метода getYear(), соответствующего версии вашего бра-
ь^ узера, выводит на экран текущий год.
Листинг 7.114. Использование метода getYear() для вывода на экран текущего года
<script type="text/javascript" language="JavaScript ">
// Создание объекта Date, который содержит текущую дату и время
theDate = new Date();
// Отображение года на экране.
document.write("Текущий год ",theDate.getYear());
</script>
Date.parseO JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+-, NES2+-, IE 3+, Opera5+
Date.parse (дата.)
# Метод parse() возвращает время в миллисекундах, прошедшее между полуночью 1 ян-
января 1970 г. по Гринвичу и датой, заданной строкой дата. Обратите внимание на то,
что этот метод связан с объектом Date, а не с текущей системной датой. Строка дата
должен содержать дату в формате, задаваемом методом toGMTString() объекта Date,
которая выглядит примерно следующим образом:
Моп, 24 Oct 1982 12:03:27 -0200
Кроме того, метод может использовать строки, в которых отсутствуют все или некото-
некоторые фрагменты формата времени или часового пояса.
j/j Код листинга 7.115 выводит на экран количество миллисекунд, прошедших с 1970 года
^ до даты и времени, заданных в виде строки.
Листинг 7.115. Использование метода parsed
<script type="text/javascript" language="JavaScript">
//Преобразование строкового представления
//строки "Sun, 24 Oct 1982 12:03:27"
//в миллисекунды и отображение на экране количества миллисекунд.
document.write("Значение строки ";
document.write("'Sun, 24 Oct 1982 12:03:27' в миллисекундах: ");
document.write(Date.parse("Sun, 24 Oct 1982 12:03:27"));
</script>
» nrntntvne JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
,.piuiuiypc Nav3+, NES3+, IE 4+, Opera5+
Date.prototype.свойство
Date.prototype.метод
\ Свойство prototype позволяет добавлять объекту Date новые свойства и методы, кото-
которые можно будет использовать в программном коде.
Глава 7. Ядро JavaScript CJ I
В листинге 7.116 свойство prototype используется для создания нового метода —
getDayString, который можно использовать для всех объектов типа Date. Метод
getDayStringO для получения дня недели в строковом формате (например, Воскресенье,
Понедельник, Вторник,) использует функцию getDayString(). Этот новый метод исполь-
используется для вывода на экран названия текущего дня недели.
Листинг 7.116. Создание нового метода для аывода на экран названия такущего
дня недели
<script type="text/javascript" language="JavaScript">
<! --
//Данная функция возвращает строковое представления текущего дня
недели.
function getDayStringO
{
var day
switch(this.getDay())
{
case 0:
<1ау="Воскресенье" ;
break;
case 1:
day="Понедельник";
break;
case 2:
day="BTopHHK" ;
break;
case 3:
day="Среда";
break;
case 4:
day="Четверг";
break;
case 5:
day="Пятница";
break;
case 6:
day="Cy66oTa";
break;
default:
day="Ошибочный номер дня" ;
)
return(day);
}
// Сделать функцию getDayString доступной для всех объектов Date.
Date.prototype.getDayString = getDayString;
// Создание объекта Date, который содержит текущую дату и время.
var currentDate = new Date();
// Отображение дня недели в виде строки.
document.write("<Ь2>Сегодня ",currentDate.getDayStringO,"</h2>");
// -->
</script>
Datp qptDatpH JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
u Nav2+, NES2+, IE 3+, Opera3+
date.setDate(день)
Метод setDate() устанавливает день месяца в объекте Date равным аргументу день (це-
(целое число в диапазоне от 1 до 31). Метод возвращает целое число, представляющее со-
собой количество миллисекунд, прошедших между 1 января 1970 г. (по Гринвичу) и да-
датой и временем, указанными в объекте Date после установки нового дня месяца.
ПРЕДУПРЕЖДЕНИЕ
В варсиях до JavaScript 1.2 этот метод не возвращает никаких
значений.
С. U С. Часть III. Справочник по JavaScript
Код из листинга 7.117 выводит на экран текущую дату (в миллисекундах) перед уста-
новкой дня 4. Обратите внимание, что миллисекунды, задаваемые методом setDateQ
соответствуют возвращаемому значению метода.
Листинг 7.117. Установка дня месяца с помощью метода setDated
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Date.
theDate = new Date();
// Установка дня месяца и отображение количества миллисекунд.
document.write("Начальное значение миллисекунд=",theDate.getTime ());
document.write("<Ьг>Значение миллисекунд, установленное setDate ");
document.write(theDate.setDateD) ," миллисекунд.")
document.wri te("<brЖонечное значение
миллисекунд=",theDate.getTime() ) ;
// —>
</script>
Date setFullYearO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
" Nav4+, IE 4+, Opera5+
date.setFullYear(год)
Метод setFullYear() устанавливает год в объекте Date равным аргументу год (четырех-
(четырехзначное целое число). Метод возвращает целое число, представляющее собой количество
миллисекунд, прошедших между 1 января 1970 г. (по Гринвичу) и датой и временем,
указанными в объекте Date после установки нового года.
Код листинга 7.118 выводит на экран текущую дату в миллисекундах перед установкой
года равным 2003. Обратите внимание, что миллисекунды, задаваемые методом
setFuUYear() соответствуют возвращаемому значению метода.
Листинг 7.118. Установка года с помощью метода setFullYeard.
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Date.
theDate = new Date();
// Установка года и отображение количества миллисекунд.
document.write("Начальное значение миллисекунд=",theDate.getTime()) ;
document.write("<br>3начение миллисекунд,
установленное setFullYear");
document.write(theDate.setFullYearB003)," миллисекунд.")
document.write("<Ьг>Конечное значение миллисекунд=",
theDate.getTime());
// —>
</script>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
date.setHours (часы)
Метод setHours() устанавливает значение часов в объекте Date равным аргументу часы
(целое число в диапазоне от 0, полночь, до 23). Метод возвращает целое число, пред-
представляющее собой количество миллисекунд, прошедших между 1 января 1970 г. (по Грин-
Гринвичу) и датой и временем, указанными в объекте Date после установки нового значе-
значения часов.
Код из листинга 7.119 выводит на экран текущую дату в миллисекундах перед установкой
значения часов равным 7. Обратите внимание, что миллисекунды, задаваемые методом
setHours() соответствуют возвращаемому значению метода.
Листинг 7.119. Установка значения часов с помощью метода setHoursd
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Date.
Глава 7. Ядро JavaScript С Do
theDate = new Date();
//Установка значения часов и отображение количества миллисекунд.
document.write("Начальное значение миллисекунд»",theDate.getTime());
document.write("<Ьг>Зиачеиие миллисекунд, установленное setHours");
document.write(theDate.setHoursG) ," миллисекунд.")
document.write("<Ьг>Коиечное значение миллисекунд=",
theDate.getTime());
// -->
</script>
Date.SetMilliseCOnds() JavaScript 1.2+. ECMAScript 1E+. JScript 3.0+
" Nav4+, IE 4+, Opera5+
date.setMilliseconds(миллисекунда)
f Метод setMilliseconds() устанавливает значение миллисекунд в объекте Date равным ар-
аргументу миллисекунды (целое число в диапазоне от 0 до 999). Метод возвращает целое
число, представляющее собой количество миллисекунд, прошедших между 1 января 1970
г. (по Гринвичу) и датой и временем, указанными в объекте Date после установки но-
нового значения миллисекунд.
|ЛКод листинга 7.120 выводит на экран текущую дату в миллисекундах перед установкой
(г значения миллисекунд равным 792. Обратите внимание, что миллисекунды, задаваемые
методом setMiUiseconds() соответствуют возвращаемому значению метода.
Листинг 7.120, Установка значения миллисекунд с помощью метода setMillisecondsO
<script type="text/javascript" language="JavaScript">
<! —
// Создание объекта Date.
theDate = new Date();
// Установка аначения миллисекунд.
document.write("Начальное значение миллисекунд=",theDate.getTime());
document.write("<Ьг>Эначеиие миллисекунд,
установленное setMilliseconds");
document.write(theDate.setMillisecondsG92)," миллисекунд.")
document.write("<Ьг>Конечное значение миллисекунд1",
theDate.getTime());
// — >
</script>
Date.SetMinutes() JavaScript 1.0+ ECMAScript 1E+, JScript 1.0+
Xl Nav2+, NES2+, IE 3+, Opera3+
date.setMinutes (минуты)
f Метод setMinutes() устанавливает значение минут в объекте Date равным аргументу
минуты (целому числу в диапазоне от 0 до 59). Метод возвращает целое число, пред-
представляющее собой количество миллисекунд, прошедших между 1 января 1970 г. (по Грин-
Гринвичу) и датой и временем, указанными в объекте Date после установки нового значе-
значения минут.
Код листинга 7.121 выводит на экран текущую дату в миллисекундах перед установкой
значения минут равным 43. Обратите внимание, что миллисекунды, задаваемые мето-
методом setMinutes() соответствуют возвращаемому значению метода.
Листинг 7.121. Установка значения минут с помощью метода setMinutesO
<script type="text/javascript" language="JavaScript">
<!--
// Создание объекта Date.
theDate = new Date();
//Установить значение минут и вывести на экран миллисекунды.
document.write("Начальное значение миллисекунд=",theDate.getTimeО);
document.write("<Ьг>Эначение милисекунд, установленное setMinutes");
document.write(theDate.setMinutesD3)," миллисекунд.")
document.write("<Ьг>Начальное значение миллисекуид=",
theDate.getTime() ) ;
// — >
</script>
Cj4 Часть III. Справочник по JavaScript
Date.SetMOHthO JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
1 l W Nav2+, NES2+, IE 3+, Opera3+
date.setMonth (месяц)
t Метод setMonth() устанавливает месяц в объекте Date равным аргументу месяц (цело-
(целому числу в диапазоне от 0, январь, до 11, декабрь). Метод возвращает целое число,
представляющее собой количество миллисекунд, прошедших между 1 января 1970 г. (по
Гринвичу) и датой и временем, указанными в объекте Date после установки нового
месяца.
ПРЕДУПРЕЖДЕНИЕ
В версиях до JavaScript 1.2 этот матод не возвращает никаких
значений.
Код листинга 7.122 выводит на экран текущую дату в миллисекундах перед установкой
месяца равным 2 (март). Обратите внимание, что миллисекунды, задаваемые методом
setMonthQ соответствуют возвращаемому значению метода.
Листинг 7.122. Установка месяца с помощью метода setMonthO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
// Установка месяца и отображение количества миллисекунд,
document.write("Начальное значение миллисекунд=",theDate.getTime());
document.write("<Ьг>Эначение миллисекунд, установленное setMonth");
document.write(theDate.setMonthB) ," миллисекунд.")
document.write("<ЬгЖонечное значение миллисекунда",
theDate.getTime());
</script>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE 3+, Opera3+
date.setSeconds(секунды)
■ Метод setSecondsO устанавливает значение секунд в объекте Date равным аргументу секунды
(целому числу в диапазоне от 0 до 59). Метод возвращает целое число, представляющее собой
количество миллисекунд, прошедших между 1 января 1970 г. (по Гринвичу) и датой и вре-
временем, указанными в объекте Date после установки нового значения секунд.
ПРЕДУПРЕЖДЕНИЕ
В версиях до JavaScript 1.2 этот матод на возаращает никаких
значений.
Код из листинга 7.123 выводит на экран текущую дату в миллисекундах перед установкой
значения минут равным 16. Обратите внимание, что миллисекунды, задаваемые мето-
методом setSecondsO соответствуют возвращаемому значению метода.
Листинг 7.123. Установка значения секунд с помощью методе setSecondsO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
//установка значения секунд и вывод на экран значений миллисекунд.
document.write("Начальное значение в
миллисекундах=",theDate.getTime());
document.write("<Ьг>Эначение в миллисекундах,
*-» установленное setSeconds");
document.write(theDate.setSecondsA6)," миллисекунд.")
document.write("<Ьг>Конечное значение в миллисекундах=",
theDate.getTime());
</script>
Глава 7. Ядро JavaScript С 5 5
Datp чйГПтйП JavaScript 1.0+, ECMAScript 1Е+, JScript 1.0+
w Nav2+, NES2+, IE 3+, Opera3+
date.setTime (миллисекунды)
Метод setTime() устанавливает значение миллисекунд в объекте Date равным аргумен-
аргументу миллисекунды — целому числу, представляющему собой количество миллисекунд,
прошедших между 1 января 1970 г. (по Гринвичу) и устанавливаемой датой и време-
временем.
В коде листинга 7.124 метод setTime() используется для установки в миллисекундах даты
17 ноября 2005 г.
Листинг 7.124. Установка даты с помощью метода setTimel)
<script type="text/javascript" language="JavaScript">
<! —
// Создание объекта Date.
theDate = new Date();
// Установка даты равной 17 ноября 2005 г.
theDate.setTimeA13220360 000 0);
// Отображение даты на экране,
document.write(theDate.toString());
// -->
</script>
Date SetUTCDateO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
w Nav4+, IE 4+, Opera5+
date.setUTCDate(день)
Метод setUTCDateO устанавливает в объекте Date день месяца по Гринвичу, соответ-
соответствующим аргументу день (целое число в диапазоне от 1 до 31). Метод возвращает це-
целое число, представляющее собой количество миллисекунд, прошедших между 1 янва-
января 1970 г. (по Гринвичу) и датой и временем, указанными в объекте Date после
установки нового дня месяца.
Код листинга 7.125 выводит на экран текущую дату (по Гринвичу) в миллисекундах перед
установкой дня 5. Обратите внимание, что количество миллисекунд, задаваемых методом
setUTCDateO соответствуют возвращаемому значению метода.
Листинг 7.125. Установка дня месяца с помощью метода setUTCDateO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
// Установка дня месяца и отображение количества миллисекунд.
document.write("Начальное значение миллисекунда",theDate.getTime ()) ;
document.write("<Ьг>Эначение миллисекунд, установленное setUTCDate");
document.write(theDate.setUTCDateF)," миллисекунд.")
document.write("<Ьг>Конечное значение миллисекунд=",theDate.getTime ()) ;
// —>
</script>
Date.setUTCFullYearO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
Xl Nav4+, IE 4+, Opera5+
date.setOTCFullYear(год)
S| Метод setUTCFullYear() устанавливает в объекте Date год по Гринвичу, равный аргу-
* менту год (четырехзначное целое число). Метод возвращает целое число, представляющее
собой количество миллисекунд, прошедших между 1 января 1970 г. (по Гринвичу) и
датой и временем, указанными в объекте Date после установки нового года.
Код из листинга 7.126 выводит на экран текущую дату (по Гринвичу) в миллисекун-
миллисекундах перед установкой года равным 2004. Обратите внимание, что миллисекунды, зада-
задаваемые методом setUTCFuIlYear() соответствуют возвращаемому значению метода.
С О О Часть III. Справочник по JavaScript
Листинг 7.126. Установка года с помощью метода setUTCFullYearO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
// Установка года и отображение количества миллисекунд.
document.write("Начальное значение миллисекунд=",theDate.getTime()) ;
document.write("<br> Значение миллисекунд,
^установленное setUTCFullYear");
document.write(theDate.setUTCFullYear B0 04) ," миллисекунд.")
document.write("<Ьг>Конечное значение миллисекуид=",theDate.getTime ());
</script>
Date.SetUTCH0Urs() JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
w Nav4+, IE 4+, Opera5+
date.setUTCHours(часы)
f Метод setUTCHours() устанавливает в объекте Date значение часов по Гринвичу, рав-
равное аргументу часы (целое число в диапазоне от 0, полночь, до 23). Метод возвращает
целое число, представляющее собой количество миллисекунд, прошедших между 1 ян-
января 1970 г. (по Гринвичу) и датой и временем, указанными в объекте Date после ус-
установки нового значения часов.
Код из листинга 7.127 выводит на экран текущую дату в миллисекундах перед установ-
установкой значения часов равным 5. Обратите внимание, что миллисекунды, задаваемые методом
setUTCHours() соответствуют возвращаемому значению метода.
Листинг 7.127. Установка значения часов с помощью метода setUTCHoursO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
//Установка значения часов и отображение количества миллисекунд,
document.write("Начальное значение в миллисекундах=",theDate.getTime());
document.write("<Ьг>Эначение в миллисекундах,
wустановленное setUTCHours");
document.write(theDate.setUTCHoursE)," миллисекунд.")
document.write("<Ьг>Конечное значение в миллисекундах=",theDate.getTime());
</script>
Date.SetUTCMilliseCOndsO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
w Nav4+, IE 4+, Opera5+
date.setuTCMilliseconds(миллисекунда)
\i Метод setUTCMilliseconds() устанавливает в объекте Date значение в миллисекундах по
Гринвичу, равное аргументу миллисекунды (целое число в диапазоне от 0 до 999). Ме-
Метод возвращает целое число, представляющее собой количество миллисекунд, прошед-
прошедших между 1 января 1970 г. (по Гринвичу) и датой и временем, указанными в объек-
объекте Date после установки нового значения миллисекунд.
Код из листинга 7.128 выводит на экран текущую дату (по Гринвичу) в миллисекун-
миллисекундах перед установкой значения миллисекунд равным 258. Обратите внимание, что мил-
миллисекунды, задаваемые методом setUTCMilliseconds() соответствуют возвращаемому зна-
значению метода.
Листинг 7.128. Установка значения в миллисекундах с помощью метода
setUTCMillisecondsO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date ();
Глава 7. Ядро JavaScript С D /
// Установка значения в миллисекундах.
document.write("Начальное значение в миллисекундах=",theDate.getTime ()) ;
document.write("<Ьг>Значение в миллисекундах,
•"установленное setUTCMilliseconds");
document.write(theDate.setUTCMillisecondsB58)," миллисекунд.")
document.write("<Ьг>Конечное значение в миллисекундах^",theDate.getTime());
// —>
</script>
Date.SetMinUtes() JavaScript 1.0+ ECMAScript 1E+, JScript 1.0+
w Nav2+, NES2+, IE 3+, Opera3+
date.setUTCMinutes(минуты)
f Метод setUTCMinutes() устанавливает в объекте Date значение минут по Гринвичу, рав-
равное аргументу минуты (целое число в диапазоне от 0 до 59). Метод возвращает целое
число, представляющее собой количество миллисекунд, прошедших между 1 января 1970
г. (по Гринвичу) и датой и временем, указанными в объекте Date после установки но-
нового значения в минутах.
i л Код из листинга 7.129 выводит на экран текущую дату по Гринвичу в миллисекундах
1г перед установкой значения минут равным 19. Обратите внимание, что миллисекунды,
задаваемые с помощью метода setUTCMinutes(), соответствуют возвращаемому значению
метода.
Листинг 7.129. Установка значения в минутах с помощью метода setUTCMinutesO
<script type="text/javascript" language="JavaScript">
<!--
// Создание объекта Date.
theDate = new Date();
//Установка значения в минутах и отображение количества миллисекунд.
document.write("Начальное значение в миллисекундах=",theDate.getTime());
document.write("<Ьг>Значение в миллисекундах,
^установленное setUTCMinutes");
document.write(theDate.setUTCMinutesA9)," миллисекунд.")
document.write("<Ьг>Конечное значение в миллисекундах=",theDate.getTime());
// -->
</script>
Date.SetUTCMonth() JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
w Nav4+, IE 4+, Opera5+
date.setUTCMonth(месяц)
f Метод setUTCMonth() устанавливает в объекте Date месяц по Гринвичу равное аргументу
месяц (целое число в диапазоне от 0, январь, до 11, декабрь). Метод возвращает целое
число, представляющее собой количество миллисекунд, прошедших между 1 января 1970
г. (по Гринвичу) и датой и временем, указанными в объекте Date после установки но-
нового месяца.
1/4 Код из листинга 7.130 выводит па экран текущую дату по Гринвичу в миллисекундах
Р* перед установкой месяца равным 4 (май). Обратите внимание, что миллисекунды, зада-
задаваемые методом setUTCMonthO соответствуют возвращаемому значению метода.
Листинг 7.130. Установка месяца с помощью метода setUTCMonthO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date
theDate = new Date();
// Установка месяца и отображение количества миллисекунд.
document.write("Начальное значение в миллисекундах^",theDate.getTimeО)',
document.write("<Ьг>Значение в миллисекундах,
^установленное setUTCMonth");
document.write(theDate.setUTCMonthD)," миллисекунд.")
document.write("<Ьг>Конечное значение в миллисекундах=",theDate.getTimeО ) ;
// -->
</script>
С 5 О Часть III. Справочник по JavaScript
Date.SetUTCSeCOndsO ~ JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
w Nav4+, IE 4+, Opera5+
date.setUTCSeconds(секунда)
# Метод setUTCSeconds() устанавливает в объекте Date значение секунд по Гринвичу, рав-
равное аргументу секунды (целое число в диапазоне от 0 до 59). Метод возвращает целое
число, представляющее собой количество миллисекунд, прошедших между 1 января 1970
г. (по Гринвичу) и датой и временем, указанными в объекте Date после установки но-
нового значения секунд.
Код из листинга 7.131 отображает текущую дату в миллисекундах перед установкой зна-
значения в минутах равным 46. Обратите внимание, что количество миллисекунд, задава-
задаваемое с помощью метода setUTCSeconds(), соответствует возвращаемому значению метода.
Листинг 7.131. Установка значения секунд с помощью метода setUTCSecondsO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
//Установка значения в секундах и отображение количества миллисекунд.
document.write("Начальное значение в ниллисекундах=",theDate.getTime());
document.write("<Ьг>Эначение в миллисекундах,
•"установленное setUTCSeeonds");
document.write(theDate.setUTCSecondsD6) ," миллисекунд.")
document.write("<Ьг>Конечное значение в миллисекундах^",theDate.getTime());
</script>
Datp 4PtYparM JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
W Nav2+, NES2+, IE 3+, Opera3+
date.setYear(год)
^ Метод setYear() устанавливает год в объекте Date равным аргументу год. Аргумент мо-
может быть представлен как в четырех-, так и в двухзначном виде. Для получения двух-
двухзначного представления необходимо из требуемой даты вычесть 1900. Таким образом, если
в качестве аргумента метода setYear() было передано значение "92", будет установлен
1992 г. Метод возвращает целое число, представляющее собой количество миллисекунд,
прошедших между 1 января 1970 г. (по Гринвичу) и датой и временем, указанными в
объекте Date после установки нового года.
ПРИМЕЧАНИЕ
Метод setYear() устарел. Вместо него следует использовать метод
setFullYearl)
ПРЕДУПРЕЖДЕНИЕ
В аерсиях до JavaScript 1.2 этот метод не возвращаат никаких
значений.
Код из листинга 7.132 перед установкой 1983 г. выводит на экран текущую дату, выра-
выраженную в миллисекундах. Обратите внимание, что миллисекунды, задаваемые методом
setYear() соответствуют возвращаемому значению метода.
Листинг 7.132. Использование метода setYearO для отображения значения года
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
//Установка значения в секундах и отображение количества миллисекунд.
document.write ("Начальное значение в миллисекундах=" , theDate. getTime ()) ;
document, write ("<Ы>Эначение в миллисекундах,
•"установленное setYear");
document.write(theDate.setYear(83) ," миллисекунд.")
Глава 7. Ядро JavaScript
document, write ("<ЫЖонечное значение в миллисекундах=" , theDate . getTime () ) ;
// —>
</script>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, nes2+, ie з+, oPera3+
date.toGMTString()
Метод toGMTStringO возвращает строку, представляющую собой объект Date, в часо-
часовом поясе по Гринвичу. Перед конвертацией в строку дата преобразуется в дату по Грин-
Гринвичу. Формат строки выглядит следующим образом:
Моп, 24 Oct 1982 12:03:27 GMT
$B коде листинга 7.133 создается объект Date, который включает текущую дату и время.
Метод toGMTStringO возвращает строку, содержащую дату и время по Гринвичу.
Листинг 7.133. Преобразование даты и времени в часовой пояс Гринвича с помощью
метода toGMTStringt).
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
// Отображение строки, содержащей дату и время по Гринвичу.
document.write(theDate.toGMTString());
// —>
</script>
Date.toLocaleStringO JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
3W Nav2+, IE 3+, Opera5+
date.toLocaleString()
Метод toLocaleStringO возвращает строку, представляющую собой объект Date, в мес-
местном часовом поясе. Формат строки может варьироваться в широких пределах в зависи-
зависимости от установленных пользователем настроек представления даты и времени.
В коде листинга 7.134 создается объект Date, который содержит текущую дату и время.
Метод toLocaleString() возвращает строку, содержащую дату и время, выраженные с
учетом времени местного часового пояса.
Листинг 7.133. Преобразование даты и времени с использованием местного
часового пояса с помощью метода toLocaleStringO.
<script type="text/javascript" languages"JavaScript">
// Создание объекта Date.
theDate = new Date();
// Отображение строки даты и времени.
document.write(theDate.toLocaleString());
// —>
</script>
Date.toSourceO jlvaScripti.3. JScript3.0
x/ Nav4.06+, IE4
date.toSource()
f Метод toSource() преобразует объект Date в строку, которая представляет источник со-
созданного экземпляра объекта Date.
Illii»игт»Д|и|1т! Метод toSource(), как превило, вызывается внутри интерпретатора
JavaScript, а не явно в коде.
В листинге 7.135 создается объект Date, содержащий дату 16 апреля 2002 г. Затем вызы-
вызывается метод toSource(), который возвращает строку источника "(new
DateA018986503234))", содержащую дату, выраженную в миллисекундах.
260 Часть III. Справочник по JavaScript
Листинг 7.135. Определение источника объекта Date с помощью метода toSourcel)
<script type="text/javascriptl.3" language="JavaScriptl.3">
<! --
// Создание объекта Date для даты 16 апреля 2002 г.
theDate = new DateB002,3,16,15,48,23,234) ;
// Отображение строки "Tue Apr 16 15:48:23 GMT-0400
// (Eastern Daylight Time) 2002".
document.write(theDate.toString());
// Отображение источника объекта Date.
document.write(theDate.toSource()); // Отображение строки
// "(new DateA018986503234))".
// -->
</script>
Datp to*5trinan JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
au Nav2+, NES2+, IE 3+, Opera5+
date.toString()
# Метод toString() возвращает строку, представляющую собой содержимое объекта Date,
в местном часовом поясе.
ПРИМЕЧАНИЕ
Чем отличается метод toStringO от методов toGMTStringO и
toLocaleStringO? В отличие от метода toGMTStringO, метод toStringO возвращает
дату, уситывающую время местного часового пояса. Метод toStringO не всегда пред-
представляет дату в локальном формате, как это делает метод toLocaleStringO.
В коде листинга 7.136 создается объект Date, содержащий текущую дату и время. Затем
для вывода на экран строки, содержащей дату и время в местном часовом поясе, ис-
используется метод toString().
Листинг 7.136, Определение даты в виде строки с помощью метода toStringO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Date();
// Отображение строки даты и времени.
document.write(theDate.toString());
</script>
Date.toUTCStrinqO JavaScript 1.2+, ECMAScript 1E+, JScript 3.0+
эх/ Nav4+, IE 4+, Opera3+
date.toUTCString()
k Метод toUTCStringO возвращает строку, представляющую собой содержимое объекта Date
в часовом поясе Гринвича. Перед преобразованием в строку дата конвертируется с уче-
учетом часового пояса Гринвича. Этот метод полностью совпадает с методом toGMTStringO.
В коде листинга 7.137 создается объект Date, который содержит текущую дату и время.
Затем используется метод toUTCStringO, который возвращает строку, содержащую дату
и время в часовом поясе Гринвича.
Листинг 7.137. Определение даты и времени в часовом поясе Гринвича с помощью
метода toUTCStringO
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
theDate = new Dated '•
/I Отображение строки даты и времени в часовом поясе Гринвича.
document.write(theDate.toUTCString ()) ;
</script>
Глава 7. Ядро JavaScript С. О I
Date.unwatch() J^S%^
Date.unwatch(свойство)
f Метод unwatchO объекта Date используется для прекращения слежения за свойством,
указанным в параметре свойство.
В листинге 7.138 иллюстрируется применение метода unwatchO для прекращения слеже-
слежения за указанным пользователем свойством р.
Листинг 7.88. Пример использования метода unwatchO объекта Date
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln("myDate." + id + " изменено " + oldValue
+ " на ") ;
document.writeln(newValue + "<br>");
return newValue;
var myDate = new Date() ;
Date.prototype.p = 1 ;
myDate.watch("p",alertme);
myDate.p = 2;
myDate.unwatch("p") ;
myDate.p = 3;
myDate.watch("p",alertme);
myDate.p = 4 ;
</script>
Datp UTCM JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
" Nav2+, NES2+, IE 3+, Opera3+
Date.UTC(год, месяц, день, часы,
минута, секунда, миллисекунды)
& Поскольку конструктор объекта Date создает новые объекты в местном часовом поясе,
для преобразования их в часовой пояс Гринвича используется метод UTC(). Этот метод
использует аргументы, которые позволяют установить все параметры даты и времени — от
года до миллисекунд. Метод возвращает целое число, которое представляет собой количе-
количество миллисекунд, пошедших между полуночью 1 января 1970 г. (по Гринвичу) и датой,
указанной аргументами метода. Полученное целое число можно в дальнейшем использовать
для создания нового объекта Date. Аргументы и возвращаемое значение метода UTC()
перечислены в табл. 7.26.
ПРЕДУПРЕЖДЕНИЕ
Миллисекунды, возвращаемые методом UTC(), в Navigator 2
представляются неверно.
Таблица 7.26. Аргументы и возвращаемое значение метода UTC()
Tun Параметр Описание
Аргумент год Год в четырехзначном представлении.
месяц Месяц, представленный целым числом в диапазоне от 0
(январь) до 11 (декабрь).
день День месяца, представленный целым числом в диапазоне
от 1 до 31.
часы Часы, представленные целым числом в диапазоне от 0
(полночь) до 23.
262
Тип
Параметр
минуты
секунды
миллисекунды
Часть III. Справочник по JavaScript
Описание
Минуты, представленные целым числом в диапазоне от 0
до 59.
Секунды, представленные целым числом в диапазоне от 0
до 59.
Миллисекунды, представленные целым числом в диапазоне
от 0 до 999. Необязательный аргумент.
Возвращаемое Метод возвращает целое число, представляющее собой
значение количество миллисекунд, прошедших между полуночью 1
января 1970 г. (по Гринвичу) и указанной датой.
В коде листинга 7.139 создается новый объект Date, которому присваивается дата 29 сен-
сентября 2002 г. (по Гринвичу). Затем эта дата и время отображаются в окне браузера.
Листинг 7.139. Конструирование даты по Гринвичу с помощью метода UTC()
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Date, содержащего дату по Гринвичу.
theDate = new Date(Date.UTCB002,9,29,20,5,8,10)) ;
// Отображение строки даты и времени,
document.write(theDate.toUTCString());
// -->
</script>
JavaScript1.1+, ECMAScript 1E+, JScript3.0+
Nav3+ m^ |E4+ h^
date.valueOf()
Метод valueOf() возвращает элементарное значение объекта. В случае с экземпляром объек-
объекта Date этот метод возвращает эквивалент объекта Date, выраженный в миллисекундах.
Миллисекунды выражают количество миллисекунд, пошедших между полуночью 1 января
1970 г. (по Гринвичу) и датой, заданной объектом Date.
В листинге 7.140 создается объект Date, который содержит текущую дату и время. Результат
выполнения метода valueOf() объекта Date выводится в окне браузера.
Листинг 7.140. Использование метода valueOfO для определения элементарного
значения объекта Date
<script type="text/javascript" language="JavaScript">
<!--
// Создание объекта Date.
theDate = new Date();
// Отображение источника объекта Date,
document.write(theDate.valueOf() ) ;
// -->
</script>
Date.watch
Date.watch (свойство,функция)
Метод watch() объекта Date используется для включения слежения за свойством, задан-
заданным параметром свойство. При изменении параметра свойство после вызова метода
watch() вызывается функция, заданная параметром функция.
В листинге 7.141 показано использование метода watch() для включения слежения за
указанным пользователем свойством р.
Глава 7. Ядро JavaScript Cluu
Листинг 7.141. Пример использования метода watch() объекта Date
<script type="text/javascript" language»"JavaScript">
<!--
function alertme(id,oldValue,newValue)
{
document.writeln("myDate." + id + " изменено с " + oldValue
+ " на ") ;
document.writeln(newValue + "<br>");
return newValue;
}
var myDate = new Date();
Date.prototype . p = 1 ;
myDate.watch("p",alertme);
myDate.p = 2;
// — >
</script>
debugger JavaScript 1.2+, JScript 3.0+
aa Nav4+, NES3+, IE4+, Opera5+
Зарезервированное ключевое слово
Ключевое слово debugger зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
dprndpURIM JavaScript 1.5+, ECMAScript 3E+, JScript 5.5+
11 Nav6+, NES6+, IE5.5+
de codeURI (URIString)
§| Функция decodeURIO используется для замены всех управляющих последовательностей
в URIString (Универсальный идентификатор ресурса) на символы в соответствии со стан-
стандартом UTF-8. Функция возвращает декодированную строку.
ПРИМЕЧАНИЕ
Управляющие последовательности, которые не кодируются функцией
encodeUFMO (,, /, ?, :, ш, &., =, +, $), нельзя декодировать с помощью функции
decodeURIO. Для декодирования этих зарезервированных символов необходимо ис-
пользоввть функцию decodeURIComponentO.
В листинге 7.142 с помощью функции encodeURI() кодируется строка "Красное яблоко".
Результатом работы функции encodeURI() является та же строка, но с заменой пробе-
пробелов на их кодированный эквивалент — "%20". Затем эта закодированная строка декоди-
декодируется в ее первоначальную форму с помощью функции decodeURI().
Листинг 7.142. Использование функции decodeURIO.
<script type="text/javascript" language="JavaScript">
myString = "Красное яблоко";
document.write("Исходное предложение: " + myString + "<brXbr>");
myString = encodeURI(myString);
document.write("Кодированное предложение: " + myString + "<brXbr>");
myString = decodeURI(myString);
document.write("Декодированное предложение: " + myString + "<brXbr>");
</script>
decodeURIComponentO JavaScript 1.5+, ECMAScnpt^E+^JSaiPy.5+
decodeURIComponent(URIComponentString)
fe Функция decodeURIComponentO используется для замены всех управляющих последо-
последовательностей в URIComponentString (Универсальный идентификатор ресурса) на симво-
символы в соответствии со стандартом UTF-8. Функция возвращает декодированную строку.
С Ь 4 Часть III. Справочник по JavaScript
ПРИМЕЧАНИЕ
Функция decodeURIComponent() отличается от функции decodellRIO
тем, что она декодирует некоторые зарезервированные символы (,, /, ?, :, Ш, &., =, +, $),
которые не декодируются функцией decodeURIO. Именно поэтому метод
decodeURIComponent используется для декодирования только тех URI-строк, которые
были закодированы с помощью функции encodeURIComponentf)
t//% В листинге 7.143 с помощью функции encodeURIComponent() кодируется строка "вил-
^ ка, ложка , & нож". Результатом работы функции encodeURIComponent() является та же
строка, но с заменой пробелов, запятых и символа "&" заменены их кодированным эк-
эквивалентом. Затем эта закодированная URI-строка декодируется с помощью функции
decodeURI(). При этом обратите внимание, что эта функция декодирует только пробе-
пробелы. Для выполнения декодирования запятых и символа "&" необходимо использовать
функцию decodeURIComponent().
Листинг 7.143. Использование функции decodeURIComponentO
<script type="text/javascript" language="JavaScript ">
<! --
myString = "вилка, ложка, & нож";
document.write("Исходная фраза: " + myString + "<brXbr>");
myString = encodeURI(myString);
document.write("Кодированная фраза: " + myString + "<br><br>");
myString = decodeURI(myString);
document.write("Декодированная фраза: " + myString + "<br><br>");
myString = decodeURIComponent(myString);
document.write("Декодированный компонент фразы: " + myString
+ "<br><br>");
// "->
</script>
default JavaScript1.2+, JScript3.0+
Nav4+, NES3+, IE4+, Opera5+
Зарезервированное ключевое слово
# В настоящее время ключевое слово default не реализовано в языке JavaScript, однако оно
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
delete JavaScript 1.0+, ECMAScript 1E+, JScript 3.0+
Nav2+, NES3+, IE 4+, Opera3+
delete свойство
Оператор delete удаляет свойства объектов и элементы массивов, делая из значения нео-
неопределенными. Само освобождение памяти осуществляется сборщиком мусора JavaScript.
На некоторые объекты, например, переменные, созданные с помощью оператора var,
действие оператора delete не распространяется.
ПРЕДУПРЕЖДЕНИЕ
В версиях до JavaScript 1.2 оператор delete устанавливал зна-
значение свойства равным не неопределенному значению, a null.
j/t/% В коде листинга 7.144 показано использование оператора delete для удаления объекта Date.
^ Обратите внимание, что последний оператор document.write() не выводит на экран ни-
никаких сообщений, поскольку после использования оператора delete объект Date будет
неопределен.
Листинг 7.144. Использование оператора delete
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта theDate, содержащего текущую дату и время
// в часовом поясе Гринвича.
theDate = new Date();
Глава 7. Ядро JavaScript С О U
// Отображение содержимого объекта theDate на экране.
document.write("theDate=",theDate,"<Ьг>Удаление theDate!<br>");
// Удаление объекта theDate.
delete theDate;
//Попытка вывода на экран содержимого объекта theDate.
document.write("theDate=",theDate); //Объект theDate неопределен.
// — >
</script>
do ECMAScript 3.0+, ECMAScript 2E+, JScript 5.5+
Nav4+, NES3+, IE 5.5+, Opera5+
Зарезервированное ключевое слово
f Ключевое слово do используется в цикле do...while, т.е. его нельзя использовать в ка-
качестве имени переменной.
ц}Это ключевое слово зарезервировано. Более подробная информация по его использова-
^ нию приведена в описании цикла do...while.
dn while JavaScript 1.0+ , ECMAScript 1E+, JScript 3.0+
Nav2+, NES3+, IE 4+, Opera 3+
do{
оператор;
} while(выражение);
#Цикл do...while всегда выполняется один раз до вычисления параметра выражение. Пос-
После первого выполнения цикла вычисляется выражение в скобках. Если значение выраже-
выражения равно true, цикл выполняется снова. Если значение выражения равно false, выпол-
выполняется оператор, следующий за оператором while. В цикле должен указываться параметр
оператор, который изменяет переменную цикла и предотвращает возникновение беско-
бесконечного цикла. Кроме того, обратите внимание, что после правой скобки должна нахо-
находиться точка с запятой (;).
В листинге 7.145 цикл do...while используется для контроля доступа через ворота. Через
ворота могут пройти только три человека.
Листинг 7.145. Цикл do...while
<script type="text/javascript" language="JavaScript">
<! --
names = new Array("Менди","Майкл","Джефф","Билл","Майк");
х = 0; //индекс массива
document.write("Пропустить через вороша 3 человек:<Ьг>");
//Вывести на экран имена первых трех людей, которые могут
//пройти через ворота.
do
{
document.write((х+1),". ",names[x],"<br>");
х++; //увеличить Значение индекса на 1
}
while(x<3) ;
// -->
</script>
double JavaScript1.2+, ECMAScript 2E+, JScript 5.0+
Nav4+, NES3+, IE5+, Opera5+
Зарезервированное ключевое слово
fB настоящее время ключевое слово double не реализовано в серверной части языка
JavaScript, однако оно зарезервировано для будущего использования.
i л Поскольку это ключевое слово не реализовано, пример его использования не приводится.
JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
Nav2+, IE3+
Зарезервированное ключевое слово
2 D D Часть III. Справочник по JavaScript
Оператор else используется для задания альтернативной логики, если значение выраже-
выражения в соответствующем операторе if не равно true.
В листинге 7.146 приведен пример основной логики оператора else. Если значение вы-
выражения в операторе if не равно true, выполняется оператор else.
Листинг 7.146. Пример использования ключевого слова else.
if (something == true)
// Сделать что-нибудь.
else{
// Сделать что-нибудь другое.
pnrnripllRin JavaScript 1.5+, ECMAScript 3E+, JScript 5.5+
w IW Nav6+, NES6+, IE5.5+
encodeDRI (URIString)
k Функция encodeURI() используется для кодирования URIString (универсальный иден-
идентификатор ресурса) путем замены определенных символов управляющими последователь-
последовательностями в соответствии с кодировкой UTF-8.
ПРИМЕЧАНИЕ
Функция encodeURIf) не кодирует некоторые символы. Эти символы
перечислены в табл. 7.27.
Таблица 7.27.
Тип
Зарезервированные символы
Наулравляющие символы
Символы,
не кодируемые
Символ
„/, ?, :, @, &
буквы, цифры,
функцией
encodeURK)
*. \ (■)
Знак
В листинге 7.147 с помощью функции encodeURI() кодируется строка "Красное яблоко".
Результатом работы функции является та же строка, в которой пробелы заменены их
эквивалентом — %20.
Листинг 7.147. Использование функции encodeURIO
<html>
<script type="text/javascript" language="JavaScript">
<! --
myString = "Красное яблоко";
document.write("Исходное предложение: " + myString + "<ЬгХЬг>");
myString = encodeURI(myString);
document.write("Кодированное предложение: " + myString + "<ЬгХЬг>");
// -->
</script>
</html>
enCOdeURIComponent() JavaScript 1.5+, ECMAScript^JScripy.5+
encodeDRIComponent (URICampanentString)
Функция encodeURIComponent() используется для кодирования строки
URIComponentString (универсальный идентификатор ресурса) путем замены определенных
символов управляющими последовательностями в соответствии с кодировкой UTF-8.
ПРИМЕЧАНИЕ
Функция encodeURIComponentO не кодирует некоторые символы. Эти
символы перечислены в табл. 7.28.
Глава 7. Ядро JavaScript
Таблица
Тип
Неуправляющие символы
Знак
7.28.
Символы, не кодируемые
Символ
буквы, цифры, -, ., !,
#
функцией
~. *.'.(.)
encodeURK)
267
В листинге 7.148 с помощью функции encodeURIComponentO кодируется строка "вил-
"вилка, ложка, & нож". Результатом работы функции является та же строка, в которой про-
пробелы, запятые и символ & заменены их эквивалентами.
Листинг 7.148. Использование функции encodeURIComponentO
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Создание строки.
myString = "вилка, ложка, S нож";
document.write("Исходная фраза: " + myString + "<brXbr>");
//Кодирование строки и вывод ее на экране.
myString = encodeURIComponent(myString);
document.write("Кодированная фраза: " + myString + "<br><br>");
// -->
</script>
</html>
enum JavaScript 1.3+, ECMAScript 1E+, JScript 3.0+
Nav4.06+, IE4+
Зарезервированное ключевое слово
f Ключевое слово enum впервые было введено в JavaScript 1.3.Это слово зарезервировано
для будущего использования.
г/|Поскольку это ключевое слово не реализовано в языке JavaScript, пример его исполь-
1Р' зования не приводится.
Enumerator JScriPt30+
IE4+
var переменная = new Enumerator(коллекция)
f Объект Enumerator предоставляет доступ к элементам коллекции, позволяя выполнять
итерации по коллекции. Получение доступа к элементам коллекции требует перемеще-
перемещения объекта Enumerator к первому или следующему элемент за счет использования спе-
специальных методов. В отличие от массивов, перечислитель не может получить непосред-
ственый доступ к определенной позиции. Для создания объекта Enumerator используется
конструктор Enumerator(). Этот конструктор в качестве аргумента использует коллекцию.
Методы объекта Enumerator перечислены в табл. 7.29.
Таблица 7.29. Методы объекта Enumerator
Метод Описание
atEnd() Определяет, находится ли объект Enumerator в конце коллекции.
item() Возвращает текущий элемент коллекции.
moveFirstO Устанавливает объект Enumerator в соответствии с первым элементом
коллекции.
moveNextf) Перемещает объект Enumerator на следующий элемент коллекции.
В листинге 7.149 создается объект Enumerator, который используется для получения до-
доступа к элементам коллекции Drives.
С Ь О Часть III. Справочник по JavaScript
Листинг 7.149. Создание объекта Enumerator
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject") ;
var en = new Enumerator(fileSysObj.Drives);
Enumerator.atEnd() ^
enumeratarobj.atEnd()
Метод atEnd() объекта Enumerator возвращает значение true, если перечислитель ука-
указывает на последний элемент коллекции, в противном случае он возвращает значение
false. Значение true возвращается и в случае если коллекция пуста или не определена.
В листинге 7.150 метод atEnd() используется для определения момента прекращения
выполнения цикла for.
Листинг 7.150. Прекращение выполнения цикла с использованием метода atEndf]
<html>
<hl>Drive Letters and drive types:</hl>
<script language="JScript">
^1
// Создать объект Enumerator.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject") ;
var en = new Enumerator(fileSysObj.Drives) ;
// Вывести на экран имя и тип каждого диска
// Выполнить цикл по объекту Enumerator.
// Пока перечислитель не достиг конца коллекций,
// перейти к следующему элементу.
for (;!en.atEnd();en.moveNext())
{
document.write("Drive ",en.item().DriveLetter);
document.write(" is of type ",en.item().DriveType,"<br>");
}
// -->
</script>
</html>
Enumerator.itemO £
enumeratorobj.item()
Метод itemQ объекта Enumerator возвращает элемент коллекции, на который указыва-
указывает перечислитель. Если коллекция пуста или не определена, возвращается значение
undefined.
В листинге 7.151 метод itemQ используется для получения доступа к имени и типу те-
текущего диска.
Листинг 7.151. Получения доступа к дискам с помощью метода itemf]
<html>
<hl>Drive Letters and drive types.-</hl>
<script language="JScript">
<!--
// Создать объект Enumerator.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
var en = new Enumerator(fileSysObj.Drives);
// Вывести на экран имена и типы всех дисков,
for (;!en.atEnd() ;en.moveNext ())
{
document.write("Drive ",en.item().DriveLetter);
document.write(" is of type ",en.item().DriveType,"<br>");
}
// -->
</script>
</html>
Глава 7. Ядро JavaScript С О У
Enumerator.moveFirstO
enumeratorobj.moveFirst()
Метод moveFirst() объекта Enumerator перемешает перечислитель на начало коллекции.
Если коллекция пуста или не определена, возвращается значение undefined.
В листинге 7.152 объект Enumerator используется для получения доступа к именам и
типам дисков. Метод moveFirst() перемещает перечислитель на начало коллекции, что
позволяет определить состояние всех дисков.
Листинг 7.152. Перемещение перечислителя на начало коллекции с помощью
метода moveFirstO
<html>
<Ы>Типы и наименования дисков :</Ы>
<script language="JScript">
<!--
// Создать объект Enumerator.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
var en = new Enumerator(fileSysObj.Drives);
// Вывести на экран имена и типы всех дисков.
for (;!en.atEnd();en.moveNext())
{
document.write("Диск ",en.item().DriveLetter);
document.write(" типа ",en.item() .DriveType,"<br>" ) ;
}
document.write("<hl>Drive Status:</hl>");
// Переместить перечислитель на начало коллекции,
en.moveFirst () ;
// Определить степень готовности диска.
for (;!en.atEnd();en.moveNext())
{
if(en.item().IsReady)
{
document.write("Диск ",en.item().DriveLetter);
document.write(" готов!<br>");
else
document.write("Диск ",en.item().DriveLetter);
document.write(" не готов!<Ьг>");
II —>
</script>
</html>
Enumerator.moveNext()
enumeratorobj.moveNext()
Метод moveNext() объекта Enumerator перемешает перечислитель к следующему элементу
коллекции. Если коллекция пуста или не определена, возвращается значение undefined.
$ В листинге 7.153 метод moveNext() используется для перемещения перечислителя к сле-
дующему элементу коллекции.
Листинг 7.153. Перемещение к следующему диску с помощью метода moveNextO
<html>
<Ы>Типы и наименования дисков :</Ы>
<script language="JScript">
<!--
// Создание объекта Enumerator.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
var en = new Enumerator(fileSysObj.Drives);
270
Часть III. Справочник по JavaScript
// Отображение имен и типов всех дисков,
for (;!en -atEnd() ;en.moveNext())
document.write("Диск
document.write(" типа
,en.item().DriveLetter);
",en.item().DriveType,"<br>")
</script>
</html>
Error JScript 5.0+
IE5+
var переменная = new Error();
var переменная = new Error(число);
var переменная = new Error(число, описание);
/jc& Объект Error содержит информацию об ошибках. Конструкторы Еггог() можно исполь-
1" зовать для создания пользовательских сообщений об ошибках. Аргументы и свойства
объекта Error перечислены в табл. 7.30.
Таблица 7.30. Аргументы и свойства объекта Error
Tun
Параметр
Описание
Аргумент number Номер ошибки. Если этот аргумент отсутствует, ошибке
присваивается номер 0.
число Строка, описывающая ошибку. Если этот аргумент
отсутствует, описание ошибки будет содержать пустую
строку.
Свойство описание Устанавливает или считывает строку описания ошибки,
message Строка, содержащая сообщение об ошибке,
пате Возвращает строку, содержащую наименование ошибки,
число Устанавливает или считывает номер ошибки.
ПРИМЕЧАНИЕ
Номер ошибки - это 32-разрядное число, в котором старшие 16
разрядов представляют собой код оборудования, а младшие 16 разрядов - код самой
ошибки.
В листинге 7.154 создается объект Error.
Листинг 7.154. Создание объекта Error
var myError = ErrorC5,"My Error");
Error.description
JScript 5.0+
IE5+
errorobj.description
errorobj.description = строка
Свойство description объекта Error содержит описание ошибки. Этот метод допускает как
чтение, так и запись, т.е. используя этот метод, ошибкам можно присваивать описания.
В листинге 7.155 создается объект Error и выводится его описание.
Листинг 7.155. Вывод на экран свойства description объекта Error
<html>
<script language="JScript">
// Создание объекта Error.
var myError = new ErrorD5,"Серьезная ошибка!");
Глава 7. Ядро JavaScript с/ I
// Вывести на экран описания ошибки.
document.write("Описание настраиваемого сообщения об ошибке ' ") ;
document.write(myError.description,"'");
// —>
</script>
</html>
Error.message JScriPiE55+
errorobj.message
errorobj.message = строка
f Свойство message объекта Error возвращает выдаваемое пользователю сообщение об
ошибке. Это свойство полностью соответствует свойству description.
В листинге 7.156 создается объект Error и выводится сообщение об ошибке.
Листинг 7.156. Вывод на экран свойства message объекта Error
<html>
<script language="JScript">
<!--
// Создание объекта Error.
var myError = new ErrorD5,"Сообщение об ошибке!");
// Вывод на экран сообщения об ошибке.
document.write("Настраиваемое сообщение об ошибке 1П);
document.write(myError.message,"'");
// -->
</script>
</html>
Error.name y^
errorobj.name
Свойство name объекта Error возвращает наименование ошибки или тип исключения.
Если ошибка является ошибкой периода исполнения, свойство name содержит один из
типов исключений, перечисленных в табл. 7.31.
Таблица 7.31. Ошибки периода исполнения
Тип исключения
ConversionError
RangeError
ReferenceError
RegExpError
SyntaxError
TypeError
Описание
Возникает
Возникает
пределы.
Возникает
Возникает
Возникает
Возникает
типом.
при ошибочном преобразовании типов объектов.
в случае, если аргументы функции выходят за допустимые
при использовании ошибочных ссылок.
при ошибках компиляции регулярных выражений.
при наличии синтаксических ошибок.
в случае, если тип операнда не совпадает с ожидаемым
URIError Возникает при обнаружении запрещенного URI.
В листинге 7.157 создается объект Error, а затем на экран выводится содержимое его свой-
свойства name.
Листинг 7.157. Использование свойства пате для вывода на экран наименования
ошибки
<html>
<script language="JScript">
с_ / с_ Часть III. Справочник по JavaScript
// Создание объекта Error.
var myError = new ErrorD5,"Сообщение об ошибке!");
// Отображение наименования ошибки.
document.write("Наименование ошибки "');
document.write(myError.name,"'" ) ;
// — >
</script>
</html>
Error.number J
errorobj.number
errorobj.number = число;
Свойство число объекта Error содержит номер ошибки. Этот метод допускает как чтение,
так и запись, т.е. используя этот метод, ошибкам можно присваивать номера.
|В листинге 7.158 создается объект Error, а затем на экран выводится содержимое его свой-
ства число.
Листинг 7.158. Использование свойства number для вывода на экран номера ошибки
<html>
<script language="JScript">
<! --
// Создание объекта Error.
var myError = new ErrorD5,"Серьезная ошибка!");
// Отображение номера ошибки.
document.write("Номер настраиваемой ошибки ");
document.write(myError.number) ;
// —>
</script>
</html>
escaoeM JavaScript 1.0+, ECMAScript 1E+, JScript 3.0+
H u Nav2+, NES2+, IE4+, Opera3+
escape (строка)
escape(выражение)
?| Функция escape() в качестве аргумента использует объект или выражение и возвраща-
ет строку, в которой все небуквенио-цифровые символы преобразованы в их числовые
эквиваленты в виде %хх, где хх — соответствующее символу шестнадцатеричное число.
В листинге 7.159 приведен пример использования функции escape(). Функция принимает
текст и возвращает строку с управляющими символами.
Листинг 7.159. Пример использования функции escaped
<script type="text/javascript" language="JavaScript">
var newString = escape("Tom & Jerry Show"};
</script>
Приведенная в листинге функция возвратит строку "Tom%20%26%20Jerry%20show". Об-
Обратите внимание, что пробелы были заменены кодами "%20", а символ & — кодом %26.
В листинге 7.160 приведен пример использования функции escape() для преобразования
вводимого пользователем текста.
Листинг 7.160. Пример возвращения значения функцией escaped
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Отображение содержимого преобразованной строки,
function showEscapeVal(){
alert("Значение функции escape:"+escape(document.forml.inputl.value));
Глава 7. Ядро JavaScript С. / О
II —>
</script>
<form name="forml">
Enter input:
<input type="text" name="inputl" size=0">
<input type="button" value="Show Escape Value'
onClick='showEscapeVal () '>
</form>
</body>
</html>
gVai/\ JavaScript 1.0+, JScript 1.0+
u Nav2+, NES2+, IE3+, Opera3+
eval (команда)
eval{строка)
Функция eval() в качестве аргумента использует строку операторов языка JavaScript и
выполняет указанные в строке операторы. Функция возвращает значение выполненного
оператора.
! Функция eual() эволюционировала вместе с языком JBvaScript. В рвн-
них выпусках JavaScript вврсии 1.0 функция еиаЦ) была всего лишь встровнной фун-
функцией. В версии 1.1 появился метод еиаЦ). В пврвых выпусквх версии JBVBScript 1.2
eval() сновв оствлвсь только встроенной функцией. Однвко с выходом NevigBtor 4.02
ewain ствлв и встроенной функцией, и мвтодом.
В листинге 7.161 приведен пример использования функции eval() для выполнения вве-
введенной пользователем команды. Просто введите команду языка JavaScript в текстовое поле
и щелкните на кнопке Execute (Выполнить). После щелчка на кнопке Execute вызыва-
вызывается функция eval(), которая запускает введенную команду.
Листинг 7.161. Простое использование функции eval[)
<html>
<body>
<script type="text/javascript" language="JavaScript" >
// Данная функция выполняет команду, введенную в текстовое поле,
function run(){
eval (document.forml.inputl.value);
}
// -->
</script>
<form name="forml">
Enter a Javascript command in the text field and click
the "execute" button to execute the command.
<br><br>
Command:<input type="text" name="inputl" size=0">
<br>
<input type="button" value="execute" onClick='run () '>
</form>
</body>
</html>
eXDOrt JavaScript 1.2+, ECMAScript 1E+
K Nav4+
export
^ Ключевое слово export используется сценариями поддержки безопасности, обеспечива-
обеспечивающее для других неподписанных сценариев доступ к объектам, свойствам и методам
данного сценария.
С /4 Часть III. Справочник по JavaScript
i x| Влистинге 7.162 приведен пример использования ключевого слова export. В коде JavaScript
Р^ ключевое слово export используется для открытия доступа других неподписанных сцена-
сценариев к переменным name и city и функции showName(). Другие сценарии могут полу-
получить доступ к переменным и функции с помощью ключевого слова import.
Листинг 7.162. Пример использования ключевого слова export
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Объявление переменных,
var name = "Джон Смит" ;
var city = "Атланта";
function showName(){
alert("Ваше имя: " + name);
// Сделать переменные name и city и функцию showName
// доступными для других сценариев,
export name, city, showName
</script>
</body>
</html>
extends JavaScript 1.3+, ECMAScript 1E+
Nav4.06+
Зарезервированное ключевое слово
#S| Ключевое слово extends было введено в JavaScript 1.3 и в настоящее время зарезерви-
«» ровано для будущего использования.
Данное ключевое слово в настоящее время не реализовано в языке JavaScript.
JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
Ключевое слово false в настоящее время не реализовано в языке JavaScri pt. Оно зарезер-
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
final JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
Ключевое слово final в настоящее время не реализовано в языке JavaScript. Оно зарезер-
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
float JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
Ключевое слово float в настоящее время не реализовано в языке JavaScript.Оно зарезер-
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+
for([начальный оператор;][условие;][инкремент;]){
код;
Глава 7. Ядро JavaScript tz. / U
f Ключевое слово for используется для организации цикла, состоящего из трех необяза-
необязательных выражений, заключенных в скобки и разделенных запятыми, за которыми сле-
следуют операторы тела цикла.
Выражение начальный оператор является оператором языка JavaScript или объявлением
переменной. Выражение условие — это необязательное выражение, значение которого вычис-
вычисляется при, каждом выполнении цикла. Если условие, содержащееся в выражении условие,
удовлетворяется, выполняются все операторы тела цикла. Выражение инкремент указывает
увеличивается или уменьшается переменная цикла. И, наконец, код — это операторы язы-
языка JavaScript, которые выполняются каждый раз при выполнении параметра условие.
В листинге 7.163 приведен пример использования цикла, в котором оператор
document.write выполняется девять раз. В качестве переменной цикла объявляется перемен-
переменная i. которой присваивается значение 0. Затем при каждом выполнении цикла текущее
значение переменной цикла сравнивается с числом 9. Если значение i меньше 9, оно
увеличивается на единицу и выполняется оператор document.write.
Листинг 7.163. Пример использования цикла for
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Выполнить цикл 9 раз и вывести на экран текст,
// указывающий номер итерации.
for (i=0; i<9; i++){
document.write("Итерация цикла " + i + "<br>");
}
// -->
</script>
</body>
</html>
for Tn JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
for(переменная in объект) {
код;
}
& Объект for...in выполняет цикл по указанной переменной для всех свойств объекта. Опе-
' раторы, содержащиеся в теле цикла, выполняются по одному разу для каждого свой-
свойства объекта. Параметр переменная итерируется по всем свойствам параметра объект. Об-
Область код включает операторы языка JavaScript, которые должны выполняться для каждого
свойства.
В листинге 7.164 приведен пример использования объекта forin. Функция showProperties
в качестве аргументов принимает тип объекта и имя объекта. Затем выполняется цикл
form, который выводит на экран все свойства объекта obj и их значения.
Листинг 7.164. Использование объекта for...in
<html>
<body>
<script type="text/javascript" language = "JavaScript>
// Функция выводит на экран свойства указанного объекта,
function showProperties(obj, objName) {
var result;
for (var i in obj) {
result += i + " = " + objfi] + "<br>";
}
document.write("Свойства для" + objName + " объекта:" + "<br><br>");
document.write(result);
}
// -->
</script>
276 Часть III. Справочник по JavaScript
<form name="forml">
<input type="button" value="Get Button Properties" name="buttonl"
onClick='showProperties(this, this.name)'>
</form>
</body>
</html>
function JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
function имя(парам1, парам2, ..., парамЫ)
function имя()
Й^ Ключевое слово function используется для определения функций языка JavaScript. Фун-
«" кции языка JavaScript, как правило, содержат несколько операторов языка JavaScript,
сгруппированных для выполнения определенной задачи, имя — имя функции, а парам!
— парамИ — любые параметры функции.
В листинге 7.165 приведен пример использования ключевого слова function. Ключевое
слово function объявляет функцию sendMessage.
Листинг 7.165. Пример использования ключевого слова function
<html>
<script type="text/javascript" language="JavaScript">
<!--
function sendMessage(){
alert("Ключевое слово function используется для объявления
^функции sendMessage");
}
// -->
</script>
</html>
FiinrtionM JavaScript 1.0+, ECMAScript 1E+, JScript 2.0+
U Nav2+, NES2+, IE3+, Opera3+
var переменная = new Function ()
var переменная = new Function (int)
var переменная = new Function (aprl, . . . , aprN)
{tQfc Объект Function() — это конструктор, который создает объект Function. В табл. 7.32 пе-
» речислены различные методы и свойства объекта Function.
Таблица 7.32, Методы и свойства объекта Function
Тип Параметр Описание
Свойство arguments Массив аргументов функции
arity Количество ожидаемых функцией аргументов
callee Содержит код выполняемой в настоящий момент функции
caller Ссылка на вызывающую функцию данной функции
constructor Функция, которая создает прототип объекта Function
length Возвращает количество ожидаемых функцией аргументов
prototype Прототип класса объектов
Метод apply() Применяет метод к нескольким объектам
call() Позволяет вызывать методы других функций
toSource() Создает копию объекта function
toString() Преобразует функцию в строку
valueOf() Возвращает исходной код функции в строковом формате
i В листинге 7.166 приведен пример создания объекта Function в одной строке. В этом при-
примере при вызове функция изменяет цвет фона страницы на синий.
Глава 7. Ядро JavaScript с. I I
Листинг 7.166. Установка цвета фона с помощью объекта Function
<script type="text/javascript" language="JavaScript">
<!--
// Создание функции для изменения цвета фона.
var setBGColor = new Function(document.bgColor='blue');
// "->
</script>
Function.apply() JavaScript 1.3+ ECMAScript 1E+
vv '" Nav4.06+, IE3+, Opera3+
function.apply ()
f Метод apply() объекта Function используется для обеспечения возможности применения
метода одного объекта к другому объекту. Использование метода apply() позволяет из-
избежать необходимости создания одних и тех же методов для разных объектов.
В листинге 7.167 приведен пример использования метода apply() по отношению к двум
объектам.
Листинг 7.167. Использование метода applyO
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Объявление функции home с двумя свойствами.
function home(number, street){
var num = number;
var str = street;
document.write("номер дома: " + num + "<br>");
document.write("название улицы: " + str + "<br>");
}
// Добавление к функции дополнительного свойства
// Применение функции home
function bigHome(number, street, rooms){
var numRooms = rooms;
home.apply(home,arguments);
document.write("Число комнат: " + numRooms + "<br>");
}
myHome = new bigHomeA01, Main, 5) ;
// -->
</script>
</body>
</html>
Function.arguments JavaScript 1.1+ JScript 2.0+ ECMAScript 1E+
э Nav3+, NES2+, IE3+, Opera3+
function.arguments
f Свойство arguments объекта Function — это массив, в котором содержатся передаваемые
функции аргументы. Количество аргументов, передаваемых объявленной функции, при
использовании массива arguments может быть больше, чем количество параметров. Массив
arguments доступен только внутри функции. Попытка вызова массива arguments вне фун-
функции приводит к ошибке.
i /jB листинге 7.168 приведен пример использования массива arguments. Выполняется метод
ir document .write, который вызывает функцию foo. Функция foo использует два аргумента
и вызывает функцию foobar с параметром 123. Функция foobar возвращает количество
своих аргументов и передает вызвавшей ее функции, в данном случае функции foo, свой
второй аргумент.
Листинг 7.168. Использование свойства arguments
<html>
<body>
<script type="text/javascript" language="JavaScript">
278 Часть III. Справочник по JavaScript
// Функция foo вызывает функцию foobar с параметром 123.
function foo(a,b) {
foobarA23) ;
document.write("Работа с функцией foo завершена" + "<br>");
}
// Функция foobar с помощью свойства arguments.
// Выводит возвращаемое значение на экран,
function foobar(x) {
document.write(foobar.arguments.length + "<br>");
document.write(foobar.arguments.caller.b + "<br>");
}
document.write(fooB1,44) + "\n");
// —>
</script>
</body>
</html>
Function.arity
function.arity
Свойство arity объекта Function содержит количество объявленных аргументов, которое
функция ожидает получить. Это свойство доступно, если атрибуту language дескриптора
script присвоено значение JavaScriptl.2. Использование этого свойства в JavaScript 1.4
запрещено. В JavaScript 1.5 это свойство заменено на свойство length.
В листинге 7.169 приведен пример использования свойства arity. В первой выводимой на
экран строке содержится количество передаваемых функции аргументов. Вторая строка
является результатом выполнения сценария.
Листинг 7.169. Пример использования свойства arity
<html>
<body>
<script type="text/javascript" language»"JavaScript">
// Функция вычитает второе число из первого,
function subtract(first, second){
var result = first - second;
return result;
// Отображение результата.
document.write("arity = " + subtract.arity + "<br>")
document.write("Результат работы функции вычитания; " +
subtract D ,3) ) ;
</script>
</body>
</html>
Function.call() u A ne ??
x/ Nav4.06+, IE3+, Opera3+
function.call(this)
function.call(this, aprl, apr2, ..., aprN)
Метод call() объекта Function позволяет вызывать метод другого объекта. Как показано
во второй строке описания синтаксиса, функция может принимать необязательные ар-
аргументы.
В листинге 7.170 приведен пример применения метода call(). В сценарии создаются объек-
объекты person и author. В процессе создания объекта author используется метод call().
Листинг 7.170. Использование метода call[) объекта Function
<script type="text/javascript" language="JavaScript">
Глава 7. Ядро JeveScript 2 / У
// Создать объект person, который используется для
// создания кодирования персоналий,
function person (author, name){
this, name = name;
this.author = true;
}
// Создать объект author,
function authors(name, books)(
this.books = books;
person.call(this, name);
}
authors.prototype = new person();
// Создать нового автора.
var myAuthor = new authors("Allen", 5) ;
// -->
</script>
Function.callee ^script ll+
Nav4+, IE5+
function.callee
#Вверсиях, предшествующих JavaScript 1.3 включительно, свойство callee объекта Function
было свойством свойства Function.arguments. Начиная с версии JavaScript 1.4, callee пред-
представляет собой локальное свойство. Оно используется для задания кода выполняемой
функции. Данное свойство доступно только внутри тела функции.
В листинге 7.171 приведен пример использования свойства callee для получения значе-
значения свойства Function.callee.
Листинг 7.171. Получение доступа к свойству callee
<html>
<script type="text/javascript" language="JavaScript">
function display () (
alert( display.callee );
}
// -->
</script>
<body>
<form name="forml">
<input type="button" value="Get callee property"
onClick='display()'>
</form>
</body>
</html>
Function.caller JavaScript 1.1+, JScript 2.0+
Nav3+, NES2+, IE3+, Opera3+
function.caller
Свойство caller объекта Function используется для ссылки на функцию, которая вызва-
вызвала выполняемую функцию. Использование данного свойства в JavaScript 1.3 запрещено. В
версиях JavaScript 1.4 и 1.5 данное свойство отсутствует.
1/J В листинге 7.172 приведен пример использования свойства caller для получения имени
А функции, вызвавшей функцию John().
Листинг 7.172. Использование свойства caller
<html>
<script type="text/javascript" language="JavaScript">
<! --
//Объявление простой функции Alice(), которая вызывает функцию John()
function Alice () (
var Boss = true;
C_ oU Часть III. Справочник по JavaScript
John () ;
}
// Данная функция выводит на экран имя вызвавшей ее функции,
function John(){
myBoss = John.caller.name;
document.write("The boss is: " + myBoss + "<br>");
}
// -->
</script>
Function.Constructor JavaScript 1.1+, JScript 2.0*
Nav3+, NES2+, IE4+
function.constructor
|c& Свойство constructor объекта Function используется для создания прототипа объекта.
yj В листинге 7.173 приведен пример использования свойства constructor. Объявлен объект
i^ Function с именем drive. Затем с помошью свойства constructor определяется является ли
drive объектом Function.
Листинг 7.173. Использование свойства constructor
<html>
<script type="text/javascript" language="JavaScript">
<! --
function drive () {
return "something";
>
if(drive.constructor == Function)
{
document.write("Конструктор совпадает");
}
// — >
< /script>
</html>
Function.length JavaScript 1.1+, ECMAScript 1E+
a Nav3+
function.length
# Свойство length объекта Function используется для указания ожидаемого функцией ко-
количества аргументов. Не следует путать это свойство со свойством arguments.length, ко-
которое содержит действительное количество переданных функции аргументов.
Ц^ В листинге 7.174 приведен пример использования свойства length.
Листинг 7.174. Использование свойства length
<html>
<script type="text/javascript" language="JavaScript">
<! --
// Функция для вывода аргументов на экран.
function show(parml, parm2) {
alert ( "Length is: " + length ) ;
}
// -->
</script>
<body>
Щелкните на кнопке для получения количества аргументов, ожидаемых
функцией show.
<br><br>
<form name="forml">
<input type="button" value="Get length property"
onClick='show(l, 2) '>
</form>
</body>
</html>
Глава 7. Ядро JavaScript С. О I
Function.DrototVPe JavaScript 1.1+, ECMAScript 1E+, JScript 2.0+
runuuun.p.uiuiypc Na3+ NES2+ |EJ+ Opea3+
function.prototype.свойство
function.prototype.метод
Свойство prototype объекта Function содержит объект, который служит прототипом для
создания классов. Свойство prototype позволяет добавлять к существующему классу но-
новые свойства и методы путем добавления свойств и методов к прототипу конструктора
класса.
В листинге 7.175 приведен пример использования свойства prototype. В коде объявляется
функция setTask, которая просто устанавливает значение переменной task. Затем для
объекта String создается новый прототип с именем duty. Прототип duty вызывает функ-
функцию setTask. После этого все объекты String в примере будут иметь метод setTask.
Листинг 7.175. Примериспользования свойстве prototype
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
var mytask = new String () ;
// функция, которая устанавливает Значение строки task,
function setTask(str){
var task="fleBO4KH, пошли в магазин";
if(str != null){
task = str;
}
return task;
}
String.prototype.duty = setTask;
document.write("Первая Задача: " + mytask.duty("Nothing") + "<br>");
document.write("Вторая задача: " + mytask.duty());
// -->
</script>
</body>
</html>
Function.toSource()
function.toSource()
Метод toSource() объекта Function позволяет создать копию объекта.
В листинге 7.176 метод toSource() используется применительно к новой строке. Код, при-
7 веденный в листинге, выводит в окне браузера следующее:
(new String("Это источник"))
Листинг 7.176. Использование метода toSource[).
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Создать новый экземпляр объекта String,
var aString = new String("Это источник");
// Вызвать метод toSource().
bstring = aString.toSource();
// Вывести на экран возвращаемое значение метода toSource().
document.write(bString);
</script>
</body>
</html>
СОС Часть III. Справочник по JavaScript
Function.toString() JavaScri^tTi+1 ECMAScript 1E+ JScript 2.0+
sw Nav3+, NES2+, IE4+, Opera3+
function.toString()
# Метод toStringO объекта Function используется для преобразования.функции в тексто-
текстовую строку.Данный метод преобразует функцию в исходный код JavaScript, который оп-
определяет функцию. Преобразованная строка включает все аспекты функции.
В листинге 7.177 приведен пример использования метода toStringO для преобразования
функции в текстовую строку.
Листинг 7.177. Пример использования метода toStringO
<html>
<body>
<script type="text/javascript" languages"JavaScript">
// функция просто выводит на экран текст
function writeTeKt(){
document.write("Некоторый текст");
// Вызвать метод toStringO
var func = writeText.toString() ;
// Вывод результата на экран.
document.write("Строковое представление функции writeText");
document, write (" выглядит как: " + "<Ьг><ЬгХЬ>") ;
document.write(func + "</b>");
</script>
</body>
</html>
Function.VallieOf() JavaScript 11+. 'Script 2.0+
x/ Nav3+, IE4+, Opera5+
function.valueOf()
& Метод va!ueOf() объекта Function используется для получения исходного кода функции
в строковом представлении. Как правило, этот метод используется внутри интерпрета-
интерпретатора JavaScript, а не в самом коде.Тем не менее, при необходимости его можно вызы-
вызывать прямо из кода.
В листинге 7.178 приведен пример использования метода va!ueOf(). Функция myTest вы-
вызывает метод va!ueOf() для преобразования функции в строковое представление.
Листинг 7.178. Использование метода valueOf[)
<html>
<body>
<script type="text/javascript" language="JavaScript">
document.write("Ниже приводится значение, возвращаемое из
••вызывающей valuesOf() для" + " the myTest function." + "<br><br>") ;
// Вызов функции myTest.
document.write( "<b>" + myTest() );
function myTest()
var temp;
return (myTest.valueOf() );
1
</script>
</body>
</html>
GetObject JScriP4 *J+
GetObject (путь)
GetObject(путь, тип.приложения)
Глава 7. Ядро JavaScript
283
Функция GetObject из файла возвращает ссылку на объект автоматизации. Функция мо-
может принимать до двух параметров. Параметр путь определяет полный путь и имя фай-
файла, содержащего объект автоматизации.
ШшшшшишмиШ Некоторые приложения, из которых можно получить ссылку не объект,
позволяют ективироветь только честь фейла. Этого можно добиться, укезев в конце
пареметре путь восклицетельный знек (!), зе которым следует строке, укезывеющея,
какую честь фейле необходимо ективироветь.
Атрибут пшп.пршюжения — это идентификатор программы или описание формата объекта.
Часть приложение содержит имя приложения, предоставляющего объект, а тип указы-
указывает тип создаваемого объекта. Если этот параметр не передается, объект автоматизации
попытается определить, какое приложение запустить.
ПРИМЕЧАНИЕ
При необходимости создения экземпляре объекте без зепуске объекте
с зегруженным фейлом, воспользуйтеся функцией ActiueXObject
В листинге 7.179 приведен пример синтаксиса, который можно использовать для возврата
из файла объекта Automation. Вторая часть листинга демонстрирует активацию части объек-
объекта.
Листинг 7.179. Использоввние функции GetObject
//Возврат объекта для данного файла Excel.
var myObj = GetObject("С:\\TEMP\\TESTOBJ.XLS");
//Активизация первого листа файла.
var myObjRef = GetObject("С:\\TEMP\\TESTOBJ.XLS!sheetl");
JavaScript 1.0+, JScript 3.0+, ECMAScript 1E+
Nav2+, NES2+, IE3+, Opera3+
Global
Базовый объект JavaScript
\ Объект Global — это базовый объект языка JavaScript. Свойства и функции, не связан-
связанные с другими объектами, относятся именно к данному объекту. Свойства и методы
объекта Global перечислены в табл. 7.33.
Тип
Свойство
Метод
Таблица 7.33.
Параметр
Infinity
NaN
Number
String
undefined
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
Свойства и функции объекта Global
Описание
Ключевое слово, которое служит для представления
положительной бесконечности
Служит для представления объекта, который не
является эквивалентным какому-либо числу
Преобразует объект в число
Преобразует объект в строку
Служит для предстевления неопределенного значения
Декодирует универсальный идентификатор ресурса
Декодирует универсельный идентификатор ресурса,
закодированный методом encodeURIComponent()
Кодирует полный универсальный идентификатор ресурса
Кодирует компонент универсального идентификатора
ресурса
284
Тип Параметр
escape))
eval()
isFinitef)
isNaN()
parseFloatf)
parselnt()
unescape()
Часть III. Справочник по JavaScript
Описание
Возвращает строку, в которой все небуквенно-цифровые
символы преобразованы в их числовые эквиваленты
Принимает строку операторов языка JavaScript и
выполняет их как исходный код JavaScript
Используется для определения того, имеет ли
переменная конечные пределы
Используется для определения того, содержит ли
переменная число
Используется для преобразования строки в число типа
float
Используется для преобразования строки в целое число
Метод принимает шестнадцатеричное значение и
возвращает его эквивалент в кодировке ISO-Latin-1 ASCII
yj Примеры по каждому свойству и функции приведены в отдельных пунктах. Обратите
<£^ внимание, что свойства и функции применяются без ссылки на объект Global.
Gl0bal.deC0deURI() JavaScript 1.5+, ECMAScrjpt£E+^JScripy.5+
decodeURI (URIStrxng)
0& Функция decodeURI() используется для замены всех управляющих последовательностей
»> в URIString (универсальный идентификатор ресурса) на символы в соответствии со стан-
стандартом UTF-8. (Более подробная информация по стандарту UTF-8.) Функция возвращает
декодированную строку.
ПРИМЕЧАНИЕ
Управляющие последовательности, которые не кодируются функцией
encodeURID [,, /, ?, :, (Ш, S., =, +, $], нельзя декодировать с помощью функции
decodeURI[). Для декодирования этих зарезервированных символов необходимо ис-
использовать функцию decodeURIComponentl).
В листинге 7.180 с помощью функции encodeURI() кодируется строка "Красное яблоко".
Результатом работы функции encodeURI() является та же строка, но с заменой пробе-
пробелов на их кодированный эквивалент — "%20". Затем эта закодированная строка декоди-
декодируется в ее первоначальную форму с помощью функции decodeURI().
Листинг 7.180. Использование функции decodeURIO
<html>
<script type="text/javascript" language="JavaScript">
// Создание строки.
myString="Красное яблоко";
document.write("Исходное предложение: "
// Кодирование строки.
myString=encodeURI(myString);;
document.write("Кодированное предложение:
//Декодирование строки.
myString=decodeURI(myString);;
document.write("Декодированное предложение:
</script>
</html>
+ myString + "<brXbr>");
+ myString + "<brXbr>")
myString
"<brXbr>") ;
Глава 7. Ядро JavaScript cob
Global.deCOdeURICompOnent() JavaScript 1.5+, ECMAS«ipy+E+^JScripy.5+
decodeURIComponent (URIComponentString)
f Функция decodeURIComponent() используется для замены всех управляющих последо-
последовательностей в URIComponentString (универсальный идентификатор ресурса) на симво-
символы в соответствии со стандартом UTF-8. Функция возвращает декодированную строку.
ПРИМЕЧАНИЕ
Функция decodeURIComponentl) отличается от функции decodeURU)
тем, что она декодирует некоторые зарезервированные символы [,, /, ?, :, @, &, =, +, $),
которые не декодируются функцией decodeURIO Именно поэтому метод
decodeURIComponent используется для декодирования только тех URI-строк, которые
были закодированы с помощью функции encodeURIComponent[).
В листинге 7.181 с помощью функции encodeURIComponent() кодируется строка "вил-
"вилка, ложка, & нож". Результатом работы функции encodeURIComponent() является та же
строка, но с заменой пробелов, запятых и символа & их кодированным эквивалентом.
Затем эта закодированная URI-строка декодируется с помощью функции decodeURI().
При этом обратите внимание, что эта функция декодирует только пробелы. Для выпол-
выполнения декодирования запятых и символа & необходимо использовать функцию
decodeURIComponentQ.
Листинг 7.181. Испопьзование функции decodeURlComponent()
<html>
<script type="text/javascript" language="JavaScript">
<! --
// Создание строки.
myString="BHnKa, ложка, & нож";
document.write("Исходная фраза: " + myString + "<br><br>");
//Кодирование строки с помощью функции enocdeORIComponent.
myString=encodeURIComponent(myString);;
document.write("Кодированная1 фраза: " + myString + "<brxbr>");
// Декодирование строки с помощью функции decodeURIComponent.
myString=decodeURIComponent(myString);;
document.write("Декодированный компонент фразы: " + myString +
"<br><br>") ;
// -->
</script>
</html>
Global.enCOdeURI() JavaScript 1.5+, ECMAScript 3E+, JScript 5.5+
encodeURI (URIString)
Функция encodeURI() используется для кодирования URI путем замены определенных
символов управляющими последовательностями в соответствии с кодировкой UTF-8.
Функция encodeURU) не кодирует некоторые символы. Эти символы
перечислены в табл. 7.34.
Таблица 7.34. Символы, не кодируемые функцией encodeURK)
Тип Символ
Зарезервированные символы ,, /, ?, :, @, &, =, +, $
Не управляющие символы буквы, цифры, -, ., !, ~, *, ', (,)
Знак #
286 Часть III. Справочник по JavaScript
В листинге 7.182 с помощью функции encodeURI() кодируется строка "Красное яблоко",
Результатом работы функции является та же строка, в которой пробелы заменены их эк-
эквивалентом —
Листинг 7.182. Использование функции encodeURK)
<html>
<script type="text/javascript" language="JavaScript">
<! --
// Создание строки.
myString="Красное яблоко";
document.write("Исходное предложение: " + myString + "<br><br>");
// Кодирование строки и вывод результата.
myString=encodeURI(myString) ;
document.write("Кодированное предложение: " + myString +
"<br><br>") ;
// -->
</script>
</html>
Global.enCOdeURIComponentQ JavaScript 1.5+,
encodeURIComponent (URIComponentString)
Функция encodeURICoraponentO используется для кодирования строки
URIComponentString (универсальный идентификатор ресурса) путем замены определен-
определенных символов управляющими последовательностями в соответствии с кодировкой UTF-
8. Функция принимает URI-компонент и, следовательно, кодирует зарезервированные
символы.
ПРИМЕЧАНИЕ
Функция encodeURIComponentl) не кодирует некоторые символы. Эти
символы перечислены в табл. 7.35.
Таблица 7.35. Символы,
Тип
Не управляющие символы
Знак
не кодируемые
функцией
Символ
буквы,
#
цифры, -,
encodeURK)
.,!,-,*, ', (,)
В листинге 7.183 с помощью функции encodeURICoraponentO кодируется строка "вил-
"вилка, ложка, & нож". Результатом работы функции является та же строка, в которой про-
пробелы, запятые и символ & заменены их эквивалентами.
Листинг 7.183. Использование функции encodeURfComponentO
<html>
<script type="text/javascript" language='JavaScript'>
<! --
// Создать новую строку.
myString="fork, spoon, & knife";
document.write("The original phrase: " + myString + "<br><br>");
// Кодирование строки и вывод результата на экран.
myString = encodeURIComponent(myString);
document.write("The encoded phrase: " + myString + "<br><br>");
// -->
</script>
</html>
Global.eSCaoeO JavaSoft 1.0+, ECMAScript 1E+, JScript 1.0+
U M U Nav2+, NES2+, IE3+, Opera3+
escape (строка)
escape(выражение)
Глава 7. Ядро JavaScript CO/
Функция escape() в качестве аргумента принимает объект или выражение и возвращает
строку, в которой все небуквенно-цифровые символы преобразованы в их числовые эк-
эквиваленты в виде %ХХ, где XX — соответствующее символу шестнадцатеричное число.
В листинге 7.184 приведен пример использования функции escape(). Функция принимает
текст и возвращает строку с управляющими символами.
Листинг 7.184. Пример использования функции escaped.
<script type="text/javascript" language="JavaScript">
var newString = escape("Tom & Jerry Show");
</script>
Приведенная в листинге функция возвратит строку "Tom%20%26%20Jerry%20show". Об-
Обратите внимание, что пробелы были заменены кодами "%20", а символ & — кодом %26.
В листинге 7.185 приведен пример использования функции escape() для преобразования
вводимого пользователем текста.
Листинг 7.185. возврата значения функцией escaped
<html>
<body>
<script type="text/javascript" language="JavaScript">
^ i — —
// Выводит на экран содержимое преобразованной строки.
function showEscapeVal(){
document.write(escape(document.forml.inputl.value);
}
// "->
</script>
<form name="forml">
<input type="text" name="inputl" size=30>
</form>
</body>
</html>
Glnhal pval(\ JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
v; Nav2+, NES2+, IE3+, Opera3+
eval (команда)
eval (строка)
& Функция eval() в качестве аргумента принимает строку операторов языка JavaScript и
' выполняет указанные в строке операторы. Функция возвращает значение выполненного
оператора.
ПРИМЕЧАНИЕ
Функция eual() эволюционировеле вместе с языком JeveScript. В рен-
них выпускех, т.е. JeveScript 1.0, функция eval() быле всего лишь встроенной функцией.
В версии 1.1 был добеелен метод eval(). В аерсии JeveScript 1.2 eval() снове остелесь
только встроенной функцией. Однеко с выходом Nevigetor 4.02, eval() стеле и встро-
встроенной функцией, и методом. Нечинея с версии JeveScript 1.4, метод eval() стел фун-
функцией верхнего уровня, не связенной ни с одним объектом.
В листинге 7.186 приведен пример использования функции eval() для выполнения вве-
денной пользователем команды.Просто введите команду языка JavaScript в текстовое поле
и щелкните на кнопке Execute (Выполнить). При щелчке на кнопку Execute вызывается
функция eval(), которая запускает введенную команду.
Листинг 7.186. Простое использование функции evald
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Данная функция выполняет команду, введенную в текстовое поле,
function run(){
eval (document.forml.inputl.value);
288 Часть III. Справочник по JavaScript
</script>
<form name="forml">
Введите команду JavaScript в текстовое поле и щелкните иа кнопке
"execute" для выполнения команды.
<Ьг><Ьг>
Command:<input type="text" name="inputl" size=0">
<br>
<input type="button" value="execute" onClick='run()'>
</form>
</body>
</html>
filnhal Infinitv JavaScript 1.3+, jScript 3.0+, ECMAScript 1E+
d ' Nav4.06+, IE4+, Opera3+
Infinity
& Ключевое слово Infinity представляет положительную бесконечность.
В листинге 7.187 приведен пример использования ключевого слова Infinity. На экране
имеется текстовое поле, позволяющее ввести значение, которое будет сравниваться с
Infinity. При вводе произвольного числа, оно окажется меньше Infinity, но если ввести
слово Infinity, оно будет равно Infinity.
Листинг 7.187. Пример использования свойства Infinity
<html>
<body>
<script type="text/javascript" languages"JavaScript" >
<! --
//Функция сравнивает значение, введенное пользователем, с Infinity
function checkNum(){
input=document.forml.num.value;
if(input < Infinity){
alert("Banie число меньше Infinity");
}
else if(input > Infinity) {
alert("Ваше число больше Infinity");
}
else if(input == Infinity){
alert("Ваше число равно Infinity");
</script>
<form name="forml">
Введите число для сравнения с Infinity.
<br><br>
<input type="text" size=5" name="num">
Glnhal isFinitpO JavaScript 1.3+, ECMAScript 1E+, JScript 3.0+
v; Nav4.06+, IE4+, Opera3+
isFinite()
^ Метод isFinite() используется для проверки наличия у переменных конечных пределов.
В листинге 7.188 метод isFinite() используется для проверки того, имеет ли значение,
введенное пользователем, конечные пределы.
Листинг 7.188. Пример использования метода isFinitef)
<html>
<body>
<script type="text/javascript" language="JavaScript">
Глава 7. Ядро JavaScript
289
// Функция проверяет является ли введенный текст числом,
function checkNum(){
var n = document.forml.textl.value;
if(isFinite(n) == true){
alert("Ваша Запись имеет конечные пределы");
</script>
<form name="forml">
В текстовое поле введите число или символ, а затем щелкните на
кнопке проверки значения для проверки того, будет ли вводиться
число.
<br><br>
<input type="text" name="textl" size=">
<br><br>
<input type="button" value="Check value" onClick='checkNum()'>
<br>
</form>
</body>
</html>
Global.isNaN() JavaScript 1.1+ JScript 110+ ECMAScript 1E+
x/ Nav3+, NES2+, IE3+, Opera3+
isNaN (переменная)
\ Функция isNaN() используется для определения того, является ли переменная числом.
В листинге 7.189 функция isNaN() может использоваться для проверки введенного
пользователем текста.
Листинг 7.189. Пример использования функции is№IM()
<html>
<body>
<script type="text/Javascript" language="JavaScript">
<!--
// Функция проверяет является введенный пользователем текст числом.
function checkNum(){
var n = document.forml.textl.value;
if(isNaN(n) == true){
alert("Ваша запись не является числом");
</script>
<form name="forml">
В текстовое поле введите число или символ, а затем щелкните на
кнопке проверки значения для проверки того, будет ли вводиться
число.
<br><br>
<input type="text" name="textl" size=3>
<brxbr>
<input type="button" value="Check value" onClick='checkNum()'>
<br>
</form>
</body>
</html>
Glnbal NaN ~ JavaScript 1.3+, JScript 3.0+, ECMAScript 1E+
Nav4.06+, IE4+
NaN
Объект NaN является объектом, который не равен ни одному числу, включая сам объект
NaN. NaN — это аббревиатура от английского Not a Number (не число).
В листинге 7.190 приведен пример использования объекта NaN в операторе сравнения.
С. 90 Часть III. Справочник по JavaScript
Листинг 7.190. Пример использования объекта NaN
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Проверить является ли строка "а" числом,
if ("a" != NaN){
document.write("Это не является числом");
}
// -">
</script>
</body>
</html>
Global.NumberO
Number(obj)
Метод Nuraber() в качестве аргумента принимает объект obj и преобразует его в число.
Если объект не содержит числового значения, возвращается NaN. При преобразовании
объекта Date возвращается количество миллисекунд, прошедших между 1 января 1970
г. и датой и временем, содержащимися в объекте Date.
В листинге 7.191 приведен пример использования метода Number() для преобразования
объекта Date в число.
Листинг 7.191. Пример использования метода Numberf)
<html>
<script type="text/javascript" language="javaScript">
// Создание объекта Date.
var mydate = new Date ("January 1, 2001");
// Преобразование объекта Date в объект Number.
document.write("Преобразование объекта Date в число дает вам: "
+ Number(mydate) ) ;
// —>
</script>
</html>
Global.parseFloat() JavaScript 1.0+ ECMAScript 1E+ JScript 1.0+
r x/ Nav2+, NES2+, IE3+, Opera3+
parseFloat (строка)
k Метод parseFloat() используется для преобразования строки в число.
В листинге 7.192 приведен пример использования метода parseFloat(). В данном приме-
примере метод parseFloat() вызывается с двумя различными строками. Первая строка, кото-
которая содержит цифры, преобразуется в число без проблем. Вторая строка, которая содер-
содержит буквы, не может быть преобразована в число.
Листинг 7.192. Пример использования метода parseFloat()
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Преобразование строки 245.31" в число,
document.write("Строка 1245.31 преобразована"
+ parseFloat(245.31") + "<br>");
// Попытка преобразоваяия в число строки "test".
// Если это невозможно, вывести сообщение об ошибке.
if( isNaN(parseFloat("test")) ){
document.write("Невозможно преобразовать строку test в число.");
}
// -->
</ scrip t></bodyX/html>
Глава 7. Ядро JavaScript С. У I
Global.DarsellltO JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
r w Nav2+, NES2+, IE3+, Opera3+
parselnt{строка, radix)
parselnt(строка)
f Метод parselnt() используется для преобразования строки в целое число. Метод в каче-
качестве аргументов может принимать строку string и необязательный параметр radix. Пара-
Параметр radix является основанием системы исчисления, в которой задано число в строке.
В листинге 7.193 приведены примеры использования метода parselnt() для преобразова-
преобразования строк. Представлены несколько примеров для различных типов строк.
Листинг 7.193. Пример использования метода parselnt()
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Преобразование строки "859" в целое число.
document.write("Строка 859 преобразована в целое число: ") ;
document.write(parselnt("859") + "<br>");
// Преобразовать двоичной строки в целое число.
document.write("Двоичная строка 101101 преобразована в целое число: ");
document.write(parselnt(01101", 2) + "<br>");
// Преобразование шестнадцатеричной строки в целое число.
document.write("Шестнадцатеричная строка FA832B преобразована
**в целое число: ") ;
document.write(parselnt("FA832B", 16) + "<br>");
</script>
</body>
</html>
JavaScript 1.2+
String(obj)
Метод String() в качестве аргумента принимает объект obj и преобразует его в объект
String. Этот метод аналогичен методу toString().
В листинге 7.194 приведен пример использования метода String() для преобразования
объекта Date в строку.
Листинг 7.194. Пример использования метода String!)
<html>
<script type="text/javascript" language="JavaScript">
// Создание объекта Date.
var myVar = new DateD73982503723) ;
// Преобразование объекта Date в объект String.
document.write("Преобразование объекта Date в String дает вам: "
+ String(myVar) ) ;
// -->
</script>
</html>
JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
2H $2 ^
unescape (string)
Метод unescapeO в качестве аргумента использует шестнадцатеричное значение и воз-
возвращается его эквивалент в кодировке ISO-Latin-1 ASCII. Данный метод выполняет опе-
операцию, обратную операции, реализуемой методом escape(), и, как правило, применя-
применяется для обработки введенных пользователем данных перед их передачей.
В листинге 7.195 объявляется локальная переменная escapedVal, которая передается ме-
методу unescape(). В результате на экран выводится символ "@".
292 Часть III. Справочник по JavaScript
Листинг 7.195. Использование метода unescape() для преобразования
шестнадцатеричного значения в его ASCII-эквивалент
<script type="text/javascript" language="JavaScript">
// Создание переменной.
var escapedVal = "%40";
// Оценка переменной и присвоение ей значения.
var unescapedVal = unescape(escapedVal);
document.write("Значение <i>escapedVal</i> (" + escapedVal + ") ");
document.write("оценивается к " + unescapedVal);
</script>
Global.undefined JavaScript
undefined
$Sk Свойство undefined служит для представления неопределенного значения.
В листинге 7.196 приведен пример использования свойства undefined для проверки того,
присвоено ли переменной значение.
Листинг 7.196. Пример использования свойства undefined
<html>
<script type="text/javascript" language="JavaScript">
var myVar;
// Проверка значения переменной.
if (myVar == undefined){
document.write("Переменная myVar не инициализирована!");
</script>
</html>
gOto JavaScript 1.3+
Зарезервированное ключевое слово
Ключевое слово goto в настоящее время не реализовано в клиентской части языка
JavaScript. Оно зарезервировано для будущего использования.
• Поскольку это ключевое слово не реализовано, пример его использования не приводится.
Tf JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
if(оператор){
код;
■ Оператор if используется для выполнения заданных операторов в определенных случаях.
Если значение параметра оператор равно true, выполняется блок код.
В листинге 7.197 приведен пример использования оператора if для определения того, рав-
равна ли булева переменная Tilly значению true.
Листинг 7.197. Пример использования оператора if
<html>
<body>
<script type="text/javascript" language="JavaScript">
var Tilly = 1 ;
// Проверка того, равна ли переменная Tilly значению true.
if(Tilly == true){
document.write("Оператор равен true");
Глава 7. Ядро JavaScript c9u
</script>
</body>
</html>
if eise JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
if(оператор){
код;
} else(оператор){
код;
£ Оператор if...else используется для выполнения заданных операторов в определенных слу-
случаях. Если первое условие оператор удовлетворяется, выполняется первый блок код. В про-
противном случае вычисляется условие оператор оператора else. Если значение условия равно
true, выполняется второй блок код.
В листинге 7.198 оператор if...else используется для определения того, равно ли булево
значение переменной isDog значению true.
Листинг 7,198. Пример использования оператор if...else
<html>
<body>
<script type="text/javascript" language="JavaScript" >
var isDog = 1;
// Проверка равна ли переменная isDog значению true или false.
// Выводимое на экран сообщение зависит от значения переменной.
if(isDog == true) {
document.write("Оператор равен true");
else}
document.write("Оператор равен false");
</script>
</body>
</html>
implements
Зарезервированное ключевое слово
Ключевое слово implements в настоящее время не реализовано в серверной части языка
JavaScript. Оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
imnort JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
H Nav2+, IE3+, Opera3+
import
Ключевое слово import позволяет сценарию импортировать свойства, функции и объекты
подписанных сценариев, которые экспортируют такую информацию.
1/|В листинге 7.199 приведен пример использования ключевого слова import для импорти-
ir рования свойств из других сценариев.
Листинг 7.199. Пример использования ключевого слова import
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
//Импорт из другого сценария переменных name, city и state.
294 Часть III. Справочник по JavaScript
//Это позволят объекту myObj получить доступ к указанным переменны»
import myObj.name;
import myObj.city;
import myObj.state;
// —>
</script>
</body>
</html>
;n JavaScript 1.4
Nav6+, IE5.5+
Prop in objectName
t Ключевое слово in возвращает true или false в зависимости от того, имеет ли указан-
указанный объект objectName указанное свойство Prop. Свойство Prop может быть строкой,
числовым выражением или индексом массива.
В листинге 7.200 приведен пример использования ключевого слова in для проверки су-
существования в объекте String свойства length.
Листинг 7.200. Пример использования ключевого слова in
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Создание нового объекта String.
var myStr = new String("Something");
// Проверка на наличие свойства length.
if ("length" in myStr){
document.write("length в myStr равно true");
}
// —>
</script>
</body>
</html>
Infinity JavaScript 1.3+, JScript 1.0+
y Nav4.06+, IE3+, Opera3+
Infinity
|| Ключевое слово Infinity служит для представления положительной бесконечности.
В листинге 7.201 приведен пример использования ключевого слова Infinity. На экране
имеется текстовое поле, позволяющее ввести значение, которое будет сравниваться с
Infinity. При вводе числа, оно окажется меньше Infinity, но если ввести слово Infinity,
оно будет равно Infinity.
Листинг 7.201. Пример использования свойства Infinity
Выкусить листинг 7.201 со стр. 385
// Функция сравнивает значение, введенное пользователем,
// с Infinity.
alert("Ваше число меньше Infinity");
alert("Baine число больше Infinity");
alert("Ваше число равно Infinity");
instanceof
Зарезервированное ключевое слово
Ж§| Ключевое слово instanceof используется для определения того, принадлежит ли задан-
"» ный объект к указанному типу. В зависимости от этого оно возвращает true или false.
В листинге 7.202 приведен пример использования ключевого слова instanceof для про-
проверки того, является ли объект myStr экземпляром объекта String.
Глава 7. Ядро JavaScript
295
Листинг 7.202. Пример использования ключевого слова instanceof
<html>
<body>
<script type="text/javaseript" language="JavaSeript">
<!--
// Создание нового объекта String.
var myStr = new String("Tilly the Dog");
// Проверка того, является ли объект myStr экземпляром.
// объекта String.
if (myStr instanceof String){
document.write("Объект myStr является экземпляром объекта String");
}
// -->
</script>
</body>
</html>
■ n+ JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
5| Ключевое слово int в настоящее время не реализовано в языке JavaScript. Оно зарезер-
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
interface JavaScript 1.2+
Nav4+i NES3+
Зарезервированное ключевое слово
Ключевое слово interface в настоящее время не реализовано в серверной части языка
JavaScript. Оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
iqCjnjtp/\ JavaScript 1.3+, ECMAScript 1E+, JScript 3.0+
u Nav4.06+, IE4+, Opera3+
isFinite() v
f Метод isFinite() используется для определения того, имеет ли переменная конечные пре-
пределы.
i/| В листинге 7.203 метод isFinite() используется для проверки того, имеет ли значение,
£г введенное пользователем, конечные пределы.
Листинг 7.203. Пример использования метода isFiniteO
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция проверяет является ли введенный текст числом.
function checkNum()(
var n = document.forml.textl.value;
if(isFinite(n) == true)f
alert("Ваша запись имеет конечные пределы") ;
</script>
<form name="forml">
Введите число или символ в текстовое поле и щелкните на кнопке
проекрки значения для проверки того, что ввод имеет конечные
границы.
29Ь Часть III. Справочник по JavaScript
<Ьгхы>
<input type="text" name="textl" size=">
<br><br>
<input type="button" value="Check value" onClick='checkNum()'>
<br>
</form>
</body>
</html>
JavaScript 1.1+, JScript 1.0+
Nav3+, NES2+, IE3+. Opera3+
isNaN (переменная)
Функция isNaNO используется для определения того, является ли переменная числом,
В листинге 7.204 функция isNaN() может использоваться для проверки введенного
пользователем текста.
Листинг 7.204. Пример использования функции isNaNO
<html>
<body>
<script type="text/javascript" language3"JavaScript" >
^i
//Функция проверяет, является введенный пользователем текст числом
function checkNum(){
var n = document.forml.textl.value;
if(isNaN(n) == true){
alert("Bauia запись не является числом");
</script>
<form name="forml">
Введите число или символ в текстовое поле и щелкните на кнопке
проекрки значения для проверки того, что ввод имеет конечные
границы.
<ЬгХЬг>
<input type="text" name="textl" size=3>
<brxbr>
<input type="button" value="Check value" onClick='checkNum()'>
<br>
</form>
</body>
</html>
JavaScript 1.1+
Nav3+, NES2+, Opera 3+
java r
Объект java позволяет получить доступ к любому классу пакета java.*. Он аналогичен
свойству packages.java, но компактнее его.
В листинге 7.205 приведен пример использования свойства java для вызова пакета lang
и вывода строки на Java-консоль.
Листинг 7.205. Пример использования объекта java
<html>
<script type="text/javascript" language="JavaScript">
// Использование пакета Java для вывода текста на Java-консоль,
java.lang.System.out.println{"В свободном полете!");
</script>
</html>
Глава 7. Ядро JavaScript с£У/
javaArray
var переменная = arrayObject
var переменная = package.newlnstance(obj)
Объект javaArray представляет собой оболочку Java-массива, доступ к которому можно
получить из JavaScript-программ. Вболынинстве случаев для создания типа javaArray не-
необходимо просто сохранить массив типа Java в переменной JavaScript.При этом автома-
автоматически будет создан объект javaArray. Кроме того, объект javaArray можно создать с
помошыо функции newlnstance, передавая в качестве аргумента имя создаваемого объекта.
Метод и свойство объекта javaArray приведены в табл. 7.36.
Тип
Свойство
Метод
Таблица
Параметр
length
toString()
7,36. Свойство и метод объекта javaArray
Описание
Задает количество элементов в объекте javaArray
Возвращает указанный объект в строковом представлении
}0 В листинге 7.206 приведен пример создания нового объекта javaArray для объекта String.
Листинг 7.206. Пример объекта javaArray
<html>
<script type="text/javascript" language="JavaScript">
^! ~ *-
// Создание нового объекта String.
var myStr = new Java.lang.String("Example of javaArray");
// Создание нового объекта javaArray путем присваивания массива,
// возвращенного функцией getBytes, переменной myStrBytes.
var myStrBytes = myStr.getBytes {);
document.write("Первый байт содержит: " + myStrBytes[0] + "<br>");
document.write("Второй байт содержит: " + myStrBytes[1] + "<br>");
document.write("Третий байт содержит: " + myStrBytes[2] + "<br>");
</script>
</html>
javaArray.length „ , „jca«XaScnpt 1^+
' * э Nav3+, NES2+, Opera3+
javaArrayName.length
Свойство length объекта javaArray позволяет определить длину массива javaArray.
В листинге 7.207 приведен пример использования свойства length для определения длины
объекта javaArray myStrBytes.
Листинг 7.207. Пример использования свойства length
<html>
<script type="text/javascript" language="JavaScript">
// Создание объекта String.
var myStr = new Java.lang.String("Пример javaArray");
var myStrBytes = myStr.getBytes{);
document.write("Длина массива равна: " + myStrBytes.length+"<br>");
for (i=0; i < myStrBytes.length; i++)
document.write("Значение в индексе myStrBytes " + i
+ " будет " + myStrBytes [i] + "<br>") ;
</script>
</html>
С. 9 О Часть III. Справочник по JavaScript
javaArray.toString
javaArrayName.tostring()
Метод toString() объекта javaArray возвращает строковое представление объекта javaArray,
В JavaScript 1.4 этот метод заменен методом java.lang.object.toString.
В листинге 7.208 приведен пример использования метода toStringO для вывода на эк-
экран строкового представления объекта myStrBytes.
Листинг 7.208. Пример использования метода toStringO
<html>
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта String.
var myStr = new Java.lang.String{"Пример javaArray");
var myStrBytes = myStr.getBytes {);
document.write{"Представление toString массива: "
+ myStrBytes.toStringO +"<br>");
// —>
</script>
</html>
javaClass M a J^
' Nav3+, NES2+, Opera3+
javaClass = имя_класса
Объект javaClass позволяет получить ссылку на один класс пакета Java. Объект javaGass
создается путем присвоения переменной JavaScript определенного класса объектов. Пос-
После присвоения переменная JavaScript может получить доступ к статическим полям и ста-
статическим методам существующего экземпляра класса пакета Java.
В листинге 7.209 приведен пример использования свойства javaClass для доступа к классу
Color пакета java.awt. После создания объекта javaClass, объекта col, путем указания зна-
значений RGB задается новый цвет.
Листинг 7.209. Пример использования объекта javaClass
<html>
<body>
<script type="text/javascript" languages"JavaScript">
<!--
col = package.Java.awt.Color
// Создание объекта для представления цвета,
// определенного RGB-значением для коричневого.
myColor = col {80,00,00) ;
II -->
</script>
</body>
</html>
javaObject JavaScript 1.1+
11 Nav3+, NES2+, Opera3+
javaObject = new Packages.JavaClass(параметры)
k Объект javaObject является оболочкой Java-объекта, доступ к которому можно получить
из JavaScript-кода.Этот объект можно создать путем присвоения переменной возвраща-
возвращаемого значения любого метода Java, который возвращает объект, или путем создания
нового объекта Java.
В листинге 7.210 приведен пример использования объекта javaObject для получения зна-
значения byteValue Java-объекта Integer.
Листинг 7.210. Пример использования объекта javaObject
<html>
<script type="text/javascript" language="JavaScript">
Глава 7. Ядро JavaScript С. 9 9
// Создание нового объекта Integer.
mylnteger = new Java.lang.IntegerD92);
myByteVal = mylnteger.byteValue();
// Отображение на экране значение byteValue.
document.write{"Значение byteValue равно 492: " + myByteVal);
// —>
</script>
</html>
javaPackage JavaScript 1.1+
' a Nav3+, NES2+, Opera3+
Packages.javaPackage
& Объект javaPackage позволяет получить ссылку на указанный пакет Java.
t/»B листинге 7.211 приведен пример использования объекта javaPackage для получения до-
tr ступа к пакету Font и создания объекта Font со свойством UNDERLINE_ON.
Листинг 7.211. Пример использования объекта javaPackage
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Указание пакета Font.
var myAWT = Packages.Java.awt.font;
// Создание нового объекта Font.
myfont = myAWT.TextAttribute.UNDERLINE_ON;
document.write{"Мой шрифт: " + myfont);
// —>
</script>
</html>
JSException Ja,vaS/ripl1-]+
v Nav4+, NES2+
a) public JSException()
b) public JSException( String s)
c) public JSException (String s, String имя_файла,
int номер_строки, String источник, int маркер)
f Объект JSException — это исключение, которое возникает в случае, когда код JavaScript
возвращает ошибку. Объект JSException входит в состав пакета netscape.javascript. Пара-
Параметр s содержит строку сообщения. Параметр имя файла содержит URL файла, в кото-
котором возникла ошибка. Параметр номер_строки содержит номер строки файла, в которой
возникла ошибка. Параметр источник содержит строку с исходным кодом. Параметр маркер
содержит индекс в строку исходного кода, где возникла ошибка. Использование приве-
приведенных выше конструкторов в версии JavaScript 1.4 запрещено. Метод объекта JSException
приведен в табл. 7.37.
Таблица 7.37. Методы объекта JSException
Метод Описание
getWrappedException() Возвращает исключение
В листинге 7.212 приведен пример использования объекта JSException в блоке try...catch.
При вызове метода eval() когда объект dog не определен, генерируется исключение. При
обнаружении исключения блок try...catch проверит является ли данное исключение ис-
исключением JSException. Если исключение принадлежит к типу JSException, вызывается
функция doRoutineA, в противном случае вызывается функция doRoutineB.
Листинг 7.212. Пример объекта JSException
try {
// Вызов указанного оператора.
global.eval("dog.weight = 120;");
} catch (Exception e) {
vjUU Часть III. Справочник no JavaScript
// Если исключение принадлежит к типу JSException,
// выполнить процедуру doRoutineA.
if (e instanceof JSException) {
doRoutineA{);
) else {
doRoutineB {) ;
JSException.getWrappedException()
JSException.getWrappedException()
Метод getWrappedException() используется для разворачивания исключения JSException.
Как правило, при возникновении исключения в JavaScript, оно представлено в виде эк-
экземпляра объекта JSException.
В листинге 7.213 приведен пример использования метода getWrappedException() для воз-
возврата исключения в развернутом виде.
Листинг 7.213. Пример использования метода getWrappedExceptionl)
import netscape.javascript.*;
public class test {
public static Object execute(JSObject ob j , String jsCode) f
try {
obj.eval{jsCode);
}
catch (JSException e) {
// При возникновении исключения JSException,
// заключить его в оболочку и вернуть,
return е.getWrappedException();
}
return null;
JSObject JavaScript 1.1+
1 Nav4+, NES2+
JSObject
; Объект JSObject — это интерфейсный экземпляр класса netscape.javascript.JSObject. Этот
объект позволяет Java-программе работать с объектами JavaScript. Свойство и методы
объекта JSObject приведены в табл. 7.38.
Таблица 7.38. Свойство и методы объекта JSObject
Тип
Свойство
Метод
Параметр
length
call()
equals()
eval()
getMemberO
getSlot()
getWindowQ
removeMemberO
setMember()
setSlot()
toString()
Описание
Указывает количество элементов в объекте javaArray.
Вызывает метод JavaScript.
Проверяет ссылаются ли два объекта JSObject на один и
тот же экземпляр.
Вычисляет JavaScript-выражение.
Возвращает значение JavaScript-свойства.
Возвращает значение элемента JavaScript-массива.
Возвращает JSObject для окна, содержащего аплет.
Удаляет свойство языка JavaScript.
Устанавливает значение JavaScript-свойства.
Устанавливает значение элемента JavaScript-массива.
Преобразует объект JSObject в строку.
Глава 7. Ядро JavaScript
301
В листинге 7.214 приведен пример использования нового объекта JSObject для получе-
получения доступа к свойствам объекта JavaScript Car. Влистинге 7.215 приведен код JavaScript
для создания объекта Саг.
Листинг 7.214.
import netscape.javascript.*;
public class car
{
public String carModel;
public String carColor;
public String carYear;
// Объявление конструктора класса.
public car(JSObject jsCar)
[
this.carModel = (String)jsCar.getMember("model");
this.carColor = (String)jsCar.getMember{"color");
this.carYear = (String)jsCar.getMember("year");
Листинг 7.215. Создание объекта Саг
<html>
<! --
<script type="text/javascript" language="JavaScript">
function Car(model,color,year) {
this, model = model
this.color = color
this.year = year
>
// Создание нового объекта иэ класса Car.
myCar = new Car("МЗ","black",001");
</script>
// "->
</html>
JSObject.calld
JSObject.call(meth odHame, a rgArray)
» Метод call() позволяет вызывать JavaScript-метод из Java-программы. В качестве аргумен-
аргументов метод call() принимает имя метода methodName и массив, представляющий собой
массив объектов Java, которые используются для передачи аргументов JavaScript-методу
-| В листинге 7.216 приведен пример использования метода call() для сообщения пользо-
" вателю названия и версии браузера. Когда аплет зафужен в браузер, метод init() содер-
содержит вызов JavaScript-функции test, которая выводит сообщение на экран. Влистинге 7.217
приведен HTML-код для зафузки аплета.
Листинг 7.216. Java-аплет, использующий метод call
import Java.applet.*;
import netscape.javascript.*;
import Java.awt.Graphics;
public class myApplet extends Applet {
String myString;
// Инициализация аплета.
public void init() {
myString = new String{"Pure JavaScript!");
JSObject win = JSObject.getwindow(this)■
String args[] = {""};
win.call("test", args);
oUc_ Часть III. Справочник по JavaScript
public void paint(Graphics g) (
g.drawString{myString, 25, 20);
}
// Установка значения переменной myString.
public void setstring(String aString) {
myString = aString;
repaint();
}
}
Листинг 7.217. Пример JavaScript-программы для метода call{)
<html>
<script type="text/javascript" language="JavaScript" >
<! --
// Функция для определения используемого браузера,
function test() {
alert("Вы используете " + navigator.appName + " "
+ navigator.appVersion)
}
// -->
</script>
<body>
<applet code="myApplet.class" name="myApplet"
width=150 height=25 mayscript>
</applet>
<form name="forml">
<input type="button" value="Set String"
1->onClick=" document. my Applet, sets tring (document. for ml. str . value) "><br>
<input type="text" size=0" name="str">
</form>
</body>
</html>
JSObject.equals()
JSObject.equals()
Метод equals() проверяет ссылаются ли два объекта JSObject на один и тот же экземп-
экземпляр.
В листинге 7.218 приведен пример использования метода equals() для сравнения объек-
объектов win и joe.
Листинг 7.218. Пример использования метода equals()
// Функция сравнения двух объектов,
public void check () {
win = JSObject.getWindow(this);
joe = JSObject.getMember ("address") ,-
if(joe.equals(win) ){
System.out.println("Объекты равны");
}
else {
System.out.println("Объекты НЕ равны");
JSObject.evalO S
JSObject.eval()
Метод eval() вычисляет выражение языка JavaScript.
Влистинге 7.219 приведен пример использования метода evai() для вызова JavaScript-фун-
каии aiert(), которая выводит на экран сообщение о том, что аплет выполняет рисо-
рисование. В листинге 7.220 приведен HTML-код для загрузки аштета.
Глава 7. Ядро JavaScript dud
Листинг 7.219. Пример использования метода eval()
import Java.applet.*;
import netscape.javascript. *;
import java.awt.Graphics;
public class myApplet extends Applet {
String myString;
// Инициализация аплета.
public void init() {
myString = new String("Pure JavaScript!");
}
public void paint(Graphics g) {
g.drawString(myString, 25, 20);
JSObject win = JSObject.getWindow(this);
win.eval("alert('Рисование')");
}
// Установка переменной myString.
public void setString(String aString) {
myString = aString;
repaint();
Листинг 7.220. Пример кода JavaScript, загружающего аплет
<html>
<body>
<!-- Загрузка аплета в браузер -->
<applet code="myApplet.class" name="myApplet" width=150 height=25
mayscript>
</applet>
<form name="forml">
<input type="button" value="Set String"
4onCliok="document.myApplet.setString(document.forml.str.value)"><br>
<input type="text" size=0" name="str">
</form>
</body>
</html>
JSObject.getMember()
JSObject.getMember()
Метод getMember() используется для получения значения свойства JavaScript-объекта.
В листинге 7.221 припеден пример использования метода getMember() для получения
значений свойств объекта Саг, созданного п JavaScript-сценарии.
В листинге 7.222 приведен пример кода JavaScript, в котором создается новый объект Саг.
Листинг 7.221. Пример использования метода getMemberO для получения значений
свойств объекта Саг.
import netscape.javascript.*;
public class car
{
public String carModel;
public String carColor;
public String carYear;
// Объявление конструктора класса.
public car(JSObject jsCar)
{
this.carModel = (String)jsCar.getMember("model");
this.carColor = (String)jsCar.getMember("color");
this.carYear = (String)jsCar.getMember("year");
О 04 Часть III. Справочник по JavaScript
Листинг 7.222. Пример создания нового объекта Саг
<html>
<script type="text/javascript" language="JavaScript">
function Car(model,color,year) {
this.model = model
this.color = color
this.year = year
// Создание нового объекта Car.
myCar = new Car("M3","black",001" );
</script>
</html>
JSObject.getSlot()
JSObject.getSlot()
й^ Метод getSlot() используется для получения значения элемента JavaScript-массива.
''Xf ^ листинге 7.223 приведен пример использования метода getSlot() для получения зна-
о^ чения элемента массива объекта Саг.
Листинг 7.223. Пример использования метода getSlotO
import netscape.javascript.*;
public class car
public car(JSObject jsCar)
// Получение значения второго элемента массива.
jsCar.getSlotB);
JSObject.getWindow()
JSObject.getWindow()
Метод getWindowQ — это статический метод, который возвращает дескриптор текущего
окна Navigator.
В листинге 7.224 приведен пример использования метода getWindow() для присвоения
дескриптора окна JSObject-объекту win.
Листинг 7.224. Пример использования метода getWindowU
public class myApplet extends Applet {
public void init() {
JSObject win = JSObject.getWindow(this);
JSObject.removeMember()
JSObject.removeMember()
Метод removeMember() используется для удаления свойства JavaScript-объекта.
В листинге 7.225 приведен пример использования метода removeMember() для удаления
свойства year объекта Саг.
Влистинге 7.226 приведен пример кода JavaScript, в котором создается новый объект Саг.
Листинг 7.225. Пример использования метода removeMemberO для удаления
свойства year
import netscape.javascript. *;
public class car
Глава 7. Ядро JavaScript
{
// Объявление конструктора класса,
public car(JSObject jsCar)
jsCar.removeMember("year") ;
Листинг 7.226. Пример создания нового объекта Саг
<html>
<script type="text/javascript" language="JavaScript">
function Car(model,color,year) {
this.model = model
this.color = color
this.year = year
// Создание нового объекта Car.
myCar = new Car("M3","black",001" );
</script>
</html>
JSObject.setMemberO
JSObject. setMetnber ()
}} Метод setMemberO используется для задания значения свойства JavaScript-объекта.
В листинге 7.227 приведен пример использования метода setMemberO для задания зна-
значения свойства model JavaScript-объекта (созданного в листинге 7.ххх).
Листинг 7.227. Пример использования метода setMemberO для задания значения
свойства model
import netscape.javascript.*;
public class car
public car(JSObject jsCar)
// Определение значения свойства model.
jsCar.setMember("model",30ci");
JSObject.setSlot()
JSObject.setSlot()
& Метод setSlot() используется для задания значения элемента массива JavaScript-объек-
тэ.
^В листинге 7.228 приведен пример использования метода setSlot() для задания значения
второго элемента равного 0-60.
Листинг 7.228. Пример использования метода setSlot().
import netscape.javascript.*;
public class car
{
public car(JSObject jsCar)
{
// Установка значения элемента 2.
jsCar.getSlotB,-60");
Часть III. Справочник по JavaScript
JSObject.toStringO T
JSObject.toString()
Метод toString() используется для преобразования объекта JSObject в строку.
В листинге 7.229 приведен пример использования метода toStringO для преобразования
объекта JSObject в строку.
Листинг 7.229. использования метода toStringO
public void display () {
win = JSObject.getWindow(this);
win.eval("alert(win.toString() )" );
}
JavaScript 1.2+, JScript 1.0+
Nav4+, NES3+, IE3+
label:
код;
Ключевое слово label поддерживает идентификатор, который можно использовать с клю-
ключевыми словами break и continue для указания места продолжения выполнения программы.
С помощью метки можно сгруппировать несколько операторов языка JavaScript. При вы-
вызове метки операторами break или continue выполняется фрагмент код.
В листинге 7.230 приведен пример использования ключевого слова label совместно с опе-
оператором break.
Листинг 7.230. Пример использования ключевого слова label
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Объявить метку с именем doSomething.
doSomething:
var x = 2+2;
var у = 5*5;
document.write("Результат 2+2 будет: " + x + "<br>");
// Объявить метку с именем doSomeMore.
doSomeMore:
for(i=0; i<5; i++) {
document.write("Значение i будет: " + i + "<br>");
if(i==2){
break doSomeMore;
}
)
document.write("Я могу сделать что-нибудь еще" + "<br>");
document.write("Результат 5x5 будет: " + у + "<br>");
// — >
</script>
</body>
</html>
JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
Ключевое слово long в настоящее время не реализовано в серверной части языка JavaScript.
Оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
MathH JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
v/ Nav2+, NES2+, IE3+, Opera3+
Базовым объект JavaScript
Глава 7. Ядро JavaScript
307
\ Объект Math — это встроенный объект, содержащий свойства и методы, используемые
для выполнения математических вычислений. Это — предопределенный объект языка
JavaScript.Доступ к нему можно получить, не используя конструктор и не вызывая метод.
Все свойства и методы объекта Math статические. Различные методы и свойства объекта
Math перечислены в табл. 7.39.
Таблица 7.39. Свойства и методы объекта Math
Тип
Свойство
Метод
Параметр
ceil
Е
LN10
LN2
LOG10E
L0G2E
PI
SQRT1_2
SQRT2
abs()
acos()
asin()
atari ()
atari 2()
cos()
exp()
floor()
iog()
max()
min()
pow()
random()
round()
sin()
sqrt()
tan()
toSource()
toStringO
unwatch()
watch ()
Описание
Возвращает наименьшее целое, большее или равное
заданному числу
Возвращает значение константы Эйлера
Возвращает натуральный логарифм числа 10
Возвращает натуральный логарифм числа 2
Возвращает десятичный логарифм числа Е
Возвращает логарифм числа Е по основанию 2
Возвращает число р
Возвращает квадратный корень числа 1/2
Возвращает квадратный корень числа 2
Возвращает абсолютное значение числа
Возвращает арккосинус числа
Возвращает арксинус числа
Возвращает арктангенс числа
Возвращает арктангенс отношения аргументов
Возвращает косинус числа
Возвращает Е\ где х - заданное число
Возвращает наибольшее целое, большее или равное
заданному числу
Возвращает натуральный логарифм числа
(логарифм по основанию Е)
Возвращает больший из двух аргументов
Возвращает меньший из двух аргументов
Возвращает заданное число, возведенное в заданную степень
Возвращает случайное число в диапазоне от 0 до 1
Округляет число до ближайшего целого
Возвращает синус числа
Возвращает квадратный корень числа
Возвращает тангенс числа
Создает копию объекта
Возвращает объект в строковом представлении
Прекращает слежение за свойством
Устанавливает слежение за свойством
О Do Часть III. Справочник по JavaScript
В листинге 7.231 приведен пример создания нового объекта Math.
Листинг 7.231. Пример создания нового объекта Math
<html>
<body>
<title>Example of creating a Math object</title>
<script type="text/javascript" language="JavaScript">
<! --
// Создание нового объекта Math.
var newMathObject = Math.E;
// -->
</script>
</body>
</html>
Math яЬчП JavaScript 1.0+, ECWIAScript 1E+-, JScript 1.0+
"u Nav2+, NES2+, IE3+, Opera3+
math. аЬз [число)
Метод abs() объекта Math используется для вычисления абсолютного значения (моду-
(модуля) переменной число.
В листинге 7.232 приведен пример использования метода abs() и его возвращаемых зна-
значений.
Листинг 7.232. Пример использования метода abs[)
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Функция вычисляет абсолютное значение для введенного числа.
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.abs(inputNum);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
В этом примере вычисляется абсолютное значение введенного числа.
<br><br>
Введите число:
<input type="text" name="input" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Ответ :
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math arnc/\ JavaScript 1.0+, ECWIAScript 1E+, JScript 1.0+
Matn.acoso Nau2+ n^ |E3+_ j
math.acos{число)
ь Метод acos() объекта Math используется для вычисления арккосинуса числа num. Воз-
вращаемое значение метода находится в диапазоне между 0 и р и измеряется в радиа-
радианах. Если возвращаемое значение находится вне указанных пределов, возвращается 0.
$ В листинге 7.233 приведен пример использования метода acos() и его возвращаемых зна-
чений.
Листинг 7.233. Пример использования метода acos[)
<html>
<body>
Глава 7. Ядро JavaScript
<script type="text/javascript" language="JavaScript">
<! --
// Функция вычисляет арккосинус введенного числа,
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.acos(inputNmn);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
В этом примере вычисляется арккосинус введенного числа.
<ЬгхЬг>
Введите число:
<input type="text" name="input" size=10>
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Арккосинус равен:
<input type="text" name="answer" size=10>
</form>
</body>
</html>
Math ачтП JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
wiatn.asmu Nav2+> H^ |E3+ qh
math.asin [число)
Метод asin() объекта Math вычисляет и возвращает арксинус числа. Возвращаемое зна-
значение метода находится в диапазоне между -к/2 и к/2 и измеряется в радианах. Если
возвращаемое значение находится вне указанных пределов, возвращается 0.
В листинге 7.234 приведен пример использования метода asin().
Листинг 7.234. Пример использования метода asinU
<html>
<body>
<script type="text/javascript" languages"JavaScript">
<!--
// Функция вычисляет арксинус введенного числа.
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.asin(inputNum);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml" >
В этом примере вычисляется арксинус введенного числа.
<br><br>
Введите число:
<input type="text" name="input" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Арксинус равен:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math atanH JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Matn.atany Nav2+j u^ |E3+_ QHera3+
math.atan (число)
f Метод atan() объекта Math вычисляет и возвращает арктангенс числа. Возвращаемое зна-
значение метода находится в диапазоне между -к/2 и к/2 радиан.
О I U Часть III. Справочник по JavaScript
В листинге 7.235 приведен пример использования метода atan(). Два введенных значения
присваиваются переменным inputNuml и inputNum2
Листинг 7.235. Пример использования метода atanU
<html>
<body>
<script type="text/javascript" languages"JavaScript">
// Функция вычисляет арктангенс введенного числа,
function doMath() {
var inputNum=document.forml.input.value;
var result = Math.atan(inputNum);
document.forml.answer.value = result;
</script>
<form name="forml">
В этом примере вычисляется арктангенс введенного числа.
<brxbr>
Введите число:
<input type="text" name="input" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Арктангенс равен:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math atan2H JavaScript 1.0+, ECMAScript 1E+, JScript 3.0+
W Nav2+, NES2+, IE4+
math.atan2(число!, число2)
\ Метод atan2() объекта Math вычисляет и возвращает арктангенс отношения его аргу-
аргументов. Возвращаемое значение метода находится в диапазоне между -кик радиан и
представляет собой угол 8 точки (х, у).
В листинге 7.236 приведен пример использования метода atan2(). Два введенных значе-
значения записываются в переменные inputNuml и inputNum2. Затем вызывается метод atan2(),
а его возвращаемое значение присваивается переменной result.
Листинг 7.236. Пример использования метода atan2()
<html>
<body>
<script type="text/javascript" languages"JavaScript">
// Функция вычисляет арксинус отношения двух свонх аргуиентов.
function doMath(){
var inputNuml=document.forml.inputl.value;
var inputNum2=document.forml.input2.value;
var result = Math.atan2(inputNuml, inputNum2);
document.forml.answer.value = result;
</script>
<form name="forml">
Введите первое число:
<input type="text" name="inputl" size=0">
<br>
Введите второе число:
<input type="Text" name="input2" size=0">
<br><br>
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Глава 7. Ядро JavaScript Oil
Ответ:
<input type="text" name="answer" size=0">
•</form>
</body>
</html>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, 1E3+, Opera3+
math.ceil [число)
Метод ceil() объекта Math используется для вычисления наименьшего целого, которое
больше или равно числу, переданному методу в качестве аргумента.
В листинге 7.237 приведен пример использования метода ceii() для вычисления наимень-
наименьшего целого, которое больше или равно числа, введенного пользователем.
Листинг 7.237. Пример использования метода ceil()
<html>
<body>
<title>Example of the ceil () method</title>
<script type="text/javascript" language3"JavaScript">
//Функция вычисляет наименьшее целое, которое больше или равно
//введенному числу. Берет вводимое число и передает его методу ceil,
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.ceil(inputNum);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
В этом примере вычисляется наименьшее целое, которое больше или
равно введенному числу.
<brxbr>
Введите первое число:
<input type="text" name="input" Bize=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Результат вычисления наименьшего целого:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math тч(\ JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
wiatn.cosu Nav2+_ NE£2+j |E3+ j +
math.cos (число)
f Метод cos() объекта Math используется для вычисления косинуса числа. Он возвраща-
возвращает числовое значение в диапазоне от -1 до 1, которое является косинусом заданного
числа num.
|Д В листинге 7.238 приведен пример использования метода cos() для вычисления косинуса
г введенного числа.
Листинг 7.238. Пример использования метода cos()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// функция вычисляет косинус введенного числа
// берет вводимое число и передает его
// методу cos(), который вычисляет значение косинуса.
312 Часть III. Справочник по JavaScript
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.cos(inputNum);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
В этом примере вычисляется косинус введенного числа.
<brxbr>
Введите первое число:
<input type="text" name="input" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Величина косинуса равна:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math E JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
math.E
# Свойство Е объекта Math используется для вычисления константы Эйлера, которая при-
приблизительно равна 2.718.
it/% В листинге 7.239 приведен пример использования свойства Е.
Листинг 7.239. Пример использования свойства Е
<html>
<body>
<script type="text/javascript" language="JavaScript">
< ! --
// Функция вычисляет константу Эйлера.
function doMath(){
var result = Math.E;
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml ">
Щелкните на кнопке для вычисления константы Эйлера
<brxbr>
Константа Эйлера равна:
<input type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math pynl\ JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
HU Nav2+, NES2+, IE3+, Opera3+
math.exp(число)
# Метод ехр() объекта Math используется для вычисления экспоненты, основанием ко-
которой яапяется константа Эйлера (основание натурального логарифма).
i В листинге 7.240 приведен пример использования метода ехр() для вычисления экспо-
экспоненты, показателем степени которой служит число, введенное пользователем.
Листинг 7.240. использования метода ехр()
<html>
<body>
<script type="text/javascript" language="JavaScript">
"лава 7. Ядро JavaScript
313
// Функция вычисляет экспоненту.
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.exp(inputNum);
document.forml.answer.value = result;
</script>
<form name="forml">
Введите первое число:
<input type="text" name="input" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Значение экспоненты равно:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math flnnrH JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
U Nav2+, NES2+, IE3+, Opera3+
math.floor (число)
^Метод Поог() объекта Math используется для вычисления наибольшего целого, кото-
• рое меньше или равно числу, переданному методу в качестве аргумента.
В листинге 7.241 приведен пример использования метода Поог()
Листинг 7.241. Пример использования метода floorO
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция вычисляет наибольшее целое, которое меньше или
// равно введенному числу,
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.floor(inputNum);
document.forml.answer.value = result;
// -->
</script>
<form name="forml">
В этом примере вычисляется наибольшее целое, которое меньше либо
равно введенному числу.
<ЬгХЬг>
Введите первое число:
<input type="text" name="input" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Наибольшее целое, меньшее либо равное введенного числа:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math LlSim JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
ividiii.i-i4 iu Na NES2+ Opera3+
math.LNlO
^Свойство LN10 объекта Math используется для вычисления натурального логарифма числа
10. Его значение приближенно равно 2.301.
■ л В листинге 7.242 приведен пример использования свойства LN10. После щелчка на со-
1г ответствуюшей кнопке вызывается функция doMath, которая вычисляет натуральный ло-
логарифм числа 10 и отображает его в поле ввода.
О I ч- Часть III. Справочник по JavaScript
Листинг 7.242. Пример использования свойства LN10
<html>
<body>
<script type="text/javascript" language^"JavaScript">
<! --
// Функция вычисляет натуральный логарифм числа 10.
function doMath(){
var result = Matb.LNIO;
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
Натуральный логарифм 10 равен:
<input type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math LN9 JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
math. LN2 , . r
Свойство LN2 объекта Math используется для .вычисления натурального логарифма числа
2. Его значение приближенно равно 0.693.
В листинге 7.243 приведен пример использования свойства LN2 для вычисления нату-
натурального логарифма числа 2.
Листинг 7.243. использования свойства LN2
<html>
<body>
<script type="text/javascript" language="JavaScript" >
<! --
// Функция вычисляет натуральный логарифм числа 2.
function doMath(){
var result = Matb.LN2;
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
Натуральный логарифм 2 равен:
<input type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math InnM JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
d aw Nav2+, NES2+, IE3+, Opera3+
math.log(число)
Метод log() объекта Math используется для получения натурального логарифма числа
(логарифма по основанию Е).
В листинге 7.244 приведен пример использования метода log().
Листинг 7.244. Пример использования метода 1од()
<html>
<body>
<script type="text/javascript" language="JavaScript" >
Глава 7. Ядро JavaScript 3 I 5
// Функция вычисляет натуральный логарифм введенного числа и
// выводит результат на экран.
function doMath(){
var inputNum=document.forml.input.value;
var result = Math.log(inputNum) ;:
document.forml.answer.value = result;
)
// -->
</script>
<form name="forml">
В этом примере вычисляется натуральный логарифм от введенного
числа.
<ЫХЬг>
Введите первое число:
<input type==" text" name=" input" size=5">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Логарифм равен:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math LOG10E JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
math.LOGlOE
f Свойство LOG10E объекта Math используется для вычисления десятичного логарифма
константы Эйлера. Его значение приближенно равно 0.434.
B листинге 7.245 приведен пример использования свойства LOG10E. После щелчка на
кнопке вызывается функция doMath, которая вычисляет десятичный логарифм константы
Эйлера и отображает его значение в поле ввода.
Листинг 7.245. Пример использования свойства L0G10E
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция вычисляет значение свойства LOG10E и
// выводит результат на экран.
function doMath(){
var result = Math.LOGlOE;
document.forml.answer.value = result;
}
II -->
</script>
<form name="forml">
Десятичный логарифм константы Эйлера равен:
«Cinput type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math I OR9F JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
math.LOG2E
f Свойство LOG2E объекта Math используется для вычисления логарифма константы Эйлера
по основанию 2. Его значение приближенно равно 1.442.
\й В листинге 7.246 приведен пример использования свойства LOG2E.
О I Ь Часть III. Справочник по JavaScript
Листинг 7.246. Пример использования свойства L0G2E
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Функция вычисляет аначение свойства LOG2E и
II выводит результат на экран.
function doMath(){
var result = Math.LOG2E;
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
Логарифм по основанию 2 константы Эйлера равен:
<input type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math ГПЭХП JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
u Nav2+, NES2+, IE3+, Opera3+
math.max(число1, число2)
$& Метод max() объекта Math выбирает и возвращает больший из двух передаваемых ар-
>> гументов.
В листинге 7.247 приведен пример использования метода тах() для определения боль-
большего из двух значений.
Листинг 7.247. использования метода тах()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Функция вычисляет больший из двух аргументов.
function doMath(){
var inputNuml=document.forml.inputl.value;
var inputNum2=document.forml.input2.value;
var result = Math.max(inputNuml, inputNum2);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
В этом примере берутся два введенных числа, а затем определяется
большее число.
<ЬгХЫ>
Введите первое число:
<input type="text" name="inputl" size=0">
<br>
Введите второе число:
<input type="text" name="input2" size=0">
<input type="button" value="Show Max number" onClick='doMath()'>
<br>
Максимальное число:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Глава 7. Ядро JavaScript
317
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
Math.min()
ma th . m i n (числ о 1, число 2)
Метод min() объекта Math выбирает и возвращает меньший из двух переданаемых ар-
аргументов.
В листинге 7.248 приведен пример использования метода Malh.inin().
Листинг 7.248. Пример использования метода min(}.
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция определяет меньший из двух аргументов.
f unction doMa th(){
var inputNuml=document.forml.inputl.value;
var inputNum2=document.forml.input2.value;
var result = Math.min(inputNuml, inputNum2);
document.forml.answer.value = result;
</script>
<form name="forml">
В этом примере берутся два введенных числа, а затем определяется
меньшее число.
<br><br>
Введите первое число:
<£nput type="text" name="inputl" size=0">
<br>
Введите второе число:
<input type="text" name="input2" size=0">
<input type="button" value="Show Min number" onClick='doMath() ' >
<br>
Минимально число:
<input type="text" name="answer" size=0">
</£orm>
</body>
</html>
Math.PI
math.PI
Свойство PI объекта Math используется для вычисления константы к. Ее значение при-
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
ближенно равно 3.14159.
jB листинге 7.249 приведен пример использования свойства PI. После щелчка на кнопке
Calculate (Вычислить) вызывается функция doMath, которая вычисляет значение PI и
отображает его в поле ввода.
Листинг 7.249. Пример использования свойства PI
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция вычисляет значение свойства PI ■
function doMath(){
var result = Math.PI;
document.forml.answer.value = result;
</script>
<form name="forml">
Приблизительное значение
константы р равно:
О I О Часть III. Справочник по JavaScript
<input type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math nnwM JavaScript" 1.0+, ECMAScript 1E+, JScript 1.0+
H" U Nav2+, NES2+, IE3+, Opera3+
math.pow(число1, число2)
ЩР Метод pow() объекта Math используется для вычисления значения степенной функции.
В листинге 7.250 приведен пример использования метода pow().
Листинг 7.250. Пример использования метода pow()
<html>
<body>
<script type="text/javascript" language="JavaScript">
< ! --
// Функция берет два вводимых значения и вычисляет степенную
Функцию.
function doMath(){
var inputNuml=document.forml.inputl.value;
var inputNum2=document.forml.input2.value;
var result = Math.pow(inputNuml, inputNum2);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
Введите основание:
<input type="text" name="inputl" size=0">
<br>
Введите показатель степени:
<input type="text" name="input2" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Результат:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math.randomO JavaScript 1.1+ ECMAScript 1E+ JScript 1.0+
w Nav3+, NES2+, IE3+, Opera3+
math.random{число)
j& Метод random() объекта Math используется для генерирования случайного числа в ди-
апазоне от 0 до 1.
^В листинге 7.251 приведен пример использования метода random() для получения слу-
чайных чисел.
Листинг 7.251. Пример использования метода randomO
<html>
<body>
<script type="text/javascript" language="JavaScript">
< !--
// Функция генерирует случайное число в диапазоне от 0 до 1.
function doMath(){
var result = Math.random();
document.forml.answer.value = result;
}
// -->
</script>
Глава 7. Ядро JavaScript О 1 У
<form name="forml">
Случайное число:
<input type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
math.round(число)
Метод round() объекта Math используется для округления числа до ближайшего цело-
целого значения. Если десятичная часть числа равна или больше 0.5, результат округляется
до ближайшего большего целого. Если десятичная часть числа меньше 0.5, результат ок-
округляется до ближайшего меньшего целого.
В листинге 7.252 приведен пример использования метода round().
Листинг 7.252. Пример использования метода round()
<html>
<body>
<script type="text/javascript" language="JavaScript" >
// Функция округляет вводимое число до ближайшего целого,
function doMath(){
var inputNuml=document.forml.inputl.value;
var result = Math.round(inputNuml);
document.forml.answer.value = result;
</script>
<form name="forml">
Введите число:
<input type="text" name="inputl" size=0">
<input type="button" value="Round" onClick='doMath()'>
<br>
Округленное значение равно:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math.SinO JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
math, sin (пело)
% Метод sin() объекта Math используется для вычисления синуса числа. Он возвращает
•числовое значение в диапазоне от -1 до 1.
В листинге 7.253 приведен пример использования метода sin().
Листинг 7.253. Пример использования метода sin()
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция вычисляет сииус введенного числа
function doMath () {
var inputNuml=document.forml.inputl.value;
var result = Math.sin(inputNuml);
document.forml.answer.value = result;
</script>
Oc_U . Часть III. Справочник по JavaScript
<form name="forml">
Введите число:
<input type="text" name="inputl" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Синус равен:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
ГШ JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
math.sqrt (число)
Метод sqrt() объекта Math используется для вычисления квадратного корня числа. Если
возвращаемое значение находится вне допустимого диапазона, метод sqrt() возвращает
значение 0.
В листинге 7.254 приведен пример использования .метода sqrt().
Листинг 7.254. Пример использования метода sqrt()
<html>
<body>
<script type="text/javascript" language="JavaScript">
< ! --
// Функция вычисляет квадратный корень введенного числа.
function doMath(){
var inputNuml=document.forml.inputl.value;
var result = Math.sqrt(inputNuml);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
Введите число:
<input type="text" name="inputl" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
Квадратный корень равен:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math «5ORT1 О JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
main.own i \_c N NES ^
math.SQRT1_2
йс& Свойство SQRT1_2 о&ьекта Math возвращает квадратный корень числа 1/2, который при-
»> ближенно равен 0.707.
i/i В листинге 7.255 приведен пример использования свойства SQRT1_2. Функция doMath
Р~ отображает в текстовом поле значение квадратного корня числа 1/2.
Листинг 7.255. Пример использования свойства SQRT1_2
<html>
<body>
<script type="text/javascript" languages"JavaScript" >
// Функция возвращает квадратный корень числа 1/2.
function doMath(){
var result = Math.SQRT1_2 ;
document.forml.answer.value = result;
Глава 7. Ядро JavaScript О С. \
II —>
</script>
<form name="forml">
Квадратный корень 1/2 равен:
<input type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math 4ORT2 JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
d U Nav2+, NES2+, IE3+, Opera3+
mafch.SQRT2
f Свойство SQRT2 объекта Math возвращает квадратный корень числа 2, который при-
приближенно равен I.4I4.
В листинге 7.256 приведен пример использования свойства SQRT2. Функция doMath ото-
отображает в текстовом поле значение квадратного корня числа 2.
Листинг 7.256. Пример использования свойства SQRT2
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция возвращает квадратный корень числа 2.
function doMath () {
var result = Math.SQRT2;
document.forml.answer.value = result;
}
II -->
</script>
<form name="forml">
Квадратный корень 2 равен:
«cinput type="text" name="answer" size=0">
<input type="button" value="Calculate" onClick='doMath()'>
<br>
</form>
</body>
</html>
Math tanM JavaScript 1.0+, ECWIAScript 1E+, JScript 1.0+
W Nav2+, NES2+, IE3+, Opera3+
math.tan (число)
f Метод tan() объекта Math используется для вычисления тангенса числа. Он возвращает
числовое значение тангенса угла.
'■0 В листинге 7.257 приведен пример использования метода tan().
Листинг 7.257. Пример использования метода tan()
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция вычисляет тангенс введенного числа
function doMath(){
var inputNuml=document.forml.inputl.value;
var result = Math.tan(inputNuml);
document.forml.answer.value = result;
}
// -->
</script>
M 3ax. 733
ОС.С. Часть III. Справочник по JavaScript
<form name="forml">
В этом примере вычисляется тангенс введенного числа.
<Ьг><Ьг>
Введите число:
<input type="text" name="inputl" size=0">
<input type="button" value="Calculate" onclick='doMath() ' >
<br>
Тангенс равен:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math.toSource()
math.toSource()
Метод toSource() объекта Math используется для создания копии объекта. Он возвращает
строковое представление объекта, которое можно передать методу eval() для создания ко-
копии объекта.
В листинге 7.258 приведен пример использования метода toSource() для создания копии
объекта Math.
Листинг 7.258. Пример использования метода toSource().
<html>
<body>
<script type="text/javascript" language="JavaScript">
< ! --
// Функция cosдает копию объекта Math.
function copy(){
var result = Math.toSource(Math.E);
document.forml.answer.value = result;
}
// -->
</script>
<form name="forml">
Щелкните на кнопке для создания копии объекта Math.
<br><br>
<input type="button" value="Copy" onClick='copy()'>
<br>
Результат применения метода toSource:
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math tn^trinnH JavaScript 1.0+, JScript 3.0+
Math.tostringu н^2+ ^^ ^
math.toString()
& Метод toStringO объекта Math возвращает строковое значение, соответствующее объекту.
В листинге 7.259 приведен пример использования метода toStringO для получения стро-
строкового значения, соответствующего объекту Math.
Листинг 7.259. Пример использования метода toStringO.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция возвращает строковое значение объекта Math.
function copy О{
var result = Math.toString(Math.sqrtD5));
document.forml.answer.value = result;
Глава 7. Ядро JavaScript
</script>
<form name="forml">
<input type="button" value="Get String" onClic)c= ' copy () ' >
<br>
Результат применения метода toStringO
<input type="text" name="answer" size=0">
</form>
</body>
</html>
Math.unwatch()
math.unwatch (prop)
Метод unwatch() объекта Math используется для прекращения слежения за свойством,
заданным параметром prop. Этот метод унаследован от объекта Object, тем не менее, ис-
использовать его нельзя, поскольку свойства объекта Math доступны только для чтения.
Все свойства объекта Math доступны только для чтения, поэтому пример использова-
использования этого метода привести нельзя.
Math, watch О JavaScript 1.2+
u Nav4+, NES3+
math.watch( prop, handler )
Метод watch() объекта Math используется для включения слежения за свойством, за-
заданным параметром prop. При изменении свойства вызывается функция handler, кото-
которая выполняет заданную пользователем операцию. Этот метод унаследован от объекта
Object, тем не менее, использовать его нельзя, поскольку свойства объекта Math дос-
доступны только для чтения.
Все свойства объекта Math доступны только для чтения, поэтому пример использова-
использования этого метода привести нельзя.
мам JavaScript 1.3+, JScript 1.0+
Nav4.06+, IE3+
NaN
l Объект NaN является объектом, который не равен ни одному числу, включая сам объект
NaN. NaN — это аббревиатура от английского Not а Number (не число).
В листинге 7.260 приведен пример использования объекта NaN в операторе сравнения.
Листинг 7.260. Пример использования объекта NaN в операторе сравнения
<script type="text/javascript" language="JavaScript">
//Проверка является ли строка "а" числом.
if ("a" != NaN) {
document.write("Это не число");
</script>
native JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
& Ключевое слово native в настоящее время не реализовано в серверной части языка
• JavaScript.Оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
324 Часть III. Справочник по JavaScript
JavaScript 1.1+
netscape
Sj Объект netscape позволяет получить доступ к любому классу пакета netscape.*. Он ана-
» логичен свойству packages.netscape, но является более компактным.
В листинге 7.261 приведен пример использования свойства netscape для определения того,
поддерживает ли текущий браузер пакет netscape.
Листинг 7.261. Пример использоввния объектв netscape.
<html>
<body>
<script type="text/javascript" language^"JavaScript">
// Проверка существования пакета netscape
if (netscape){
document.write ("Браузер включает пакет netscape");
else{
document.write ("Браузер не включает пакет netscape");
</script>
</body>
</html>
JavaScript 1.0+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
new
Оператор new используется для создания нового объекта.
В листинге 7.262 приведен пример использования оператора new для создания нового
объекта Array.
Листинг 7.262. Пример использования оператора new.
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Создается новый объект Array с именем myArray.
var myArray = new Array () ;
</script>
</body>
</html>
nuii JavaScript 1.2+, JScript 3.0+, ECMAScript 1.0+
Nav4+, NES3+, IE4+
Зарезервированное ключевое слово
jk Ключевое слово null в настоящее время не реализовано в серверной части языка JavaScript.
Оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
JavaScript 1.2+, ECMAScript 1.0+
Nav4+, NES3+, IE5+
Number (obj)
Метод Nuraber() в качестве аргумента использует объект obj и преобразует его в число.
Если объект — строка, т.е. неформатированная числовая константа, возвращается NaN.
В листинге 7.263 приведен пример использования метода Nuraber(). Создается новый
объект Date, который преобразуется в число.
Глава 7. Ядро JavaScript
325
Листинг 7.263. Пример использования метода Number().
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Создать объект Date.
var myStr = new Date();
//Преобразовать объект Date в объект Number и вывести его на экран
document.write("Число равно: " + Number(myStr));
// -->
</script>
</html>
NumberH JavaScript 1.1+, ECMAScript 1E+, JScript 1.0+
w Nav3+, NES2+, IE3+, Opera3+
var переменная = new Number(значение)
Объект Nuraber() служит для представления типов числовых значений. Объект Number()
можно создать, указав значение в параметре конструктора объекта. Различные методы и
свойства объекта Number() приведены в табл. 7.40.
Тип
Свойство
Таблица
Параметр
constructor
MAX_VALUE
MIN_VALUE
7.40. Свойства и методы объекта Number!)
Описание
Функция, которая создает прототип объекта.
Задает максимальное возможное значение числа.
Задает минимальное возможное значение числа,
которое не равно 0.
Метод
NaN
Аббревиатура от английского Not a Number (не число).
Служит для представления значения, которое не равно
ни одному числу.
NEGATIVE INFINITY
Специальное значение, которое служит для
представления отрицательной бесконечности.
POSITIVE INFINITY
Специальное значение, которое служит для
представления положительной бесконечности.
prototype
Служит для представления прототипа числового класса.
toExponential()
Возвращает строку в экспоненциальном представлении.
toFixed()
Возвращает объект в виде строки фиксированной
длины.
toLocaleString() Возвращает объект в виде строки в локальном формате
хоста.
toPrecision()
Возвращает объект в виде строки в экспоненциальном
формате с указанным пользователем количеством
знаков.
toSource()
Возвращает объект в строковом представлении.
toString()
Возвращает объект в строковом представлении.
unwatch()
Прекращает слежение за указанным свойством.
valueOf()
Возвращает элементарное значение объекта как типа
числовых данных.
watch()
Устанавливает слежение за указанным свойством.
' В листинге 7.264 приведен пример создания нового объекта Number.
326 Часть III. Справочник по JavaScript
Листинг 7.264. Пример использования конструктора объекта Number.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Создание нового объекта Number.
var aNum = new Number C) ;
// -->
</script>
</body>
</html>
Number.COnstructor JavaScript 1.1+, ECMAScriptJE+, ^Script 2.0|
Number.constructor
|Й& Свойство constructor объекта Number определяет функцию, которая создает объект.
В листинге 7.265 приведен пример использования свойства constructor.
Листинг 7.265. Пример использования свойства constructor
<html>
<script type="text/javascript" language="JavaScript">
// С помощью свойства constructor создается новый объект Number.
num = new Number C)
if(num.constructor == Number){
document.write("Объект создан");
}
II -->
</script>
</html>
Number.MAX VALUE JavaScript 1.1+ ECMAScript 1E+ JScript 2.0+
Nav3+, NES2+, IE3+, Opera3+
Number.MAX_VALUE
\ Свойство MAX_VALUE объекта Number используется для получения максимального чис-
числа, которое может содержать объект Number. Значение этого свойства приближенно равно
1.79Е+308.
В листинге 7.266 приведен пример использования свойства MAX_VALUE.
Листинг 7.266. Пример использования свойства MAX_VALUE
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
/ / Проверка равно ли число значению MAX_VALUE.
if((9999*9999) != Number.MAX_VALUE){
document.write("Число не превышает максимальное значение");
</script>
</body>
</html>
Number.MIN VALUE JavaScript 1.1+ ECMAScript 1E+ JScript 2.0*
Nav3+, NES2+, IE3+, Opera3+
Number.MIN_VALUE
\ Свойство MIN_VALUE объекта Number используется для получения минимального чис-
числа, которое может быть представлено средствами JavaScript.Значение этого свойства при-
приближенно равно 2.22Е—308.
Глава 7. Ядро JavaScript ud/
В листинге 7.267 приведен пример использования свойства MIN_VALUE.
Листинг 7.267. Пример использования свойства MIN_VALUE
<html>
<body>
<script type="text/javascript" language="JavaScript" >
// Проверка, равно ли число значению MIN_VALUE.
if(@.00000002) != Number.MIN_VALUE){
document.write("The number is not the minimum value");
</script>
</body>
</html>
Number NaN JavaScript 1.1+, ECMAScript 1E+, JScript 2.0+
Nav3+, NES2+, IE3+, Opera3+
Number.NaN
Свойство NaN объекта Number служит для представления значения, которое не равно
пи одному числовому значению.
В листинге 7.268 приведен пример использования свойства NaN. Дня проверки того, яв-
является ли целая константа 123 числом, она сравнивается с константой NaN.
Листинг 7.268. Пример использования свойства NaN
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Проверка на предмет того, является ли 123 числом,
ifA23 == Number.NaN){
document.write("Это не число");
</script>
</body>
</html>
Number.NEGATIVE INFINITY JavaScript 1.1+ ECMAScript 1E+ JScript 2.0+
Nav3+, NES2+, IE3+, Opera3+
Number.NEGATIVE_INFINITY
^Свойство NEGATIVE_INFINITY объекта Number служит для представления отрицатель-
отрицательной бесконечности. Это значение генерируется в случае, если при вычислениях возвра-
возвращается число большее максимально возможного в JavaScript отрицательного числа (по
модулю).
В листинге 7.269 приведен пример использования свойства NEGATrVE_INFINITY. Резуль-
Результат выполнения метода sqrt() сравнивается с NEGATIVE_INFINITY.
Листинг 7.269. Пример использования свойства NEGATIVEJNFINITY
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Вычислить квадратный корень с получение» отрицательного
// результата и сравнить результат со 'значение» NEGATIVE_INFINITY.
if((Math.sqrt(-2)) != Number.NEGATIVE_INFINITY_){
document.write("He эквивалентно NEGATIVE_INFINITY");
else{
document.write("Эквивалентно NEGATIVE_INFINITY");
</script></body></html>
О с. О Часть III. Справочник по JavaScript
Number.POSITIVE INFINITY JavaScript 1.1+ ECMAScript 1E+ JScript 2.0+
Nav3+, NES2+, IE3+, Opera3+
Number.POSITIVE_INFINITY
|Й|| Свойство POSITIVE_INFINITY объекта Number служит для представления положитель-
«• ной бесконечности. Это значение генерируется, если при вычислениях возвращается чис-
число, большее максимально возможного в JavaScript положительного числа.
В листинге 7.270 приведен пример использования свойства POSITIVE_INFINITY.
Листинг 7.270. Пример использования свойства POSITIVEJNFINITY
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Провести вычисления и сравнить результат
// со значением POSITIVE_INFINITY.
if((Math.exp(999)) != Number.POSITIVE_INFINITY_){
document.wiite("Иеныпе, чем POSITIVE INFINITY");
}
else(
document.write("Вольте, чем POSITIVE_INFINITY");
}
// —>
</script>
</body>
</html>-
Number.protOtype JavaScript 1.1+ ECMAScript 1E+ JScript 2.0+
r *K Nav3+, NES2+, IE3+, Opera3+
Number.prototype.свойство
Number.prototype.метод
Свойство prototype объекта Number позволяет добавлять новые свойства и методы во все
экземпляры данного класса.
В листинге 7.271 приведен пример использования свойства prototype.
Листинг 7.271. Пример использования свойства prototype
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Создание в объекте Number нового свойства myProp.
var myProp = new Number () ;
// Функция умножает число на 3.
function triple(num){
var result;
result = (num * 3);
return result;
}
// Добавление прототипа свойства к объекту Number.
Number.prototype.calc3 = triple;
document.write("В примере демонстрируется свойство prototype
Л*для объекта Number." + "<br><br>");
document.write(50 умноженное на 3 равно: " + myProp.calc3A50)
+ "<br>");
// -->
</script>
</body>
</html>
Number.toExponentialO JavaScript 1.3+, ECMAScript 3E+
number.toExponential()
Глава 7. Ядро JavaScript 329
f Метод toExponential() объекта Number используется для преобразования объекта Number
в экспоненциальный вид.
В листинге 7.272 приведен пример использования метода toExponentiaI().
Листинг 7.272. Пример использования метода toExponential().
<script type="text/javascript" language="JavaScript">
var abc = 51000;
// Преобразование числа в экспоненциальный формат
// с последующи» отображение» на экране.
document.write("Переменная в экспоненциальной форме: " +
abc.toExponential() );
// -->
</script>
Number.toFixedO JavaScript 1.4+, ECMAScript 3E+
w Nav6+, IE5.5+
number.toFixed<число)
Метод toFixed() объекта Number используется для преобразования объекта Number в
строку с фиксированной десятичной точкой. Параметр число задает количество знаков
после десятичной точки.
В листинге 7.273 приведен пример использования метода toFixed().
Листинг 7.273. Пример использования методе toPixedO
<script type="text/javascript" language^"JavaScript">
var standard = 888000.4325;
// Преобразование числа в формат с фиксиронанной десятичной точкой
// и отображение его на экране.
document.write("Формат с фиксированной точкой: "
+ standard.toFixed@) );
// -->
</script>
Number.t0L0CaleString() JavaScript 1.4+, ECMAScript 3E+, JScript 1.0+
"w Nav6+, IE5.5+, Opera5+
number.toLocaleString()
Метод toLocaleStringO объекта Number используется для преобразования объекта Number
строки. Формат строки соответствует текущим региональным установкам хоста.
wj В листинге 7.274 приведен пример использования метода toLocaleStringO для вывода на
(г экран значения переменной myNum в строковом формате.
Листинг 7.274. Пример использования методе toLocaleStringO
<script type="text/javascript" language="JavaScript">
<!--
var myNum = 123456789;
// Получение значения в строковой формате с последующим
// отображением на экране.
document.write("Локальная строка: " + myNum.toLocaleString() );
// -->
</script>
Number.toPreciSion() JavaScript 1.4+, ECMAScript 3E+
w Nav6+, IE5.5+
number.toPrecision(число)
f Метод toPrecision() объекта Number возвращает строковое представление числа в фор-
формате с одной цифрой перед десятичной точкой и с количеством цифр после десятич-
десятичной точки, равным число - 1.
листинге 7.275 приведен пример использования метода toPrecision().
330 Часть III. Справочник по JavaScrip:
Листинг 7.275. Пример использования метода toPrecision().
<script type="text/javascript" language="JavaScript">
var myNum = 123456789.4444;
// Возврат результата выполнения метода toPrecision()
II с аргументом myNum.
document.write("Строка, определяющая точность: "
+ myNum.toPrecisionB) );
</script>
Number.toSourcel) JavaScript 1.3+, ECMAScript 1E+
l/ Nav4.06+
number.toSource ()
Метод toSource() объекта Number возвращает строковое представление объекта Number.
В листинге 7.276 приведен пример использования метода toSource().
Листинг 7.276. Пример использования метода toSourceD
<script type="text/javascript" language="JavaScript" >
// Создание ноного объекта Number н
// представление его в виде строки,
var aNum = Number B1) ;
document.write(aNum.toSource());
</script>
JavaScript 1.1+, ECMAScript 1E+, JScript 1.0+
Nav3+, NES2+, IE3+, Opera3+
number.toString ()
. Метод toString() объекта Number возвращает стоковое представление объекта Number.
В листинге 7.277 приведен пример использования метода toString().
Листинг 7.277. Пример использования метода toStringO
<script type="text/javascript" language="JavaScript">
var aNum = Number B1) ;
// Возврат объекта aNum в строковом представлении,
document.write("Строковый эквивалент 21: " + "<Ь>"
+ aNum.toString() + "</Ь>");
</script>
Number.unwatch() JavaScript^.H, jScript 3.0+
number.unwatch(prop)
k Метод unwatcli() объекта Number прекращает слежение за свойством объекта, установ-
установленное методом watch().
В листинге 7.278 приведен пример использования метода unwatch().
Листинг 7.278. Пример использования метода unwatchf)
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln("myNum." + id + " changed from " + oldValue
+ " to " + newvalue + "<br>")
return newValue;
// Создание нового объекта Number,
var myNum = new NumberA0);
Глава 7. Ядро JavaScript dd1
// Создание нового свойства р.
Number.prototype.p = 1;
myNum.watch("р",alertme);
myNum. p = 2;
// Прекращение слежения за свойством.
myNum.unwatch("р");
myNum. р = 3 ;
myNum. р = 4;
// Начало слежения за свойством.
myNum.watch("p",alertme);
myNum. р = 5 ;
// -->
</script>
</html>
Number.valueOf() javascript^-ь. jscrgt 2.0+
number.valueOf()
f Метод vaIueOf() объекта Number используется для получения элементарного значения
объекта Number как типа данных.
В листинге 7.279 приведен пример использования метода vaIueOf(). Создается новый
объект Number — объект myNum. Затем на экран выводится результат выполнения фун-
функции vaIueOf() с аргументом myNum.
Листинг 7.279. Пример использования метода IMumber.valueOfO
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Создание нового объекта Number.
myNum = new Number B4)
// Отображение результата выполнения метода valueOf.
document.write("The value of myNum is: " + myNum.valueOf());
// -->
</script>
</body>
</html>
Number.watch()
number.watch(prop, handler)
Метод watch() объекта Number используется для включения слежения за свойством, за-
заданным параметром prop. При изменении свойства вызывается функция handler, кото-
которая выполняет заданную пользователем операцию.
В листинге 7.280 приведен пример использования метода watch().
Листинг 7.280. Пример использования метода watch()
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция, предупреждающая пользователя об изменении свойства р.
function alertme(id,oldValue,newValue)
{
document .writeln ("myNum. " + id + " изменено с '' + oldValue
+ " на " + newValue + "<br>")
return newValue;
}
var myNum= new NumberA0);
// Создание нового свойства р.
Number.prototype.p = 1;
OOci Часть III. Справочник по JavaScric
// Начало слежения за свойством р.
myNum.watch("p",alertme) ;
myNum.p = 15;
// — >
</script>
</body>
</html>
OhiectM JavaScript 1.1+, ECMAScript 1E+, JScriptlOt
J w Nav3+, NES2+, IE3+, Opera3+
var переменная = new Object(строка)
ffiSk Объект Object() — это элементарный тип данных, от которого наследуются все объек-
*" ты языка JavaScript. Различные свойства и методы объекта Object() перечислены в табл.
7.41.
Таблица 7.41. Свойства и методы объекта ObjectQ
Тип Параметр Описание
Свойство constructor Создает объект Object.
prototype Создает для заданного объекта новое свойство.
Метод eval() Выполняет для заданного объекта строку JavaScript-кода.
toSource() Возвращает строковое представление объекта.
toStringO Преобразует объект в строковое представление.
unwatch() Прекращает слежение за указанным свойством.
valueOf() Возвращает элементарное значение объекта как типа
числовых данных.
watch() Устанавливает слежение за указанным свойством.
В листинге 7.281 приведен пример использования объекта Object.
Листинг 7.281. Пример использования объекта Object
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Создание объекта Object.
var myobj = new Object(foo) ;
document.write(Создан объект foo);
// -->
</script>
</body>
</html>
Object.COnstrilCtor JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
' Nav3+, NES2+, IE4+
object.constructor
& Свойство constructor объекта Object определяет функцию, с помощью которой создается
объект.
В листинге 7.282 приведен пример использования свойства constructor.
Листинг 7.282. Пример использования свойства constructor
<html>
<body>
<script type="text/javascript" language="JavaScript">
Глава 7. Ядро JavaScript uuu
// С помощью свойства constructor создается новый объект Number.
num = new Number C)
if(num.constructor == Number){
document.write("Объект создан");
</script>
</body>
</html>
JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
Nav3+, NES2+, IE4+
object.eval (строка)
'Метод eval() объекта Object выполняет строку кода JavaScript, которая относится к дан-
данному объекту. Примечание: в версии 1.4 и более поздних версиях использование мето-
метода eval() запрещено, и при работе с объектом Object к нему нельзя обращаться напря-
напрямую. Для выполнения кода в версиях 1.4 и 1.5 следует воспользоваться функцией верхнего
уровня evalQ.
В листинге 7.283 приведен пример использования метода evai(). Объявляются и инициали-
инициализируются две переменные. Оператор умножения переменных передается функции eval().
Листинг 7.283. Пример использования метода eval()
<html>
<body>
<script type="text/javascript" language="JavaScript">
var x = 9 ;
var у = 8 ;
// Отображение результата умножения х*у.
document.write("Результат умноженмя х * у равен: " + eval(х * у)} ;
</script>
</body>
</html>
Object.prototype JavaScript 1.1+, ECMAScriptJE+, JScript 2.0+
object.prototype.свойство
object.prototype.метод
^Свойство prototype объекта Object позволяет добавлять новые свойства или методы для
всех экземпляров данного класса.
В листинге 7.284 приведен пример использования свойства prototype.
Листинг 7.284. Пример использования свойства prototype
<html>
<body>
<script type="text/javascript" language="JavaScript">
Object.prototype.newProperty = 2;
// Отображение значения свойства newProperty.
document.wri te(document.object.newProperty.value);
</script>
</body>
</html>
Object.t0S0Urce() JavaScript.1.3+
Nav4.06+
object.toSource()
Метод toSource() объекта Object возвращает строковое представление объекта Object.
О 34 Часть III. Справочник по JavaScript
ъ/% В листинге 7.285 приведен пример использования метода toSource().
Листинг 7.285. Пример использования метода toSourceO
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
//Создание нового объекта Object и представление его в виде строки
var aNum = NumberB1);
document.write(aNum.toSource());
// -->
</script>
</body>
</html>
JavaScript 1.1+, ECMAScript 1E+, JScript 2.0+
Nav3+ NES2+ ,E4+ Qpera3+
object.toString()
1^1 Метод toString() используется для преобразования объекта Number в строковое представ-
представление.
В листинге 7.286 приведен пример использования метода toString().
Листинг 7.286. Пример использования метода toStringf)
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Создание объекта Number.
var aNum = Number B1);
//Преобразование объекта Number в строку н отображение ее на экране
document.write(aNum.toString());
// -->
</script>
</body>
</html>
Object.unwatch()
object.unwatch (prop)
f Метод umvatch() объекта Object прекращает слежение за свойством объекта, установленное
методом watch(). В качестве аргумента метод unwatch() принимает свойство prop.
В листинге 7.287 приведен пример использования метода unwatch(). Создается и иници-
ализируется временная переменная tmp. Затем с помощью метода watch() за этой пере-
переменной устанавливается слежение. При изменении значения tmp вызывается функция
inform. После изменения переменной вызывается метод unwatch(), который отключает
слежение за переменной. После выключения слежения значение переменной tmp можно
изменять без получения предупреждений.
Листинг 7.287. Пример использования метода unwatchf)
<html>
<body>
<script type="text/javascript" language^"JavaScript">
<! --
// Функция информирует пользователя об изменения значения
// переменной tmp.
function inform(){
document.write("Значение переменной tmp изменено с 1 на 3");
}
// Объявление переменной tmp.
var tmp = 1;
Глава 7. Ядро JavaScript udu
// Начать отслеживания переменной tmp.
watch("tmp",inform);
tmp=3;
// Прекращение отслеживания переменной tmp.
unwatch("tmp");
tmp=7;
// "->
</script>
</body>
</html>
Ohipnt valupOfH JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
J w Nav3+, NES2+, IE4+, Opera3+
object.valueOf()
^ Метод vaIueOf() объекта Object используется для получения значения заданного объек-
* тз.
шЪ листинге 7.288 приведен пример использования метода valueOf().
Листинг 7.288. Пример использования метода valueOf()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Объявление переменной age, которая содержит объект Number.
var age = NumberC0);
// Вызов для переменной метода valueOf и отображение результата
// на экране
document.write(age.valueOf ()) ;
// — >
</script>
</body>
</html>
Object.watch()
object.watch(prop, function)
f Метод watch() объекта Object используется для включения слежения за указанным свой-
свойством. При изменении свойства вызывается заданная пользователем функция. В качестве
аргументов метод принимает свойство, за изменением которого необходимо следить, и
функцию function, которая вызывается при изменении свойства.
В листинге 7.289 приведен пример использования метода watch().
Листинг 7.289. Пример использования метода watch()
<html>
<body>
<title>Example of the watch method</title>
<script type="text/javascript" language="JavaScript">
// Функция, предупреждающая пользователя об изменении
// значения переменной tmp.
function inform(){
document.write("Значение переменной tmp изменено с 1 на 3");
// Объявление и инициализация переменной tmp.
var tmp = 1;
// Начало отслеживания переменной tmp. При изменении переменной
// tmp вызвать функцию inform.
watch("tmp",inform);
// Изменение переменной tmp.
tmp=3;
</script>
</body></html>
О О Ь Часть III. Справочник по JavaScript
Зарезервированное ключевое слово
Ключевое слово package в настоящее время не реализовано в серверной части языка
JavaScript.Оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
Packages.имя_пакета
# Объект Packages является встроенным, позволяющим из браузера получать доступ к раз-
различным пакетам Java. Каждое свойство объекта Packages ссылается на объект Java Package.
который содержит ссылку на соответствующие классы. В табл. 7.42 перечислены пакеты,
которые входят в объект Packages по умолчанию.
Таблица 7.42. Свойства объекта Packages
Пакет
classname
Java
netscape
sun
Описание
Содержит
Содержит
Содержит
Содержит
ссылку
ссылки
ссылки
ссылки
на
на
на
на
полное имя Java-класса в пакете
базовые Java-классы
Netscape-классы
Sun-классы
В листинге 7.290 приведен пример использования объекта Packages. На экране отобра-
отображается текстовое поле ввода. После ввода строки в текстовое поле и щелчке на кнопке
введенная строка с помощью пакета classes передается консоли Java.
Листинг 7.290. Пример использования объекта Packages
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция принимает строку, введенную пользователем,
// и передает ее на Java-консоль.
function writeOut(input){
Packages.Java.lang.System.out.printin(input);
</script>
<form name="forml">
Сценарий принимает введенное в текстовом поле значение и передает
его на Java-консоль с использованием пакета Java.
<ЬгХЬг>
Значение:
<input type="teKt" size=0" name="txt">
<br><br>
<input type="button" value="Write Out "Text" name="buttonl"
onClick='writeOut(document.forml.txt.value)'>
<br>
</form>
</body>
</html>
Packages.className JMVaS,criPM>:«+
Nav3+, NES2+
Packages.className
Глава 7. Ядро JavaScript 337
f Свойство className объекта Packages используется для получения доступа к классам па-
пакетов (за исключением пакетов netscape, sun и Java). Для получения доступа в свойстве
className необходимо указать полное имя нужного пакета.
В листинге 7.291 приведен пример использования свойства className для получения до-
ступа к фиктивному классу.
Листинг 7.291. Пример использования свойства clessName
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Получение доступа к классу myClass.
myName = new Packages.myClass.Car()
// -->
</script>
</body>
</html>
Packages.java
Packages.Java.className.methodName
Подпакет Java объекта Packages содержит ссылку на объект JavaPackage, который включает
библиотеку базовых Java-классов. Этот подпакет используется для нескольких целей, из
которых одной из самых важных является усиление степени защиты LiveConnect и по-
получение доступа к Java-консоли.
В листинге 7.292 приведен пример использования подпакета Java. Он применяется при
выводе текста на Java-консоль.
Листинг 7.292. Пример использования подпаквта Java
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Использование подпакета java для вывода текста на консоль Java.
Packages.Java.lang.System.out.println("Hello World!");
// — >
</script>
</body>
</html>
Packages.netscape
Packages.netscape.className.methodName
Подпакет netscape объекта Packages содержит ссылку на объект JavaPackage, который
включает пакет netscape. Этот подпакет используется аплетами Java для получения доступа
к коду JavaScript посредством LiveConnect. Сам пакет содержит два класса: plugin и
javascript.
i/%Данный пакет используется в коде Java-аплета, а не в коде JavaScript.Однако в листин-
lr re 7.293 показан пример вызова подпакета netscape напрямую с целью проверки того,
что он реализован в используемом браузере.
Листинг 7.293. Пример использования подпакета netscape
<html>
<body>
<script type="text/javascript" language^"JavaScript">
<!--
//Для проверки существования пакета производится попытка его вызова
if(Packages.netscape){
document.write("Этот браузер включает LiveConnect!");
338 Часть III. Справочник по JavaScript
}else{
document.write("Этот 6paysep не включает LiveConnect!");
}
// -->
</script>
</body>
</html>
Packages.sun
Packages.sun.className.methodName
Подпакет sun объекта Packages содержит ссылку на объект JavaPackage, который включает
пакет sun. Этот подпакет используется для нескольких целей, из которых одной из са-
самых важных является увеличение безопасности LiveConnect.
Данный пакет используется в коде Java-аплета, а не в коде JavaScript. Однако в листин-
листинге 7.294 приведен пример вызова подпакета sun напрямую для проверки того, что он ре-
реализован в используемом браузере.
Листинг 7.294. Пример использования подпакета netscape
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
//Для проверки существования пакета производится попытка его вызова
if(Packages.sun){
document.write("Этот 6paysep включает LiveConnect!");
}else{
document.write("Этот браузер не включает LiveConnect!");
}
// -->
</script>
</body>
</html>
narcpPlnatM JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
parsenoatu Nav2+i ^ ш^ j
parseFloat {строка)
^Функция parseFloat() используется для преобразования строки в число.
В листинге 7.295 приведен пример использования функции parseFloat(). В этом примере
функция parseFloat() вызывается с двумя различными строками. Первая строка, кото-
которая содержит цифры, просто преобразуется в число. Вторая строка, которая содержит
буквы, не может быть преобразована в число.
Листинг 7.295. Пример использования матода parseFloat()
<html>
<body>
<script type="text/javascript" language55"JavaScript">
<! --
// Преобразование строки 245.31" в число.
document.write("Строка 1245.31 преобразована"
+ parseFloat(245.31") + "<br>");
// Попытка преобразования в число строки "test".
// Если это невозможно, отображается сообщение об ошибке.
if( isNaN(parseFloat("test")) ){
document.write("Невозможно преобразовать текстовую строку
"*в число . ") ;
}
// -->
</script>
</body>
</html>
Глава 7. Ядро JavaScript О О У
DarselntM JavaScript 1.0+, ECMAScript 1E+, JScript 1.0+
K w Nav2+, NES2+, IE3+, 0pera3+
parselnt(строка, radix)
parselnt{строка)
f Метод parselnt() используется для преобразования строки в целое число. Метод может
принимать аргумент строка и необязательный параметр radix. Параметр radix является ос-
основанием системы счисления, в которой задано число в строке.
В листинге 7.296 приведены примеры использования метода parselnt() для преобразова-
преобразования строки. Рассмотрены несколько примеров для различных типов строк.
Листинг 7.296. Пример использования метода parselnt()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Преобразование строки "859" в целое число.
document.write("Строка 859 преобразована в целое число: ");
document.write(parselnt("859") + "<br>");
// Преобразование двоичной строки в целое число.
document.write("Двоичная строка 101101 преобразована в целое число: ");
document.write(parselnt(01101", 2) + "<br>"};
// Преобразование шестнадцатеричной строки в целое число.
document.write("Шестнадцатеричная строка FA832B преобразована
"в целое число: ") ;
document.write(parselnt("FA832B", 16) + "<br>");
// "->
</script>
</body>
</html>
private JavaScript 1.2+
H Nav4+, NES3+
Зарезервированное ключевое слово
& Ключевое слово private в настоящее время не реализовано в серверной части языка
•JavaScript. Оно зарезервировано для будущего использования.
l4 Поскольку это ключевое слово не реализовано, пример его использования не приводится.
protected i?vaAcrK«2
r Nav4+, NES3+
Зарезервированное ключевое слово
& Ключевое слово protected в настоящее время не реализовано в серверной части языка
• JavaScri pt. Оно зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
public JavaScript 1.2+
Н Nav4+, NES3+
Зарезервированное ключевое слово
& Ключевое слово public в настоящее время не реализовано в серверной части языка
•JavaScript. Оно зарезервировано для будущего использования.
i/$ Поскольку это ключевое слово не реализовано, пример его использования не приводится.
JavaScript 1.2+, JScript 3.0+
Nav4+, NES3+, IE4+
var переменная = new RegExp(шаблон, флаги)
f Объект RegExpO служит для представления pei-улярного выражения, которое использу-
используется для выполнения поиска образца в строке. Для создания объекта необходимо задать
340
Часть III. Справочник по JavaScript
параметры шаблон и флаги. Параметр шаблон определяет регулярное выражение. Параметр
флаги может содержать один или оба флага g (global, глобальный поиск) и i (ignore case,
игнорировать регистр символов). Свойства и методы объекта RegExp() перечисление
табл. 7.43.
Таблица 7.43. Свойства и методы объекта RegExpO
Тип
Свойство
Метод
Параметр
RegExp,$*
RegExp.$&
RegExp.$_
RegExp.$"
RegExp.$'
RegExp.$+
RegExp.$1,$2,...$9
constructor
global
ignoreCase
input
lastlndex
lastMatch
lastParent
leftContext
multiline
prototype
rightContext
source
compileO
Описание
Аналогично свойству multiline
Аналогично свойству lastmatch
Аналогично свойству input
Аналогично свойству leftContext
Аналогично свойству rightContext
Аналогично свойству lastParen
Служит для представления подстроки совпадений
Создает объект
Указывает, сравнивать ли выражения со всеми
возможными совпадениями
Указывает, игнорируются ли при поиске в строках
регистры символов
Совпадающая строка
Указывает индекс, с которого начинать поиск следующей
совпадающей строки
Последние совпадающие символы
Последнее совпадение в подстроке в скобках
Подстрока предшествующая последнему совпадению
Указывает, производить ли поиск по нескольким строкам
Прототип объекта RegExp
Подстрока, следующая за последним совпадением
Строка-образец
Компилирует регулярное выражение
ехес()
Выполняет поиск совпадений в заданной строке
test()
Проверяет наличие совпадения
toStringO
Возвращает объект в формате строки
unwatch()
Прекращает слежение за свойством
valueOfQ
Возвращает элементарное значение объекта
watch()
Устанавливает слежение за свойством
В листинге 7.297 приведен пример использования объекта RegExp. Пользователю предо-
предоставляет поле ввода, в которое он водит номер своей карточки социального страхова-
страхования (SSN). После ввода номера и щелчке на кнопке Validate (Проверить) проверяется
корректность введенного номера. Проверка выполняется за счет использования объекта
RegExp для введенного номера карточки социального страхования.
Глава 7. Ядро JavaScript 05 Q I
Листинг 7.297. Пример использования объекта RegExp
<html>
<body>
<script type="text/javascript" language^"JavaScript">
// Функция проверяет правильность ввода ноиера карточки
// социального страхования,
function isSSN(str){
// Объявление объекта RegExp, который проверяет либо ввод
// 9-вначного номера,, либо номера по формату
// ххх-хх-хххх.
var regexp = /л(\d{9}|\d{3}-\d{2}-\d{4})$/;
return regexp.test(str);
}
// Проверка введенного иоиера карточки социального страхования,
function checklnput(){
var valid = true;
var ssn = document.forml.ssn.value;
if (!isSSN (ssn)){
window.alert("Некорректный ноиер SSN: " + ssn) ;
valid = false;
}
else)
alert(ssn + " корректный номер SSN");
</script>
<form name="forml">
Введите номер карточки социального страхования:
<input type="text" size=5" name="ssn">
<br><br>
<input type="button" value="Validate SSN" onClick='checklnput()'>
<br>
</form>
</body>
</html>
ReqEXD,$* JavaScript 1.2+
a H'g Nav4+, NES3+, IE4+
RegExp, $*
Свойство RegExp, $* связано с многострочным поиском. Это — булево значение, дос-
доступное только для чтения, которое указывает должен ли поиск осуществляться по не-
нескольким строкам. Применение свойства RegExp, $* аналогично использованию свойства
multiline.
В листинге 7.298 приведен пример использования свойства RegExp, $* при проведении
поиска по образцу.
Листинг 7.298. Пример использования свойства RegExp, $*
<html>
<script type="text/javascript" language="JavaScript">
// Функция осуществляет поиск выражения "текст". Однако, если
// выполняется многострочный поиск, на экран выводится
// соответствующее окно предупреждения,
function getinfo(){
var myPat = new RegExp ("the" , "i");
var str = document.forml.mytext.value;
myArray = myPat.exec(str);
alert("RegExp.$* is: " + RegExp["$*"]);
</script>
Часть III. Справочник по JavaScript
<body>
<form name="forml">
Как только будет изменен текст в текстовом поле и выполнен щелчок
на документе, отображается окно предупреждения, в котором выводится
значение RegExp.$*.
<br><br>
<textarea name="mytext" cols=0" rows="8" onChange='getinfо()'>
Это пример текстовой области, в которой содержится некоторый
тестовый текст. Данный текст иллюстрирует методы использовамия
свойства multiline. Если считаны многострочные строки, свойству
RegExp.$* присваивается значение true.
</textarea>
<br>
</form>
</body>
</html>
ReqEXD.S& JavaScript 1.2+, JScript 3.0+
y H * Nav4+, NES3+, IE4+
RegExp.$&
Свойство RegExp.$& представляет последние совпадающие символы. Применение свой-
свойства RegExp.$& аналогично использованию свойства last Match.
В листинге 7.299 приведен пример использования свойства RegExp.$&.
Листинг 7.299. Пример использования свойства RegExp,$&
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Определение образца поиска,
var pat = new RegExp ("test", "gi") ;
str = "Testing Testing 123";
myArray = pat.exec(str);
// При обнаружении совпадения вывести сообщение,
document.write("Образец найден: " + myArray[0]
+ ". последнее совпадающее выражение ($&): " + RegExp["$S"]);
</script>
</body>
</html>
ReqExD.S JavaScript 1.2+
a Hl*- Nav4+, NES3+, IE4+
RegExp,$ _
^Свойство RegExp,$ _ представляет входную строку, с которой производится сравнение
текущей строки. Применение свойства RegExp,$ _ аналогично использованию свойства
input.
В листинге 7.300 приведен пример использования свойства RegExp,$ _.
Листинг 7.300. Пример использования свойства RegExp,$
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция создает новое регулярное выражение, а затем
// осуществляет поиск этого выражения в тексте, введенном в
// текстовом поле. На экран выводится окно предупреждения,
// которое указывает значение свойства RegExp.input.
function getinput(){
var myPat = new RegExp ("the" , "i");
var str = document.forml.mytext.value;
myArray = myPat.exec(str);
Глава 7. Ядро JavaScript
alert("Значение RegExp$ будет: " + RegExp["$_"]);
}
// -->
</soript>
<form name="forml">
Как только изменяется текст в указанном ниже текстовом поле,
отображается предупреждающее сообщение, отображающее вводимое
значение .
<br><br>
Введите некоторый текст:
<input type="text" name="mytext" size=0" onChange='getinput()'>
<br>
</form>
</body>
</html>
ReqExp.S" JavaScript 1.2+
a H* Nav4+, NES3+, IE4+
RegExp.$"
Свойство RegExp.S" представляет подстроку, предшествующую результату последнего
сравнения с шаблоном. Принцип применения свойства RegExp.S" аналогичен принци-
принципу использования свойства leftContext.
В листинге 7.301 приведен пример использования свойства RegExp.S".
Листинг 7.301. Пример использования свойства RegExp.S"
<script type="text/javascript" language="JavaScript">
//Определение шаблона регулярного выражения и глобального сравнения
pat = /ыб*/д;
// Создание строкового объекта.
var str = "Я знаю, где будет рыба этой ночью.";
// Создание массива результатов.
myArray = pat.exec(str) ;:
document.write("Проверка на наличие подстроки" + "<i>" + "ыб" + "</i>");
document.write("предыдущее последнее сравнение с шаблоном");
document.write("В строке: " + "<Ь>");
document.write("Я знаю, где будет рыба этой ночью"+"</b><br><br>");
document.write("RegExp. $~ это: " + RegExp["$""]);
// -->
</script>
RegExp.$' "~ JavaScript 1.2+
a H* Nav4+, NES3+, IE4+
RegExp.$ '
| Свойство RegExp.S' содержит подстроку, следующую за последним сравнением с шаб-
1 лоном. Способ применения свойства RegExp.S' аналогичен способу применения свойства
rightContext.
В листинге 7.302 приведен пример использования свойства RegExp.S'.
Листинг 7.302. Пример использования свойства RegExp.S'
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Определение шаблона регулярного выражения и выполнение
// глобального сравнения.
pat = /be*/gi;
// Создание строкового объекта.
var str = "Eat Drink and be Merry.";
Часть III. Справочник по JavaScript
// Создание массива результатов.
myArray = pat.exec(str) ;:
document.write("Проверка подстроки " + "<i>" + "be'1 + "</i>");
document.write("следуя за соответствием по последвему шаблону");
document.write("В строке: " + "<b>"
+ "Ешьте, пейте и будьте счастливы" + "</bxbr><br>");
document.write("RegExp$' это: " + RegExp["$'"]);
// -->
</script>
</body>
</html>
ReqExD $+ JavaScript 1.2+, JScript 3.0+
a H* Nav4+, NES3+, IE4+
RegExp.$+
Свойство RegExp.$+ представляет последнее сравнение с шаблоном, заключенное в скоб-
скобки. Использование свойства RegExp.$+ аналогично использованию свойства lastParen.
В листинге 7.303 приведен пример использования свойства RegExp.$+.
Листинг 7.303. Пример использования свойства RegExp.$+
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Определение регулярного выражения.
exp = new RegExp (" (please)", "g").;
// Создание строкового объекта.
str = "Will you (please) stop yelling!";
myArray = exp.exec(str);
// Отображение на экране эначевия свойства lastParen.
document.write("The RegExp.$+is: " + "<b>"+ RegExp["$+"]+ "</b>");
// -->
</script>
</body>
</html>
RegExp.$1,$2,..$9 JavaScrifL1V4++' JS? m
RegExp.$1,$2,..$9 ' '
Свойство RegExp.$l,S2,..$9 представляет последние совпадающие подстроки в скобках.
В листинге 7.304 приведен пример использования свойства RegExp.$l,$2,.-$9. Пользова-
Пользователь вводит в текстовое поле свой номер телефона. После шелчка на кнопке функция swap
переставляет последние четыре цифры телефонного номера с первыми тремя цифрами.
Листинг 7.304. Пример использования свойства RegExp.$1,$2,..$9
<html>
<script type="text/javascript" language="JavaScript">
// Функция переставляет последние четыре цифры телефонного
// номера для своего аргумента с первыми тремя цифрами,
function swap(){
re = / (\w+)\D(\w+)/;
str = document.forml.textl.value;
newstr=str.replace(re, "$2, $1");
document.forml.text2.value = newstr;
}
// — >
</script>
<body>
<form name="forml">
Введите семизначный телефонный номер в формате ххх-хххх
<br><br><br>
Глава 7. Ядро JavaScript 345
Телефонный номер G цифр):<л.приЪ type="text" name="textl" size=0">
<br><br>
<input type="button" value="Swap" onClick='swap()'>
<br><br><br>
Вывод: <input type="text" name="text2" size=0">
</form>
</body>
</html>
RegExp.constructor()
регуляряое_выражение.constructor
& Свойство constructor объекта RegExp определяет функцию, создающую объект RegExp.
ulB листинге 7.305 приведен пример использования свойства constructor при создании
1г объекта RegExp.
Листинг 7.305. Пример использования свойства constructor
<html>
<body>
<soript type="text/javascript" language="JavaScript">
// Создание нового объекта RegExp с помощью свойства constructor.
myExp = new RegExp (" the ")
if(myExp.constructor == RegExp){
document.write("Объект создан");
}
// -->
</script>
</body>
</html>
RegExp.compile() Nav<T^ m+
регулярно е_выражение.compile(образец, флаги)
Метод compile() объекта RegExp компилирует объект RegExp. Для создания объекта тре-
требуется два параметра, образец и флаги. Параметр образец представляет собой регулярное
выражение. Параметр флаги может содержать один или оба флага g (global, глобальный
поиск) и i (ignore case, игнорировать регистр символов).
В листинге 7.306 приведен пример использования метода compile(). Образец создается с
помощью свойства constructor объекта RegExp. Затем он компилируется с помощью ме-
метода compile(), а результат компиляции выводится на экран.
Листинг 7.306. Пример использования методе compileO.
<html>
<soript type="text/javascript" language="JavaScript">
<!--
var myPat = new RegExp ("jane", "i");
var newPat = myPat.compile(myPat);
// Функция выводит на экран результат компиляции образца поиска,
function getinfo(){
document.forml.textl.value = newPat;
}
// -->
</script>
<body>
<form name="forml">
Щелкните на кнопке внизу с целью получения образца для следующей
команды: new RegExp("jane" , "i");
<br><br><br>
Скомпилированный образец: <input type="text" name="textl" size=0">
<brxbr>
О 4Ь Часть III. Справочник по JavaScript
<input type="button" value="Get Pattern" onClick='getinfо()'>
</form>
</body>
</html>
регулярное_выражение.exec(строка)
Метод ехес() объекта RegExp выполняет поиск образца в указанной строке. Результат
поиска возвращается в виде массива. Передаваемый методу параметр строка содержит
строку, в которой выполняется поиск регулярного выражения.
В листинге 7.307 приведен пример использования метода ехес(). Определяется регуляр-
ное выражение, которое затем вызывается для строки с помощью метода ехес().
Листинг 7.307. Пример использования метода ехес()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Выполнение поиска образца "xyz" в строке str. Если совпадение
// обнаружено, вывести на экран соответствующее сообщение и
// индекс позиции для найденного совпадения в строке.
myRe=/xyz*/g;
str = "abcxyzdefhij"
myArray = myRe.exec(str);
document .writeln ("Найдено " + myArray[0] + " в шаблоне: " + "<b>"
+ "abcxyzdefhi j " + "</b>" + " по индексу " +
(myRe.lastlndex - 3) ) ;
// -->
</script>
</body>
</html>
RegExp.global
рех?улярное_выражение. global
$c& Свойство global объекта RegExp позволяет определить, устаноалеп ли в регулярном вы-
»" ражении флаг g. Если флаг установлен, будет выполнен глобальный поиск по образцу
в строке.
В листинге 7.308 приведен пример использования свойства global. Создается новый объект
RegExp с установленным флагом global. При загрузке сценария выполняется проверка вы-
выражения, и значение свойства global выводится на экран.
Листинг 7.308. Пример использования свойства global
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Создается регулярное выражение для шаблона "как"
// с установленным флагом global.
var myPat = new RegExp ("if", "g");
// Определение строки.
var str = "А как отнесется Анжела к подаркам?";
// Сохранение результата выполнения поиска в массиве myArray.
myArray = myPat.exec(str);
document.write("Значение RegExp.global будет: " + "<b>"
+ myPat.global + "</b>");
// —>
</script>
</body>
</html>
Глава 7. Ядро JavaScript
347
RegExp.ignoreCase nsv^nVsK ml
рех?улярное_виражение. ignoreCase
f Свойство ignoreCase объекта RegExp указывает, следует ли игнорировать регистры сим-
символов при выполнении сравнения с образцом в строке.
В листинге 7.309 приведен пример использования свойства ignoreCase. Создается новый
объект RegExp с установленным флагом ignoreCase. При загрузке сценария выполняет-
выполняется проверка выражения и, в соответствии со значением свойства ignoreCase, на экран
выводится соответствующее сообщение.
Листинг 7.309. Пример использоввния свойства ignoreCase
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
//Создание регулярного выражения "и" с установленным флагом ignoreCase.
var myPat = new RegExp ("and" , "i") ;
// Определение строки.
var str = "Хотят ли Саша и Таня пирожных?";
// Сохранение результата выполнения сравнения в массиве myArray.
myArray = myPat.exec(str);
if (myPat.ignoreCase == true){
document.write("Опция " + "ignoreCase" + "</i>"
+ " БЫЛА использована");
}
else{
document.write("Опция " + "<i>" + "ignoreCase"
+ "</i>" HE была использована");
}
// -->
</script>
</body>
</html>
ReqExn.input JavaScript 1.2+, JScript 3.0+
a H H Nav4+, NES3+, IE4+
рех?улярное_вырлжение. input
Свойство input объекта RegExp представляет строку, в которой выполняется сравнение
по образцу.
В листинге 7.310 приведен пример использования свойства input.
Листинг 7.310. Пример использования свойства input.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция создает новое регулярное выражение, а затеи вызывает
// его, осуществляя поиск в тексте, введенном в текстовом поле.
// На экране отображается окно предупреждения, которое указывает
// аначение свойства RegExp.input.
function getinput() {
var myPat = new RegExp("привет", "i");
var str = document.forml.mytext.value;
myArray = myPat.exec(str);
alert("Значение RegExp.input равно: " + RegExp.input);
}
// -->
</script>
<form name="forml">
Если изменяется текст в нижнем текстовом поле,
появляется предупреждающее сообщение, которое отображает введенное
значение
348 Часть III. Справочник по JavaScript
(если только значение содержит слово "привет") .
<br><br>
Введите некоторый текст:
<input type="text" name="mytext" size=0" onChange='getinput()'>
<br>
</form>
</body>
</html>
RegExp.lastlndex JavaScripLvJt; nes'K m
регулярно е_вщ>ажение.lastlndex
t Свойство lastlndex объекта RegExp используется для определения индекса начала следу-
следующего совпадения.
В листинге 7.311 приведен пример использования свойства lastlndex. Создается регуляр-
регулярное выражение "is" и производится поиск этого выражения в строке. При обнаружении
совпадения результат выводится на экран.
Листинг 7.311. Пример использования свойства lastlndex
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Создание регулярного выражения "от" .
exp = /ст*/д;
str = "Простой пример стандартного предложения.";
myArray = exp.exec(str);
document.write("Найдено: " + myArray[0]
+ ". Индекс следующего совпадения: " + exp.lastlndex);
</script>
</body>
</html>
RegExp.lastMatch
регулярное_выражение.lastMatch
Свойство lastMatch объекта RegExp представляет последние совпадающие символы.
В листинге 7.312 приведен пример использования свойства lastMatch. Создается регуляр-
регулярное выражение "тест" и производится поиск этого выражения в переменной str. При заг-
загрузке документа свойство lastMatch используется для вывода на экран последнего со-
совпадения.
Листинг 7.312. Пример использования свойства lastMatch
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Определение образца поиска.
var pat = new RegExp ("тест", "gi");
str = "Тестирование Тестирование 123";
myArray = pat.exec(str);
// При обнаружении совпадения вывод на экран сообщения,
document.write("Образец найден: " + myArray[0]
+ "■ последнее совпадающее выражение: " + RegExp.lastMatch);
// -->
</script>
</body>
</html>
Глава 7. Ядро JavaScript ОЧ-9
RegExp.lastParen ^
регулярное_выражение.lastParen
Свойство lastParen представляет последнее совпадение в подстроке в скобках. Оно воз-
возвращает значение последней подстроки, заключенной в скобках.
В листинге 7.313 приведен пример использования свойства lastParen.
Листинг 7.313. Пример использования свойства lastParen
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Определение регулярного выражения.
exp = new RegExp("(пожалуйста)", "g");
// Создание строкового объекта.
str = "Прекратите (пожалуйста) кричать!";
myArray = exp.exec(str);
// Отображение значения свойства lastParen.
document.write("Значение свойства RegExp.lastParen: " + "<b>"
+ RegExp.lastParen + "</b>");
// -->
</script>
</body>
</html>
RegExp.leftContext JavaScript 1.2+, JScript 5.5+
3 K Nav4+, NES3+, IE4+
регулярнов_выражвнив.leftContext
|§| Свойство leftContext содержит подстроку, предшествующую последнему совпадению.
■ а В листинге 7.314 приведем пример использования свойства leftContext. Образец RegExp
1г используется для получения всего содержимого строки, предшествующему до образца
"ыб".
Листинг 7.314. Пример использования свойства leftContext
<html>
<body>
Ocript type="text/javascript" language="JavaScript">
<l --
//Определение шаблона регулярного выражения и глобального сравнения
pat = /ыб*/д;
// Создание строкового объекта.
var str = "Я знаю, где будет рыба этой ночью.";
// Создание массива результатов.
myArray = pat.exec(str);
document.write("В строке: " + "<b>"
+ "Я знаю, где будет рыба этой ночью" + "</bXbr><br>") ;
document.write("Свойство RegExp.leftContext: " + RegExp.leftContext);
// —>
</script>
</body>
</html>
RegExp.multiline nJ^S? Si
регулярное_выражение.multi1i ne
f Свойство multiline объекта RegExp используется для определения того, будет ли выпол-
выполняться многострочный поиск.
листинге 7.315 приведен пример использования свойства multiline.
О 50 Часть III. Справочник по JavaScript
Листинг 7.315. Пример использования свойства multiline
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция создает нозое регулярное выражение, а
// затем осуществляет поиск этого выражения в текстовой области.
// Выводит на экран окно предупреждения, которое информирует
// пользователя о булеэом значении сэойстэа RegExp.multiline.
function getinfo(){
var myPat = new RegExp ("при", "i");
var str = document.forml.mytext.value;
myArray = myPat.exec(str);
alert("Свойство RegExp.multiline: " + RegExp.multiline);
}
// -->
</script>
<form name="forml">
После того как был изменен текст в текстовом поле и выполнен
щелчок на документе, отображается окно предупреждения, в котором
отображается значение сзойстза multiline.
<br><br>
<textarea name="mytext" cols=0" rows="8" onChange='getinfо()'>
Образец текстовой области, содержащий некоторый текст, используемый
при тестировании. Текст в этом поле используется для демонстрации
прнемоз работы с методом multiline. При считывании многострочных
строк свойству multiline присваизается значение true.
</textarea>
<br>
</form>
</body>
</html>
RegExp.prototype M , MJcacv,aS™pt 1Г
3 r r *r Nav3+, NES2+, Opera4+
регулярное_варажение.prototype.свойство
регулярное_выражение.prototype.метод
f Свойство prototype объекта RegExp позволяет добавлять свойства и методы ко всем эк-
экземплярам текущего класса. После добавления свойств или методов все создаваемые объек-
объекты данного класса будут иметь новые свойства или методы.
В листинге 7.316 приведен пример использования свойства prototype .для создания но-
нового свойства myProp. Свойству присваивается значение, которое затем отображается на
экране.
Листинг 7.316. Пример использоаания саойстаа prototype объекта RegExp
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Создание нового свойства myProp.
RegExp.myProp = null;
// Создание объекта RegExp, который содержит свойство new.
var myExp = new RegExp("сейчас");
myExp.myProp = "ничего особенного";
document.write("Значение myProp: " + myExp.myProp);
// —>
</script>
</body>
</html>
Глава 7. Ядро JavaScript u 5 I
RegExp.rightContext JavaScript 1.2+, JScript 5.5+
» •* » Nav4+, NES3+, IE4+
регулярное_выражение.rightContext
f Свойство rightContext объекта RegExp представляет подстроку, следующую за последним
совпадением с образцом.
В листинге 7.317 приведен пример использования свойства rightContext. Объявляется об-
образец "и ". Таким образом, на экран будет выведена содержимое строки, находящееся пос-
после символов "и ".
Листинг 7.317. Пример использования свойства rightContext.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Определение шаблона регулярного выражения и выполнение
// глобального сравнения.
pat = /и*/д±;
// Создание строкового объекта.
var str = "Ешьте, пейте и будьте счастливы.";
// Создание пассива результатов.
myArray = pat.exec (str) ;
document.write ("В строке: " + "<b>" +
"Ешьте, пейте и будьте счастливы" + "</b><br><br>");
document.write("Свойство RegExp.rightContext: " +RegExp.rightContext);
// -->
</script>
</body>
</html>
RegExp.source M >?va*«'f ,1-2!
r Nav4+, NES3+, IE4+
регуляриое_вцражеипе.source
Свойство source объекта RegExp содержит текст образца, который используется в качестве
образца поиска.
В листинге 7.318 приведен пример использования свойства source для получения текста
образца, по которому производится сравнение.
Листинг 7.318. Пример использования свойства source
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Создание нового объекта RegExp.
exp = new RegExp ("рии", "g");
// Создание строки.
str = "Это просто пример предложения.";
myArray = exp.exec(str);
document.write("Источник: " + "<b>" + exp.source + "</b>");
// -->
</script>
</body>
</html>
регулярное_выражение.tes t()
Метод test() объекта RegExp используется для тестирования сравнения с образцом в
строке. Метод возвращает булево значение true или false.
В листинге 7.319 приведен пример использования свойства test().
Часть III. Справочник по JavaScript
Листинг 7.319. Пример использования свойства test()
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Создание нового регулярного выражения.
myExp = new RegExp ("надеюсь", "g");
// Определение строкового объекта.
str = "Я надеюсь, что все прошло успешно.";
// Проверка наличия регулярного ныражения в строке,
if(myExp.test(str) ) {
document.write("В ходе тестирования было найдено
wслово \"надеюсь\" в строке: "
+ "<Ь>" + " Я надеюсь, что все прошло успешно" + "</Ь>");
</script>
</body>
</html>
RegExp.toSource() JavaScript 1.3+, ECMAScript 1E+
э r w Nav4.06+
регулярное_выражение.toSourсе()
k Метод toSource() объекта RegExp используется для получения строкового представле-
представления объекта RegExp.
В листинге 7.320 приведен пример использования свойства toSource().
Листинг 7.320. Пример использования свойстве toSourceO
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Создается новый объект RegExp, который
// затеи преобразуется в строку,
var myExp = RegExp("шаблон");
document.write(myExp.toSource());
</script>
</body>
</html>
JavaScript 1.1+, ECMAScript 1E+
регулярное_выражение.toS tring()
Щ Метод toString() объекта RegExp используется для получения строкового представления
" объекта RegExp.
В листинге 7.321 приведен пример использования свойства toString().
Листинг 7.321. Пример использования свойства toStringd
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Создание нового объекта RegExp.
var myExp = RegExp("шаблон");
// Отображение строкового представления объекта RegExp.
document.write("Результат выполнения иетода toString: "
+ "<Ь>" + myExp.toString() + "</Ь>");
</script>
</body>
</html>
Глава 7. Ядро JavaScript OUu
регулярное_выра.жение.unwatch (prop)
Метод unwatch() объекта RegExp прекращает слежение за свойством объекта, установ-
установленное методом watchQ.
j В листинге 7.322 приведен пример использования метода unwatchQ. С помощью метода
prototype() создается новое свойство. Затем за этим свойством устанавливается слежение
и при изменении свойства на экран выводится сообщение. После вызова метода
unwatch(), слежение за переменной прекращается.
Листинг 7.322. Пример использования метода unwatchf)
<html>
<body>
<script "type="text/javascript" language="JavaScript">
^i
function alertme(id,oldValue,newValue)
{
document .writeln ("myExp." + id + " изменен с " + "<b>"
+ oldValue + "</b>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
}
myExp = new RegExp("and");
// Создание нового свойства р.
RegExp.prototype.p = "the";
// Начало слежения за свойством р.
myExp.watch("p",alertme);
myExp.p = "or" ;
// Прекращение слежения за свойством р.
myExp.unwatch ( "p") ;
myExp.p = "cat";
myExp.p = "dog";
// Повторное начало слежения за свойством р.
myExp.watch("р",alertme);
туЕхр.р = "cow";
// -->
</script>
</body>
</html>
рвгулярное_выражение.valueOf()
Метод valueOf() объекта RegExp используется для получения элементарного значения
объекта RegExp как числового типа данных.
■ л В листинге 7.323 приведен пример использования метода valueOf(). Создается новый
у* объект RegExp — объект myExp. Затем на экран выводится результат выполнения фун-
функции valueOfQ над объектом RegExp.
Листинг 7.323. Пример использования метода valueOff).
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Создание нового объекта RegExp.
myExp = new RegExp("or");
// Отображение результата на экране.
document.write("Значение myExp равно: " + myExp.valueOf());
// -->
</script>
</body>
</html>
12 Зак. 733
u 54 Часть 111. Справочник по JavaScrip:
RegExp.watch()
регулярное_выражение.watch(prop, handler)
Метод watch() объекта RegExp используется для включения слежения за указанным свой-
свойством. При изменении свойства вызывается функция handler, которая выполняет задан-
заданную пользователем операцию.
В листинге 7.324 приведен пример использования метода watchQ. С помощью метода
prototype создается новое свойство. Затем за новым свойством устанавливается слежение.
При изменении значения свойства функция alertme выведет на экран сообщение.
Листинг 7.324. Пример использования метода watchl)
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
function alertme(id,oldValue,newValue)
{
document.writeln("myExp." + id + " изменен с " + "<Ь>"
+ oldvalue + "</Ь>"+ " на " + "<Ь>" + newValue + "</b><br>")
return newValue;
}
myExp = new RegExp("and");
// Создание, нового свойства р.
RegExp.prototype.p = "the";
// Установка слежения за свойством р.
myExp.watch("р",alertme);
myExp.p = "or";
// -->
</script> type="text
</body>
</html>
return JavaScript 1.0+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
return
Ключевое слово return используется для выхода из выполняемой в текущий момент фун-
функции и возврата значения.
В листинге 7.325 приведен пример использования оператора return для возврата значе-
значения из функции.
Листинг 7.325. Пример использования оператора return
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
//Функция умножения 4 на 3.
function getValue(){
var myValue = 4*3;
return myValue;
}
// Функция вызывает метод getValue() и записывает возвращаемое
// значение в поле ввода tmp.
function fill(){
var x = getValue();
document.forml.tmp.value = x;
}
// -->
</script>
<form name="forml ">
Значение: <input type="text" Name="tmp" Size=">
<br>
<br>
Глава 7. Ядро JavaScript О О О
<input type="button" name="get" value="Get Returned Value"
onClick='fill()'>
<br>
<br>
</form>
</body>
</html>
______ JScript 2.0+
ScriptEngine ()
f Функция ScriptEngine() может возвращать одно из трех значений: JScript, VBScript, или
VBA. При вызове данной функции в JavaScript она возвращает значение JScript.
В листинге 7.326 приведен пример, в процессе выполнения которого выводится полная
информация о версии браузера Internet Explorer, интерпретирующего данный сценарий.
Помимо свойства ScriptEngine, в сценарии используются и другие функции, характер-
характерные для Internet Explorer.
Листинг 7.326. Использование функции ScriptEngine для получения информации о
версии сценарного механизма в браузере Internet Explorer
<script type="text/jscript">
<!--
// Вывод на экран типа сценарного механизма.
document.write(ScriptEngine() ) ;
// Вывод на экран значения "старшей" версии.
document.write(" " + ScriptEngineMajorVersion () + ".") ;
// Вывод на экран значения "младшей" версии,
document.write(ScriptEngineMinorVersion());
// Вывод на экран номера подверсии.
document.write(" build " + ScriptEngineBuildVersion());
//-->
</script>
ScriptEngineBuildVersion Бсг'Р* 2-о+
ScriptEngineBuildVersion
$$ Функция ScriptEngineBuildVersion содержит номер подверсии сценарного механизма, на-
• холящейся на компьютере пользователя.
;/$Код из листинга 7.327 выводит на экран номер подверсии сценарного механизма, ин-
tr терпретирующего данный сценарий.
Листинг 7.327. Использованиа функции ScriptEngineBuildVersion. дпя получения
номера подверсии сценарного механизма в браузере Internet Explorer
<script type="text/jscript">
<! --
// Отображение номера подверсии.
document.write("Подверсия " + ScriptEngineBuildVersion());
//-->
</script>
ScriptEngineMajorVersion JScript 2.0+
ScriptEngineMajorVersion()
Функция ScriptEngineMajorVersion() содержит значение "старшей" версии сценарного
механизма, находящегося на компьютере пользователя.
Код из листинга 7.328 выводит на экран значение "старшей" версии сценарного меха-
низма, интерпретирующего данный сценарий.
ODD Часть III. Справочник по JavaScript
Листинг 7.328. Использование функции ScriptEngineMajorVersion для получения
значения "старшей" версии сценарного механизма в браузере Internet Explorer.
<script type="text/jscript">
<! --
// Отображение на экране значения "старшей" версии.
document.write("Старшая версия: " + ScriptEngineMajorVersion());
//-->
</script>
ScriptEngineMinorVersion 1Saif>xm
ScriptEngineMinorVersion()
Функция ScriptEngineMinorVersion() содержит значение "младшей" версии сценарного
механизма, находящегося на компьютере пользователя.
Код листинга 7.329 выводит на экран значение "младшей" версии сценарного механиз-
ма, интерпретирующего данный сценарий.
Листинг 7.329. Использование функции ScriptEngineMinorVersion для получения
значения "младшей" версии сценарного механизма в браузере Internet Explorer.
<script type="text/jscript">
<! --
// Отображение на экране значение "младшей" версии.
document.write("Младшая версия: " + ScriptEngineMinorVersion());
//-->
</script>
short JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
Ключевое слово short в настоящее время не реализовано в языке JavaScript.Оно зарезер-
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
Зарезервированное ключевое слово
Ключевое слово static в настоящее время не реализовано в языке JavaScript.Оно заре-
зервировано для будущего использования.
)£? Поскольку это ключевое слово не реализовано, пример его использования не приводится.
Strinq (Function) JavaScript 1.2+, JScript 3.0+, ECMAScript 1E+
y VruiluuulW Nav4+i NES3+_ |E4+_ Opera4+
String (переменная)
ric^Функция String() — это функция верхнего уровня, которая часто относится к объекту
" Global. Функция преобразует значение переменной var в удобочитаемую строку.
t/j В листинге 7.330 создается экземпляр объекта Date, а затем применяется функция
&" String(). которая преобразует объект в удобочитаемую строку.
Листинг 7.330, Использование функции StringO
<script type="text/javascript" language="JavaScriptl. 2">
<! --
// Создание экземпляра объекта Date.
myDate = new Date D30057843027) ;
// На экран выводится Thu Aug 18 07:30:43 EST 1983
document.write(String(myDate));
II —>
</script>
Глава 7. Ядро JavaScript
357
String (Object)
JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
Nav2+, NES2+, IE3+, Opera3+
var переменная = new String(строка)
& Объект String является одним из базовых объектов языка JavaScript. Экземпляры объек-
• та String создаются с помощью ключевого слова new. которому в качестве аргумента пе-
передается объект String. В JavaScript l.O экземпляры объекта String можно было создавать
за счет указания в сценарии символов в кавычках. Свойства и методы объекта String пе-
перечислены в табл. 7.44.
Таблица 7.44. Свойства и методы объекта String
Тип
Параметр
Описание
Метод
anchor()
big()
blinkQ
bold()
charAt()
Создает экземпляр дескриптора <а> и устанавливает значение
атрибута пате равным строке, передаваемой методу в
качестве аргумента.
Преобразует строку в экземпляр дескриптора <big>.
Преобразует строку в экземпляр дескриптора <blink>.
Преобразует строку в экземпляр дескриптора <Ь>.
Возвращает символ, соответствующий индексу, который
передается в метод.
charCodeAt()
concat()
fixedQ
fontcolor{)
fontsizeQ
fromCharCode()
Возвращает символ в кодировке ISO-Latin-1, соответствующий
индексу, который передается в метод.
Сцепляет две строки, передаваемые в качестве аргументов, в
одну строку. Этот метод был введен в JavaScript 1.2.
Преобразует строку в экземпляр дескриптора <tt>.
Устанавливает в экземпляре дескриптора <font> атрибут color.
Устанавливает в экземпляре дескриптора <font> атрибут size.
Возвращает символ, соответствующий переданному в метод
коду ISO-Latin-1.
indexOf()
italicsO
lastlndexOf()
Возвращает индекс первого вхождения строки-аргумента
метода в экземпляр объекта String.
Преобразует строку в экземпляр дескриптора <i>.
Возвращает индекс последнего вхождения строки-аргумента
метода в экземпляр объекта String.
match()
replace()
search{)
Преобразует строку в экземпляр дескриптора <а> и
устанавливает значение атрибута href равным передаваемому
методу параметра URL.
Возвращает массив совпадений с регулярным выражением,
передаваемым методу в качестве аргумента. Этот метод был
введен в JavaScript 1.2.
Выполняет в вызывающем объекте String поиск и замену,
используя регулярное выражение и строку замены,
передаваемые методу в качестве аргументов. Этот метод
появился в JavaScript 1.2.
Возвращает индекс позиции совпадения, найденного в
передаваемой методу строке. Если совпадение не обнаружено,
возвращается значение -1. Этот метод появился в JavaScript 1.2.
358
Часть III. Справочник по JavaScript
Тип
Параметр
Описание
slice()
Возвращает строку, содержащуюся между начальным и
конечным индексами, передаваемыми методу в качестве
аргументов. Если индекс является отрицательным числом,
отсчет положения начинается с конца передаваемой методу
строки. Этот метод был введен в JavaScript 1.2.
small()
Преобразует строку в экземпляр дескриптора <small>.
split()
Возвращает строку, разбитую на сегменты, в соответствии
с передаваемыми методу строкой и границей экземпляра.
Этот метод появился в JavaScript 1.1.
strike()
sub()
Преобразует строку в экземпляр дескриптора <strike>.
Преобразует строку в экземпляр дескриптора <sub>.
substr()
Возвращает строку указанной длины, которая начинается с
указанного индекса. Если индекс является отрицательным
числом, отсчет положения начинается с конца
передаваемой методу строки. Этот метод был введен в
JavaScript 1.2.
substrlng()
Возвращает строку, содержащуюся между начальным и
конечным индексами, передаваемыми методу в качестве
аргументов.
sup()
Преобразует строку в экземпляр дескриптора <sup>.
toLocaleLowerCase()
Преобразует все символы в строке в символы нижнего
регистра в соответствии с региональными стандартами
хостов. Этот метод появился в JavaScript 1.5.
toLocaleUpperCase()
Преобразует все символы в строке в символы верхнего
регистра в соответствии с региональными стандартами
машины-хоста. Этот метод был введен в JavaScript 1.5.
toLowerCaseQ Преобразует все символы в строке в символы нижнего
регистра.
toSource()
Возвращает объект String в строковом представлении. Этот
метод появился в JavaScript 1.3.
toStringO
Возвращает переданные в строке символы. Этот метод был
введен в JavaScript 1.3.
toUpperCase()
Преобразует все символы в строке к верхнему регистру.
unwatch()
Прекращает слежение за указанным свойством.
watch()
Устанавливает слежение за указанным свойством.
Свойство length
Возвращает длину строки.
prototype
Позволяет добавлять экземплярам объекта String новые
свойства. Этот метод был введен в JavaScript 1.1.
В листинге 7.331 приведены примеры использования некоторых свойств и методов объекта
String. На странице находится одна кнопка. После щелчка на кнопке отображается вто-
второе окно. Для созданного в сценарии экземпляра объекта String вызываются различные
методы. Результаты выполнения этих методов выводятся во всплывающем окне.
Глава 7. Ядро JavaScript
Листинг 7.331. Примеры использования экземпляра объекта String
<html>
<head>
<title>n.pHMepa объекта String</title>
<script type="text/javascript" language="JavaScriptl.1">
<! --
// Объявляется функция openWin, которая вызывается при нажатии
// на кнопку.
function openWin(){
//Открытие окна вывода результатов и создание нового объекта String.
var myWin =! open ( "" , "","width=450,height=200");
var myString = new String("Здравствуй, мир!");
// Вызов различных методов и вывод результатов в окне.
myWin.document.write("Исходная строка, " + myString);
myWin.document.write("имеет " + myString.length + " символы.<br>");
myWin.document.write("Большой: " + myString.big() + "<br>");
myWin.document.write("Маленький: " + myString.small() + "<br>");
myWin.document.write("Мигающий: " + myString.blink() + "<br>");
myWin.document.write("Курсив: " + myString.italics() + "<br>");
myWin.document.write("Преобразование в верхний регистр: " +
myString.toUpperCase () ) ;
myWin . document.write("<br>") ;
myWin.document.write("Convert to Upper: " +
myString.toUpperCase () ) ;
myWin . document.write("<br>") ;
// Закрытие потока в окне.
myWin.document.close();
>
//-->
</script>
</head>
<body>
<form name="myForm">
<input type="button" value="Click to Process" name="myButton"
onClick="openWin()">
</form>
</body>
</html>
String.anChor() JavaScript 1.0+ JScript 1.0+
3 v/ Nav2+, NES2+, IE3+, Opera3+
строка.anchor(имя)
Метод anchor() преобразует строку string в экземпляр дескриптора <а> и устанавлива-
устанавливает значение его атрибута name равным аргументу имя.
В листинге 7.332 создается экземпляр объекта String, а затем с помощью метода
document.write() на страницу выводится дескриптор <а>. Результат выполнения кода ли-
листинга выглядит следующим образом:
<а пате="НЕЬЬ0">Здравствуй, мир!</а>
Листинг 7.332. Использование метода anchorf) объекта String
<script type="text/javascript" language="JavaScriptl.1">
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Вывод на страницу результата выполнения над строкой
// метода anchor().
document.write(myString.anchor("ЗДРАВСТВУЙ"));
// Закрытие потока в окне.
document.close () ;
//-->
</script>
Часть III. Справочник по JavaScript
Strinq.biqO JavaScript 1.0+, JScript 1.0+
a au Nav2+, NES2+, IE3+, Opera3+
строка.big()
Метол big() преобразует параметр строка в экземпляр дескриптора <big>.
В листинге 7.333 создается экземпляр объекта String, а затем с помощью метода
document.write() на страницу выводится дескриптор <big>. Результат выполнения кода
листинга выглядит следующим образом:
<Ь1д>Здравствуй, MHp!</big>
Листинг 7.333. Использование метода big() объекта String
<script type="text/javascript" language="JavaScriptl . 1 ">
//Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
//Вывод на страницу результата выполнения для строки метода big().
document.write(myString.big());
//Закрытие потока в окне.
document.close();
//-->
</script>
строка.blink()
Метод blink() преобразует параметр строка в экземпляр дескриптора <blink>. Этот ме-
метод поддерживается только в Netscape Navigator, поскольку дескриптор <blink> реали-
реализован только в браузере Netscape Navigator.
В листинге 7.334 создается экземпляр объекта String, а затем с помощью метода
document.writeO на странице отображается дескриптор <blink>. Результат выполнения
кода листинга выглядит следующим образом:
<Ь^пк>Здравствуй, MMp!</blink>
Листинг 7.334. Использование метода blinkf) объекта String
<script type="text/javascript" language="JavaScriptl. 1">
<! --
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
//Вывод на страницу результата выполнения над строкой метода blink ()
document.write(myString.blink());
// Закрытие потока в окне.
document.close () ;
//-->
</script>
JavaScript 1.0+, JScript 1.0+
Ngv2+i N£S2+i |E3+( Opera3+
строка.boId()
-^етол bold() преобразует параметр строка в экземпляр дескриптора <bold>.
j В листинге 7.335 создается экземпляр объекта String, а затем с помощью метода
document.write() на страницу выводится дескриптор <bold>. Результат выполнения кода
листинга выглядит следующим образом:
<Ьо^>Здравствуй, мир!</Ьо1с1>
Листинг 7.335. Использование метода bold() объекта String
<script type="text/javascript" language="JavaScriptl. 1 ">
<! --
//Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
Глава 7. Ядро JavaScript u Ь I
//Вывод на страницу результата выполнения над строкой метода bold()
document.write(myString.bold());
//Закрытие потока в окне.
document.close () ;
//-->
</script>
Qtrinn rharAtn JavaScript 1.0+, JScript 1.0+, ECMAScript
String.cnarAtu Nav2+H N£S2+ |£3+ OpHe
строка.charAt(число)
Метод charAt() экземпляра объекта String возвращает символ, расположенный в пози-
позиции с индексом число. Индексация символов в строке осуществляется в направлении слева
направо и начинается с индекса 0 (нуль). Если передаваемое значение число не являет-
является допустимым индексом, возвращается значение -1.
В листинге 7.336 создается экземпляр объекта String. После загрузки сценарий запраши-
запрашивает у пользователя ввод значения индекса. После ввода индекса и щелчка на кнопке ОК
на экран выводится символ, расположенный в указанной позиции. Обратите внимание,
что в сценарии присутствует проверка того, является ли символ с указанным индексом
пробелом.
Листинг 7.336. Использование метода charAtl) с целью выборки символа,
расположенного в определенной позиции строки
<html>
<head>
<^^1е>Использование метода String.charAt()</title>
</head>
<body>
<script type="text/javascript" language="JavaScriptl. 1">
<!--
// Создание экземпляра объекта String.
var myString = new String("Короткое предложение.") ;
// Запрос на ввод пользователем числа.
var mylndex = prompt("Пожалуйста, введите число", "");
// Присваивание символа переменной,
var myChar = myString.charAt(mylndex);
// Вывод символа на страницу, но сначала
// проверка на предмет того, является ли символ пробелом,
document.write("<Ь>Разыскиваемая строка: </b>" + myString);
document.write("<Ьг>Символ " + mylndex + " в строке будет ") ;
if (myChar == " ") {
document.write('Sit;spaceSgt;');
}else{
document.write(myChar);
}
// Закрытие потока в окне.
myWin.document.close () ;
II —>
</script>
</body>
</html>
JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
\ 3
строка.charCodeAt(число)
Метод charCodeAt() экземпляра объекта String возвращает символ в кодировке [SO-Latin-
I, расположенный в позиции с индексом число. Индексация символов в строке осуще-
осуществляется в направлении слева направо и начинается с индекса 0 (нуль). Если передава-
передаваемое значение число не является допустимым индексом, возвращается значение -1.
Чвсть III. Справочник по JavaScrip:
% В листинге 7.337 создается экземпляр объекта String. После загрузки сценарий запраши-
вает у пользователя ввод значения индекса. После ввода индекса и щелчка на кнопке ОК
на экран отображается символ, расположенный в указанной позиции (в кодировке JSO-
Latin-1). Обратите внимание, что в сценарии выполняется проверка на предмет того,
яатяется ли символ с указанным индексом пробелом.
Листинг 7.337. Использование метода charCodeAtf) для выборки символа,
расположенного в определенном положении в строке
<html>
<head>
<title>Ptcnonb3oBaHMe метода String.charCodeAt()</title>
</head>
<body>
<script type="text/javascript" language="JavaScriptl.1">
<!--
// Создание экземпляра объекта String.
var myString = new String("Короткое предложение.");
// Запрос на ввод числа пользователем.
var myString = prompt("Пожалуйста введите число", "");
// Сохранение кода символа в переменной.
var myCharCode = myString.charCodeAt(mylndex);
var myChar = myString.charAt(mylndex);
// Вывод кода символа на странице.
document.write("<Ь>Разыскиваемая строка имеет вид: </Ь>" + myString);
document.write ("<Ьг> Символ "+ mylndex + " в этой строке имеет вид ") ;
// Проверка на преднет того, является ли символ пробелом.
if (myChar == " "){
document.write('sit;space>');
}else{
document.write(myChar);
}
// Вывод кода символа.
document.write(" и его код ISO-Latin-1 " + myCharCode);
// Закрытие потока в окне.
myWin.document.close();
//-->
</script>
</body>
</html>
String.con^ JaVaScri^4l; u££, т
строка.concat(строка2)
Метод concat() экземпляра объекта String добавляет параметр строка2 в конец параметра
строка и возвращает новую строку.
В листинге 7.338 создается два экземпляра объекта String. Затем для их объединения в
одну строку используется метод concat(). Полученная строка выводится на экран в окне
предупреждения.
Листинг 7.338. Использование метода concatf) для конкатенации двух строк
<script type="text/javascript" languages"JavaScriptl.2">
// оздание двух экземпляров объекта String, а затем
// объединение их в одной строке.
var myStringl = new String("Здравствуй, ");
var myString2 = new String("мир!");
// Отображение на экране окна предупреждения,
// демонстрирующего объединенную строку.
alert(myConcatString) ;
//-->
</script>
Глава 7. Ядро JavaScript uDu
String.COnstruCtor ^Script 1.H. JScript 3.0+.+EOJAScripME*
строка.constructor
Свойство constructor объекта String определяет функцию, которая создает объект.
B листинге 7.339 приведен пример использования свойства constructor для проверки типа
переменной.
Листинг 7.339. Пример использования свойства constructor
<script type="text/javascript" language="JavaScriptl.1">
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
if (myString.constructor == String){
document.write("Объект создан");
}
</script>
Strinq.fixedO JavaScript 1.0+, JScript 1.0+
y U Nav2+, NES2+, 1E3+, Opera3+
строка.fixed()
Метод fixed() преобразует параметр строка в экземпляр дескриптора <tt>.
В листинге 7.340 создается экземпляр объекта String, а затем с помощью метода
document.write() на странице отображается дескриптор <tt>. Результат выполнения кода
листинга выглядит следующим образом:
Листинг 7.340. Использование метода fixed[] объекта String
<script type="text/javascript" language="JavaScriptl.1
<!--
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Отображение на странице результата выполнения над
// строкой метода fixed().
document.write(myString.fixed()) ;
// Закрытие потока в окне.
document.close();
//-->
</script>
String.fontcolorO
строка.fontcolor A6~ричное число)
строка.fontcolor(цвет)
f Метод fontcolor() устанавливает значение атрибута цвет создаваемого им дескриптора
<font>. Значение атрибута цвет можно передавать как в шестнадцатеричном виде, так и
в форме строки, указывающей название цвета.
,/|В листинге 7.341 создается экземпляр объекта String, а затем с помощью метода
(г document.write() на страницу выводится два экземпляра дескриптора <font>. Результат
выполнения кода листинга выглядит следующим образом:
Шестнадцатеричное значение:
<font color="#FF0000">3flpasCTsyii, MMp!</font>
<Ьг>Цвет: <font color="blue">3flpascTsyii, MMp!</font>
Листинг 7.341. Использование метода fontcolort) объекта String
<script type="text/javascript" languages"JavaScriptl. 1">
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
ООН Часть III. Справочник по JavaScript
// Двойной вывод строки на страницу
// после выполнения над строкой метода fontcolor() .
document.write(6-ричное значение: "
+ myString.fontcolor("FF0 000") ) ;
document.write("<Ьг>Цвет: " + myString.fontcolor("голубой"));
// Закрытие потока в окне.
document.close () ;
//-->
</script>
Strinq.fontsizeO JavaScript 1.0+, JScript 1.0+
У U Nav2+, NES2+, IE3+, Opera3+
строка.fontsize(число)
строка.fontsize(строка2)
Метод fontsizcO устанавливает значение атрибута size создаваемого им дескриптора <font>.
Атрибут представляет собой число от 1 до 7. Если число, передаваемое методу, представ-
представлено и виде строки, размер шрифта будет устанавливаться по отношению к дескрипто-
дескриптору <basefont>.
$ В листинге 7.342 создается экземпляр объекта String, а затем с помошью метода
document.write() на страницу выводится два экземпляра дескриптора <font>. Результат
выполнения кода листинга выглядит следующим образом:
Шестнадцагеричное значение: <font size=">3дравствуй, MMp!</font>
<Ьг>Цвет: <font size="-2">3flpaBC!TByii/ MHp!</font>
Листинг 7.342. Использование метода fontsizeO объекта String
<script type="text/javascript" language="JavaScriptl.1">
^i
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Двойной вывод строки на странице
// после выполнения над строкой метода fontsize().
document.write("Size=6: " + myString.fontsizeF));
document.write("<br>Size=-2: " + myString.fontsize('~2'));
// Закрытие потока в окне.
document.close();
//-->
</script
String.fromCharCode() JavaScript 1.2+, JScript 3.0+,JCMAScript 1E+
String . fromCharCode (число! , число2, . . . , числоЯГ)
String.fromCharCode(событие_клавишиЪ.which)
Метол fromCharCode() объекта String возвращает символы в кодировке ISO-Latin-1, ко-
торые соответствуют передаваемым методу индексам (число!, число2, ..., число!Ч). Кро-
Кроме того, для определения нажатой клавиши методу fromCharCode() можно передавать
событие клавиш и использовать свойство which. События клавиш могут быть следующи-
следующими: KeyDown. KeyPress и KeyUp.
Как видно из описания синтаксиса, метод fromCharCode() является методом объекта
String, а не экземпляра объекта String. Благодаря этому результаты выполнения метода
можно присвоить переменной с целью обработки в дальнейшем.
| В листинге 7.343 вызывается метод fromCharCode() с параметрами 88, 89 и 90. Резуль-
тат выполнения метода выводится на экран.
Листинг 7.343 Пример использования метода fromCharCodeO для определения
символов в кодировке ISO-Latin-1, соответствующих переданным числам
<script type="text/javascript" language="JavaScriptl.2">
глава 7. Ядро JavaScript ООЭ
// Вызов метода fromCharCode() и присвоение результата
// переменной.
var myString = String.fromCharCode(88 , 89 , 90) ;
// Вывод результата на странице.
document.write("Эти числа соответствуют: " + myString);
// Закрытие потока на странице,
document.close () ;
</script>
Qtrinn inHovOfn JavaScript 1.0+, JScript 1.0+, ECMAScript
btrmg.indexoto Nav2+H Ш2+ |£3+ нег
строка.indexOf(строка, число)
строка.indexOf(строка)
f Метод indexOf() экземпляра объекта String возвращает индекс начата передаваемого па-
параметра, строка. Кроме того, в метод можно передавать индекс число, указывающий но-
номер позиции, с которой необходимо начать поиск указанной строки. Этот метод анало-
аналогичен методу String.lastIndexOf(), но поиск начинается с начала строки.
ujB листинге 7.344 создается простой экземпляр объекта String. Затем этот экземпляр дважды
г передается в метод indexOf(), а результат выполнения метода выводится на экран. В первом
случае метод выполняет в строке поиск пробела и возвращает значение 11. Во втором слу-
случае поиск начинается с позиции 4. В этом случае метод возвращает позицию буквы "и"
в слове "мир".
Листинг 7.344. Пример использования метода indexOfd для определения
положения символа в строке
<script type="text/javascript" language="JavaScriptl.1">
<!--
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Поиск первого пробела в строке
document.write(myString.indexOf (" ") + '<br>') ;
// Указывая индекс начала поиска,
// можно получить индекс второго вхождения буквы "и" .
document.write(myString.indexOf("и", 4));
// Закрытие потока на странице.
document.close () ;
//-->
</script>
Strinq.italiCSO JavaScript 1.0+, JScript 1.0+
y u Nav2+, NES2+, IE3+, Opera3+
строка.italics()
& Метод italics() преобразует строку string в экземпляр дескриптора <i>.
'Л В листинге 7.345 создается экземпляр объекта String, а затем с помощью метода
V" document.write() на страницу выводится дескриптор <i>. Результат выполнения кола ли-
листинга выглядит следующим образом:
<1>3дравс-гвуй, MHp!</i>
Листинг 7.345. Использование метода italics!) объекта String
<script type="text/javascript" language="JavaScriptl.1">
<!--
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Вывод на страницу результатов выполнения над строкой
// метода italics().
document.write(myString.italics() ) ;
О О Ь Часть III. Справочник no JavaScript
// Закрытие потока
document.close() ;
</script>
String.lastlndexOf () JavaScript 1.0+ JScript 1.0+ ECMAScript 1E+
3 w Nav2+, NES2+, 1E3+, Opera3+
строка.lastlndexOf(строка, число)
строка.lastlndexOf(строка)
Метод lastIndexOf() экземпляра объекта String возвращает индекс начала передаваемо-
передаваемого параметра строка, начиная с конца строки. Кроме того, методу можно передавать
индекс число, указывающий номер позиции, с которого необходимо начать поиск ука-
указанной строки. Этот метод аналогичен методу String.IndexOf(), но поиск начинается с
конца строки.
В листинге 7.346 создается простой экземпляр объекта String. Затем этот экземпляр дваж-
дважды передается методу lastIndexOf(), а результат выполнения метода выводится на экран.
В первом случае метод выполняет в строке поиск буквы "а" и возвращает значение 37.
Во втором случае поиск начинается с позиции 5. В этом случае метод возвращает поло-
положение первой букиы "а" в слове "Здравствуй".
Листинг 7.346. Пример использования метода lastlndexOfd для определения
положения символа в строке
<script type="text/javascript" language="JavaScriptl.1">
// Создание экземпляра объекта String.
var myString = new String("Здравствуй мир, к сожалению, это снова я!");
// Поиск последней буквы "а" в строке.
document.write(myString.lastlndexOf("a") + "<br>");
// Указывая индекс начала поиска,
// можно получить индекс первого вхождения буквы "а" .
document.write(myString.lastlnsexOf("a", 5)) ;
// Закрытие потока на страницы,
document.close () ;
</script>
Strinn Ipnnth JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
y y Nav2+, NES2+, IE3+, Opera3+
строка.length
Свойство length экземпляра объекта String возвращает значение общей длины строки.
В листинге 7.347 создается три экземпляра объекта String. Значение свойства каждого из
объектов выводится на странице.
Листинг 7.347. Использование свойства length объекта String
<script type="text/javascript" language="JavaScriptl. 1 ">
// Создание экземпляра объекта String.
var myStringl = new String("Здравствуй, мир");
var myString2 = new String("Более длинная строка");
var myString3 = new String("Eu;e более длинная строка");
// Отображений сведений о длине строк на экране.
document.write(myStringl + ": это " + myStringl.length);
document.write(" количество символов,<br>");
document.write(myString2 + " : это " + myString2.length) ;
document.write(" количество символов.<br>");
document.write(myString3 + ": это " + myString3.length);
document.write(" количество символов.<br>");
// Закрытие потока на страницу.
document.close () ;
Глава 7. Ядро JavaScript uO/
</script>
JavaScript 1.0+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
строка.link(URL)
Метод Iink() преобразует строку в экземпляр дескриптора <а> и устанавливает значе-
значение его атрибута href, равным URL.
В листинге 7.348 создается экземпляр объекта String, а затем с помощью метода
document.writeQ на странице выводится дескриптор <а>. Результат выполнения кода ли-
листинга выглядит следующим образом:
<а href="http : //www. pure javascript. сот">Ин!Герак!Гивная книга !</а>
Листинг 7.348. Использование метода ПпкПобъекта String
<script type="text/javascript" language3"JavaScriptl.1">
// Создание экземпляра объекта String.
var myString = new String("Интерактивная книга!");
// Отображение на странице результат выполнения над строкой
// метода link().
document.write(myString.link('http://www.purejavascript.com'));
// Закрытие потока в окне,
document.close () ;
</script>
String.IOCaleCompare() JavaScript 1.5+, ECMAScript 3E+
строка. localeCompare (с-грока2)
^ Метод IocaleCompare() экземпляра объекта String сравнивает строку string со строкой стро-
ка2. Результатом выполнения метода является числовое значение, которое может быть от-
отрицательным, положительным или равным нулю, и указывает порядок следования строк
в соответствии с порядком сортировки, установленным региональными стандартами.
В листинге 7.349 создаются две строки, которые сравниваются с помощью метода
IocakCompare().
Листинг 7.349. Использование метода localeCompareO
<script type="text/javascript" language="JavaScriptl.5">
// Создание двух строк.
myString = new String("здравствуй")
mystring2 = new String("мир")
// В Netscape 6 возвращается значение -15.
document.write(myString.localeCompare(myString2));
</script>
String.match()
строка.match (регулярное_выражение)
с^ Метод match() экземпляра объекта String выполняет в строке поиск передаваемого в ме-
метод регулярного выражения регулярное ^выражение. Регулярное выражение содержит об-
образец поиска и флаги, которые определяют, что будет сравниваться. Метод возвращает
массив, содержащий найденные в строке совпадения.
П I УТЛ Перечень образцов поиска и флагов, которые можно использовать для со-
создания регулярных выражений, приведен в описании объекта RegExp
ODO Часть III. Справочник по JavaScript
t^% В листинге 7.350 создастся экземпляр объекта String и выполняется поиск строк, содер-
1^* жаших пробел, за которым следуют символы. Если возвращается непустой массив, зна-
значения его элементов но одному выводятся на экран.
Листинг7.350.Использование метода match() для поиска регулярных выражений в строке
<script type="text/javascript" language="JavaScriptl.2">
<! --
// Создание экземпляра объекта String и присвоение ему имени.
var myString = new String("M-p P. Аллен Вайк");
// Поиск пробела, за которым следуют символы.
var myRegExp = /\s\w*/g;
var answerArray = myString.match(myRegExp);
// Проверка на наличие совпадений,
if(answerArray == null){
document.write("Совпадения не найдены");
)else{
document.write('Найдены следующие совпадения: <br>');
// Отображение содержимого массива на экране. В результате
// на экране в отдельных строках отобразится Р, Аллен и Уэйк.
for (var i = 0; i < answerArray. length; i + + ) {
document.write(answerArray[i] + '<br>');
)
}
// Закрытие потока в окне,
document.close () ;
</script>
4trina orototvnp JavaScript 1.1+, ECMAScript 1E+, JScript 3.0+
btring.prototype Nav3+ н^ (Е4+ онрега3+
String.prototype.свойство
String.prototype.метод
#S> Свойство prototype объекта String позволяет программисту добавлять свойства или ме-
* тоды к базовому объекту' JavaScript.
!,/$ В листинге 7.351 создается два экземпляра объекта String. Затем с помощью свойства
ft* prototype добавляется свойство type и метод verify(). В сценарии свойству type присваи-
присваиваются строки, которые проверяются с помощью метода verify(). Результаты проверки вы-
выводятся на экран.
Листинг 7.351. Использование свойства prototype для создания новых свойств и
методов объекта String
<script type="text/javascript" language="JavaScriptl . 1">
<!--
// Объявление метода, для которого создается прототип.
function myVerify(){
// Проверить, соответствует ли значение добавленного
// свойства type строке "Name".
// Если значение свойства type равно "Имя", вернуть true,
// в противном случае вернуть false.
if (this.type != irName"){
return false;
}else{
return true;
}
)
// Создание нового свойства и метода объекта String.
String.prototype.type = null;
String.prototype.verify = myVerify;
// Создание двух экземпляров объекта String и запись в них имен,
var myStringl = new String("M-p P. Аллен Вайк");
var myStringl = new String("М-р Роберт Дж. Вайк") ;
"пава 7. Ядро JavaScript
//Используя заданный выше прототип, присвоить свойству type первой
//строки значение "Имя", а второй строки — значение "Звание".
myStringl.type = "Имя";
myString2. type = "Звание'1;
// Проверить правильность задания свойств type,
if(myStringl.verify()){
document .write (myStringl + " has a valid type of "
+ myStringl.type);
)else{
document.write (myStringl + " has an invalid type of "
+ myStringl.type);
)
document.write('<br>');
if(myString2.verify()){
document.write(myStringl + " имеет корректный тип "
+ myStringl.type) ;
)else{
document.write(myString2 + " имеет корректный тип "
+ myString2.type);
}
// Закрытие потока в окне.
document.close () ;
//-->
</script>
String.replace()
строка.replace{регулярное_выражение, строка_замены)
Метод replace() экземпляра объекта String осуществляет поиск регулярного выражения
и строке строка. Параметр регулярное_выражение определяет образец поиска и флаги, ко-
которые определяют, что будет сравниваться. Если совпадение обнаружено, метод возвра-
шает новую строку, в которой регулярное выражение заменено значением параметра
строка_замены.
rmil Перечень образцов поиска и флагов, которые можно использовать для со-
создания регулярных выражений, приведен в описании объекта RegExp.
и% В листинге 7.352 создается экземпляр объекта String. Затем в этом экземпляре осуществ-
Р' ляется поиск слова "Вайк". Если слово найдено, оно заменяется словом "Беляев".
Листинг 7.352. Использование метода replaced для замены регулярных выражений
в строке
<script type="text/javascript" languages"JavaScriptl . 2">
<i __
// Создание экземпляра объекта String и присвоение ему имени,
var myString = new String("M-p P. Аллен Вайк");
// Поиск слова "Вайк" и замена его словом "Беляев".
var myRegExp = /Вайк/g;
var newString = myString.replace(myRegExp, "Беляев");
// Запись результатов на странице.
document.write("Обратите внимание, что фамилия в исходной строке, "
+ myString);
document.write(", была заменена, и теперь она выглядит как "
+ newString);
// Закрытие потока в окне.
document.close () ;
//-->
</script>
vj /U Часть III. Справочник по JavaScript
String.Search() JavaScript U+,
строка. search {регулярное_выражение)
t Метод search() экземпляра объекта String осуществляет поиск регулярного выражения в
строке строка. Параметр регулярное_выражение содержит образец поиска и флаги, ко-
которые определяют, что будет сравниваться. Если регулярное выражение найдено, метод
возврашает индекс начала выражения. Если в строке нет указанного регулярного выра-
выражения, возвращается значение -1.
Перечень образцов поиска и флагов, которые можно использовать для со-
создания регулярных выражений, можно найти в описании объекта RegExp.
lf/% В листинге 7.353 создается экземпляр объекта String, в котором осуществляется поиск
4>* первого вхождения пробела. Если совпадение найдено, возвращается его индекс. Результат
выполнения сценария выводится на странице пользователя.
Листинг 7.353. Использование метода searchf) для поиска регулярных выражений в
строке
<script type="text/javascript" languages"JavaScriptl.2">
// Создание экземпляра объекта String и присвоение ему имени,
var myString = new String("М-р P. Аллен Вайк");
// Выполнение поиска первого вхождения пробела.
var myRegExp = /\s/;
var answerldx = myString.search(myRegExp);
// Проверка на предмет того, найдено ли совпадение,
if(answerldx == -1) {
document.write("Совпадения не найдены");
}else{
document.write('Ваша строка поиска найдена, начиная с: '
+ answerldx);
// Закрытие потока в окне.
document.close();
</script>
String.SliceO JavaScript 1.0+, JScript
Nav2"^ NES2^- 1E3"^ f"*««i
строка. slice(число1, число2)
строка.slice(число)
t Метод slice() экземпляра объекта String возвращает символы строки, содержащиеся в
строке строка между начальным и конечными индексами, т.е. число! и число2. Индек-
Индексация символов в строке начинается с нуля, т.е. первый символ имеет индекс 0. Кроме
того, в качестве параметра число2 могут использоваться отрицательные значения. В этом
случае отсчет при поиске конечного символа подстроки произволится с конца строки.
Как указано в описании синтаксиса, методу siice() можно передавать один индекс. В этом
случае метод возвращает все символы до конца строки.
В листинге 7.354 создается экземпляр объекта String. Затем для этой строки использует-
используется метод slice(), который возвращает первые семь символов строки. Результат выполне-
выполнения сценария выводится на страницу пользователя.
Листинг 7.354. Использование метода sliced для получения семи символов строки
<script type="text/javascript" language="JavaScriptl.1">
// Создание экземпляра объекта String и присвоение ему имени,
var myString = new String("M-p P. Аллен Вайк");
Глава 7. Ядро JavaScript
371
// Захват первых 7 символов строки,
var mySlice = myString.slice@,6);
// Вывод результата на странице.
document.write("Первые 7 символов в строке,
document.write(", будут: + mySlice);
// Закрытие потока в окне.
document.close();
II —>
</script>
" + myString)
JavaScript 1.0+, JScript 1.0+
Nav2+, NES2+, IE3+, Opera3+
String.small()
строка.small()
Метод sniall() преобразует строку string в экземпляр дескриптора <small>.
j В листинге 7.355 создается экземпляр объекта String, а затем с помощью метода
document.write() на страницу выводится дескриптор <small>. Результат выполнения кода
листинга выглядит следующим образом:
<эта11>3драствуй, мир!</эта11>
Листинг 7.355. Использование метода small!) объекта String
<script type="text/javascript" language="JavaScriptl.1">
<! --
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Вывод на странице результата выполнения над строкой
// метода small().
document.write(myString.small());
// Закрытие потока в окне.
document.close();
</script>
JavaScript 1.1+, JScript 1.0+, ECMAScript 1E+
Nav3+, NES2+, IE3+, Opera3+
строка.split(разделитель, число)
строка.split(разделитель)
строка.split{регулярное_выражение, число)
строка. split(регулярное_выражение)
\ Метод split() экземпляра объекта String разбивает строку строка на отдельные строки на
основе передаваемых методу параметров регулярное_выражение или разделитель. Параметр
регулярное_выражение определяет образец поиска и флаги, которые задают, что будет
сравниваться. Параметр разделитель представляет собой строку или символ, по которо-
которому производится разделение строки.
String.split()
ПРИМЕЧАНИЕ
Если атрибуту language дескриптора <script> присвоено значение
"JavaScriptl .2", метод split() испопьзуется в виде, приведенном во второй строке опи-
описания синтаксиса, и разделителем является пробел, причем последовательные пробелы
обрабатываются по-разному. В JavaScript 1.1 разделение строки производилось бы по
каждому пробелу. Так, например, если бы в строке находились три последовательных
пробела, в массиве выходных значений метода split() было бы два пробела. Значение
"JavaScriptl .2" указывает интерпретатору, что последовательные пробелы должны счи-
считаться одним пробелом. Таким образом, метод будет правильно разбивать строку.
Метод split() возвращает массив, элементами которого являются отдельные сегменты
строки.
ИшиМ Перечень образцов поиска и флагов, которые можно использовать для со-
создания регулярных выражений, приведен в описании объекта RegExp.
О / О. Часть III. Справочник по JavaScript
i/% В листинге 7.356 создается экземпляр объекта String, а затем с помощью метола split().
£>' в качестве разделителя для которого используется пробел, строка разбивается на отдельные
компоненты. При этом применяются различные синтаксические формы. Результаты вы-
выводятся на страницу пользователя.
Листинг 7.356. Использование метода splitO для разбиения строки на несколько
отдельных строк
<script type="text/javascript" language="JavaScriptl.2">
<! --
// Объявление функции обработки результатов.
function genResults(arrayName, testName){
document.write("<Ь>Оценивается в настоящее время: "
+ testName + "</b><he>");
// Проверка на наличие в строке пробелов,
if(arrayName == null){
document.write("Совпадения не найдены");
}else{
//Вывод содержимого массива результатов на странице. В результате
//на экране в отдельных строках отображается Р, Аллен и Вайк.
for(var i = 0; i < arrayName.length; i+ + ) {
document.write('[' + i + ']: ' + arrayName[i] + '<br>');
}
}
document.write('<p>');
)
// Создание экземпляра объекта String и присвоение ему имени,
var myString = new String("М-р. P. Аллен Вайк");
// Объявление регулярного выражения и разделителя. Для обоих
// установлено разделение с помощью пробела.
var myRegExp = /\s/g;
var mySeparator = " ";
genResults(myString.split(mySeparator) , "Только разделитель") ;
genResults(myString.split(mySeparator, 2) , "Разделитель с пределом 2");
genResults(myString.split(myRegExp}, "Только регулярное выражение");
genResults(myString.split(myRegExp, 3) ,
"Регулярное выражение с пределом 3") ;
// Закрытие потока в окне.
document.close();
//-->
</script>
Strinq.StrikeO JavaScript 1.0+, JScript 1.0+
y U Nav2+, NES2+, IE3+, Opera3+
строка.strike ()
|йй Метод strike() преобразует строку string в экземпляр дескриптора <strike>.
i,Vj В листинге 7.357 создается экземпляр объекта String, а затем с помощью метода
'>' document.write() на страницу выводится дескриптор <strike>. Результат выполнения кода
листинга выглядит следующим образом:
<strike>3flpaBCTByu, мир!</strike>
Листинг 7.357. Использование метода striked объекта String
<script type="text/javascript" language="JavaScriptl. 1">
<! --
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Вывод на страницу результатов выполнения над строкой
// метода strike().
document.write(myString.strike());
// Закрытие потока в окне.
document.close();
//-->
</script>
:"лава 7. Ядро JavaScript О / О
Strinq SllbO JavaScript 1.0+, JScript 1.0+
y u Nav2+, NES2+, IE3+, Opera3+
строка.sub()
Метол sub() преобразует строку string в экземпляр дескриптора <sub>.
В листинге 7.358 создается экземпляр объекта String, а затем с помощью метода
document.wri(e() па страницу выводится дескриптор <sub>. Результат выполнения кода
листинга выглядит следующим образом:
<зиЬ>Здравствуй, MMp!</sub>
Листинг 7.358. Использование метода sub() объекта String
<script type="text/javascript" language="JavaScriptl. 1">
<!--
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
//Запись на странице результат выполнения над строкой метода sub()
document.write(myString.sub ()) ;
// Закрытие потока в окне.
document.close ();
//-->
</script>
4trinn чиЬчтгП JavaScript 1.0+, JScript 1.0+
btring.substro Nav2+ nh$2+ |E3+ j +
строка.substr(число1, число2)
строка.substr(число)
Метод substr() экземпляра объекта String возвращает символы, количество которых оп-
определяется параметром число2, для строки строка, начиная с индекса число!. Индекса-
Индексация символов в строке начинается с нуля, т.е. первый символ имеет индекс 0. Кроме
того, параметр число! может быть отрицательным. В этом случае отсчет символов идет
с конца строки.
Как указано в описании синтаксиса, методу substr() можно передавать один индекс. При
таком использовании метод возвращает все символы до конца строки.
* В листинге 7.359 создается экземпляр объекта String. Затем применяется метод substr(),
который возвращает первые семь символов строки. Результат выполнения сценария вы-
выводится на страницу пользователя.
Листинг 7.359. Использование метода substrO для возврата семи символов строки
<script type="text/javascript" languages"JavaScriptl. 1">
<! --
// Создание экземпляра объекта String и присвоение ему имени.
var myString = new String("M-p P. Аллен Вайк");
// Захват первых 7 символов строки.
var mySubString = myString.substr@,6);
// Вывод результата на странице.
document.write("Первые семь символов строки, " + myString);
document.write(", будут: " + mySubString);
// Закрытие потока в окне.
document.close () ;
//-->
</script>
Strlng.subrtH.gO
строка.substring(число! , число2)
строка.substring(число)
|Й> Метод substring() экземпляра объекта String возвращает символы строки, содержашие-
* ся в параметре строка, начиная с индекса число! и закапчивая перед индексом число2.
Индексация символов в строке начинается с нуля, т.е. первый символ имеет индекс 0.
374 Часть III. Справочник по JavaScrip;
Если в качестве параметра число! передать отрицательное значение, оно будет рассмат-
рассматриваться как 0. Аналогично, если в качестве параметра число2 передать значение, кото-
которое больше значения свойства String.length, оно будет рассматриваться как String.length. И.
наконец, если значение число! равно значению число2, метод возвращает пустую строку.
Как указано в описании синтаксиса методу substring) можно передавать один индекс.
В этом случае возвращаются все символы до конца строки.
ПРИМЕЧАНИЕ
Если атрибуту language дескриптора <script> присвоено значение
"JavaScripts .2" и используется браузер Navigator 4, то в случае, если значение пара-
параметра числа1 больше значения параметра числоВ, генерируется ошибка времени
выполнения "out of memory" (недостаточно памяти]. Если атрибут language на установ-
установлен, метод substring!) возвращает подстроку, которая начинается с позиции число2
и заканчивается позицией число1 - 1.
В листинге 7.360 создается экземпляр объекта String. Затем для этой строки использует-
ся метод substring(), который возвращает первых 11 символов строки. Результат выпол-
выполнения сценария отображается на странице пользователя.
Листинг 7.360. Использование метода substrO для возврата 11 символов строки
<script type="text/javascript" language="JavaScriptl.1">
// Создание экземпляра объекта String и присвоение ему имени,
var myString = new String("М-р P. Аллен Вайк");
// Захват первых 11 символов в строке.
var mySubString = myString.substring@,10);
// Отображение результатов на странице.
document.write("Первые 11 символов в строке, " + myString);
document.write(", будут: " + mySubString);
// Закрытие потока в окне,
document.close() ;
</script>
Strinq SimO JavaScript 1.0+, JScript 1.0+
y HW Nav2+, NES2+, IE3+, Opera3+
строка.sup()
& Метод sup() преобразует строку в экземпляр дескриптора <sup>.
В листинге 7.361 создается экземпляр объекта String, а затем с помощью метода
document.write() на страницу выводится дескриптор <sup>. Результат выполнения кода
листинга выглядит следующим образом:
<8ир>3дравствуй, /MMp!</sup>
Листинг 7.361. Использование метода supO объекта String
<script type="text/javascript" language»"JavaScriptl.1">
<! --
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
//Вывод на странице результата выполнения над строкой метода sup()
document.write(myString.sup());
// Закрытие потока в окне.
document.close() ;
//-->
</script>
String.t0L0CaleL0WerCase() JavaScript 1.5+, iScrlpt 5.5+,
строка.toLocaleLowerCase()
Глава 7. Ядро JavaScript О / О
f"*" Метод toLocaIeLowerCase() экземпляра объекта String преобразует все символы строки
таким образом, что они становятся символами нижнего регистра. Этот метод часто ис-
используется для опенки введенной пользователем строки, при которой регистр символов
не учитывается. Метод toLocaIeLowerCase() отличается от метода toLowerCase() тем, что
он учитывает региональные настройки хоста.
В листинге 7.362 на экран выводится окно, в котором пользователю предлагается ввес-
ввести текст, содержащий символы в разных регистрах. После щелчка на кнопке ОК на стра-
странице отображается введенная строка с символами в нижнем регистре.
Листинг 7.362. Использование метода toLocaleLowerCaseO для преобразования
введенной пользователем строки с учетом использования символов нижнего
регистра
<script type="text/javascript" language»"JavaScriptl . 5">
// Создание экземпляра объекта String.
var myString = new String(prompt("Пожалуйста введите текст,
^•содержащий символы в различных регистрах", ""));
// Преобразование текста с учетом использования символов нижнего
// регистра и отображение его на странице,
document.write(myString.toLocaleLowerCase());
// Закрытие потока в окне.
document.close () ;
//-->
</script>
String.t0L0CaleUpperCase() JavaScript 1.5+, JScript 5.5+, ECMAScript 3E+
IM3VD •, Ibb.b •
строка.toLocaleUpperCase()
Метод toLocaleUpperCase() экземпляра объекта String преобразует все символы строки
к верхнему регистру. Этот метод часто используется для оценки введенной пользовате-
пользователем строки, когда регистр символов не имеет значения. Метод toLocaIeUpperCase() от-
отличается от метода toUpperCase() тем, что он учитывает региональные настройки хос-
хоста.
В листинге 7.363 на экран выводится окно, в котором отображается запрос пользовате-
лю на ввод текста, содержащего символы разных регистров. После щелчка на кнопке ОК
на странице отображается введенная строка с символами в верхнем регистре.
Листинг 7.363. Использование метода toLocaleUpperCaseO для преобразования
введенной пользователем строки с учетом применения символов верхнего регистра
<script type="text/javascript" language="JavaScriptl. 1">
// Создание экземпляра объекта String.
var myString = new String(prompt("Пожалуйста, введите текст,
"содержаний символы различных регистров", ""));
// Преобразование текста с учетом использования символов верхнего
// регистра и вывод его на странице,
document.write(myString.toLocaleUpperCase());
// Закрытие потока в окне.
document.close () ;
//-->
</script>
Strlng.toLowerCaseO
строка.toLowerCa3e()
|cS Метод toLowerCase() экземпляра объекта String преобразует все символы строки к ниж-
» нему регистру. Этот метод часто используется для оценки введенной пользователем стро-
строки, когда регистр символов не имеет значения.
О / и Часть III. Справочник по JavaScript
'«<$ ^ листинге 7.364 на экран выводится окно, в котором отображается запрос пользовате-
fa лю па ввод текста, включающего символы в различных регистрах. После щелчка на кноп-
кнопке ОК на странице отображается введенная строка, содержащая символы в нижнем ре-
регистре.
Листинг 7.364. Использование метода toLowerCase() для преобразования
введенной пользователем строки с учетом применения символов нижнего регистра
<script type="text/javascript" language="JavaScriptl.1">
<!--
// Создание экземпляра объекта String.
var myString = new String(prompt("Пожалуйста введите текст,
^•состоящий иа символов различных регистров ", ""));
// Преобразовать текст в нижний регистр и вывести его на страницу,
document.write(myString.toLowerCase());
// Закрытие потока в окне.
document.close();
//-->
</ script>
Strinq.toSourceO JavaScript 1.3+, JScript 3.0+, ECMAScript 2E+
э w Nav4.06+, IE4+
строка.toSource()
String.toSource ()
Метод toSource() объекта String возвращает нечто, похожее на следующее:
function String() { [встроенный код] }
Если вызывать метод toSource() экземпляра объекта String, экземпляр объекта будет со-
содержать исходный код экземпляра.
В листинге 7.365 создается экземпляр объекта String. Затем вызывается метод toSource(),
результат выполнения которого выводится на экран. Второй метод, document.write(), иы-
водит на экран результат выполнения метода toSource() базового объекта.
Результат применения метода должен выглядеть примерно следующим образом:
(new String("Здравствуй, мир!"))
Листинг 7.365. Использование метода toSourceO объекта String для получения
исходного кода объекта или его экземпляра
<script type="text/javascript" language="JavaScriptl.3">
<! --
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
// Применение метода toSource() экземпляра объекта String и
// базового объекта String.
document.write(myString.toSource() + "<br>");
document.write(String.toSource());
// Закрытие потока в окне.
document.close();
</script>
String.toString() JavaScript 1.1+, JScriptrO^ECMASaiptliT
строка.toString()
String.toString()
8^ Метод toString() базового объекта String возвращает тип объекта или имя конструкто-
•" ра, создавшего объект. Это выглядит примерно следующим образом:
function String() { [встроенный код] }
Метод toString() экземпляра объекта String возвращает исходный код экземпляра.
:"лава 7. Ядро JavaScript Oil
;ЛВ листинге 7.366 создается экземпляр объекта String. Затем вызывается метол toStringO,
i/* результат выполнения которого выводится на экран. Второй метол document.write() вы-
выводит на экран результат выполнения метода toStringO базового объекта.
Результат применения метола должен выглядеть примерно следующим образом:
Здравствуй, мир!
Листинг 7.3GG. Использование метода toStringO объекта String для получения
исходного кода объекта или его экземпляра
<script type="text/javascript" language="JavaScriptl. 3">
<!--
// Создание экземпляра объекта String.
var myString = new String("Здравствуй, мир!");
II Применение метода toStringO экземпляра объекта String и
// базового объекта String.
document.write(myString.toString() + "<br>");
document.write(String.toString() ) ;
// Закрытие потока в окне.
document.close();
//-->
</script>
JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
S O
строка.toUpperCa3e ()
& Метод toUpperCase() экземпляра объекта String преобразует все символы строки с уче-
* том использования верхнего регистра. Этот метод часто используется для оценки введен-
введенной пользователем строки, когда регистр символов не имеет значения.
В листинге 7.367 на экран выводится окно, в котором отображается запрос пользовате-
пользователю на ввод текста, содержащего символы в разных регистрах. После щелчка на кнопке
(Ж на странице отображается введенная строка с символами в верхнем регистре.
Листинг 7.367. Использование метода toUpperCase() для преобразования
введенной пользователем строки с учетом использования символов верхнего
регистра.
<script type="text/javascript" language="JavaScriptl.1">
// Создание экземпляра объекта String.
var myString = new String(prompt("Пожалуйста введите некоторый
■"текст, содержащий символы различных регистров", ""));
II Преобразование текста с использованием символов верхнего
регистра и отображение его на странице,
document.write(myString.toUpperCase());
// Закрытие потока в окне.
document.close () ;
//-->
</script>
String.unwatch() JlvaS,cripL«+
3 w Nav4+, NES3+
строка.unwatch (свойство)
Ц Метод unwatch() объекта String прекращает слежение за свойством объекта, указанным
в параметре свойство.
В листинге 7.368 показан пример использования метода unwatch() для прекращения сле-
слежения за указанным пользователем свойством р.
Листинг 7.368. Пример использования метода unwatch() объекта String
<script type="text/javascript">
!
378 Часть III. Справочник по JavaScript
//Создание функции, которая будет выполняться при изменении свойства
function alertme(id, oldValue, newValue){
document.writeln("ID (" + id + ") изменено с " + oldvalue
+ " на ") ;
document.writeln(newValue + "<br>");
return newValue;
}
// Создание экземпляра строки,
var myString = new String () ;
// Создание нового свойства строки.
String.prototype.p = 1;
// Начало слежения за значением свойства.
myString.watch("p", alertme);
// Изменение значения свойства.
myString.p = 2 ;
// Отключение слежения за свойством.
myString.unwatch("p");
mystring.p = 3;
// -->
</script>
Strina valueOfH JavaScript 1.1+, JScript 3.0+, ECMAScript 1E+
y U Nav3+, NES2+, IE4+, Opera3+
строка.valueOf()
t Метод valueOf() возвращает элементарное значение объекта. Для экземпляра объекта метод
vaIueOf() возвращает саму строку.
В листинге 7.369 создается экземпляр объекта String. Поскольку метод vaIueOf() возвра-
возвращает значение строки, на страницу пользователя будет выведено "Некий случайный текст",
Листинг 7.369. Использование метода valueOfl) для получения значения
экземпляра объекта StringO
<script type="text/3ava3cript" language="JavaScriptl.1">
< ! --
// Создание экземпляра объекта String.
var myString = new String("Некий случайный текст.");
// Отображение значения строки на страницу,
document.write('Значение экземпляра строки: ' +
myString.valueOf());
// Закрытие потока в окне.
document.close();
//-->
</script>
строка.watch(свойство)
fj Метод watch() объекта String используется для включения слежения за свойством, ука-
указанным в параметре свойство.
% В листинге 7.370 приведен пример использования метода watch() для начала слежения
за указанным пользователем свойством р.
Листинг 7.370. Пример использования метода watch() объекта String
<script type="text/javascript">
<! --
//Создание функции, которая будет выполняться при изменении свойства
function alertme(id, oldValue, newValue){
document .writeln ("ID (" + id + ") изменено с "+oldvalue+ " на ");
document.writeln(newValue + "<br>");
Глава 7. Ядро JavaScript О / У
return newValue;
)
// Создание экземпляра строки.
var myString = new String () ;
// Создание нового свойства строки.
String.prototype.р = 1;
// Начало слежения за значением свойства.
myString.watch("p", alertme);
// Изменение значения свойства.
myString.p = 2 ;
// -->
</script>
JavaScript 1.1+
Nav3+, NES2+
sun
Объект sun позволяет получить доступ ко всем классам пакета sun.*. Он аналогичен ис-
использованию свойства Packages.sun, но имеет более компактную форму.
В листинге 7.371 приведен пример использования свойства sun для определения того,
поддерживает ли текущий браузер пакет sun (если установлен язык Java).
Листинг 7.371. Пример использования объекта sun
<script type="text/javascript" language="JavaScriptl.1">
// Проверка, установлен ли пакет sun.
if(sun){
document.write ("Этот браузер включает пакет sun");
} else{
document.write ("Этот браузер не включает пакет sun");
</script>
Super JavaScript 1.3+
K Nav4.06+, NES3+,
Зарезервированное ключевое слово
Ключевое слово super в настоящее время не реализовано. Оно зарезервировано для бу-
будущего использования.
Поскольку ключевое слово super не реализовано, пример его использования не приво-
приводится.
«switch JavaScript 1.2+, JScript 3.0+
Nav4+, NES3+, IE4+
switch(выражение){
case метка!:
код;
break;
case метка2:
код;
break;
case меткаК:
код;
break;
default:
код;
}
Оператор switch позволяет обрабатывать передаваемое оператору выражение путем срав-
сравнения его с метками — от метка! до меткаК Если совпадение установлено, выполня-
Часть III. Справочник по JavaScrct
ется кол, следующей за найденной меткой. Если параметр выражение не совпадает ни
с одной меткой, выполняется код из раздела default. Обратите внимание, что количе-
количество меток может быть любым.
В листинге 7.372 на экран выводится текстовое поле и кнопка. В текстовое поле пользо-
ватель вводит день недели. При щелчке на кнопке вызывается функция, содержащая опе-
оператор switch, который проверяет правильность ввода дня недели. Если день введен пра-
правильно, на экран выводится окно предупреждения, в котором указано в какой части
недели (первой или второй) находится введенный день.
Листинг 7.372. Обработка данных с помощью оператора switch
<html>
<head>
<title>Using the switch statement</title>
<script type="text/javascript" language="JavaScriptl.1">
<! --
// Вывод на экран окна предупреждения со значением
// кнопки submit.
function verifyDay(form) {
// Считывание введенного текста и его преобразование
// с использованием символов верхнего регистра.
var myEntry = form.day.value.toUpperCase();
// Объявление возвращаемых строк.
var firstPart = "Вы ввели день начала недели";
var endPart = "Вы ввели день конца недели";
var weekEnd = "Вы ввели день недели" ;
// Использование оператора switch для выполнения обработки,
switch(myEntry){
case "MONDAY" :
alert(firstPart) ;
break;
case "TUESDAY"
alert(firstPart);
break;
case "WEDNESDAY" :
alert("Bbi ввели "переломный" день');
break;
case "THURSDAY" :
alert(endPart) ;
break;
case "FRIDAY" :
alert(endPart);
break;
case "SATURDAY" :
alert(weekEnd);
break;
case "SUNDAY"
alert(weekEnd);
break;
default :
alert("Вы ввели некорректный день");
}
</script>
</head>
<body>
<form name="myForm">
<Ь>Пожалуйста, введите день недели:</b><br>
<input type="text" value=» name="day">
<input type="button" value="Verify" name="myButton"
onClick='verifyDay(this.form)'>
</form>
</body>
</html>
Глава 7. Ядро JavaScript
381
Synchronized JavaScript 1.2+, JScriptf 0+
1 Nav4+, NES3+, IE4+
Зарезервированное ключевое слово
f Ключевое слово synchronized в настоящее время не реализовано в JavaScript. Оно заре-
зарезервировано для будущего использования.
]^ Поскольку это ключевое слово не реализовано, пример его использования не приводится.
♦hie JavaScript 1.0+, JScript 1.0+
Nav2+, NES2+, IE2+, Opera3+
this
this.свойство
Ключевое слово this используется для ссылки на текущий объект и часто применяется для
передачи объектов в целом, например, объектов содержащихся в экземплярах Form, в
функции и методы, объявленные в сценариях.
В листинге 7.373 содержится текстовое окно, текстовое поле и кнопка. При щелчке на
кнопке обработчик события onClick с помощью ключевого слова this передает данные
формы функции, заданной в дескрипторе <head> документа. Функция открывает второе,
меньшее окно и записывает в него несколько свойств формы.
Листинг 7.373. Использование ключевого слова this для передачи функции всех
данных формы
<html>
<head>
<title>Using this in passing form information</title>
«Cscript type=" text/javascript ">
function displaylnfо(form){
// Открытие окна для выдачи результатов.
var myWin = open("", "","width=450,height=200" ) ;
// Вывод в окне свойства текстовых окон.
myWin.document.write("Значение defaultValue в текстовом
"поле будет: " ) ■
myWin.document.write(form.myText.defaultValue);
myWin.document.write("<Ьг>Имя текстовой области: " ) ;
myWin.document.write(form.myTextArea.name);
myWin.document.write("<Ьг>Значение кнопки: " ) ;
myWin.document.write(form.myButton.value) ;
// Закрытие потока в окне.
myWin.document.close();
</script>
</head>
<body>
«Cform name="myForm">
«Ctextarea name="myTextArea" rows=2 cols=50>
В моей текстовой области находится некоторый текст.
</textarea>
<Ьг>
«Cinput type="text" value="Change Me?" name="myText">
<br>
«Cinput type="button" value="Display Information" name="myButton"
onClick='displaylnfо(this.form)'>
</form>
</body>
</html>
В коде листинга 7.374 создается объект vehicle, у которого есть три свойства: количество
дверей, цвет и тип транспортного средства. Ключевое слово this используется для связи
этих свойств с объектом, при ссылке на этот объект из других сценариев. В приведен-
приведенном ниже примере создается объект vehicle, свойства которого выводятся на страницу.
О О С. Часть III. Справочник по JavaScript
Листинг 7.374. Использование ключевого слова this для ссылки на свойства
объектов пользователя
<html>
<head>
<title>Using this in object creation</title>
<script type="text/javascript">
// Создание объекта vehicle.
function vehicle(nDoors, sColor, sType){
// Объявление свойств объекта vehicle и с помощью ключевого слова
// this связывание их с новым экземпляром объекта.
this.doors = nDoors;
this.color = sColor;
this.type = sType;
</script>
</head>
<body>
<script type="text/javascript">
// Создание экземпляра объекта vehicle.
var myVehicle = new vehicleD, "red", "Toyota");
// Вызов свойств объекта с помощью точечной нотации,
// которая используется в языке JavaScript.
document.writeln("Я создал тип " + myVenicle.type) ;
document.writeln(" это " + myVenicle.color);
document.writeln(" и имеет " + myVenicle.doors + " doors.");
</script>
</body>
</html>
throw JavaScript 1.4+, JScript 5.0+, ECMAScript 3E+
Nav6+, NES3+, IE5+
throw исключение
|<cfe Элемент throw языка JavaScript в версиях JavaScript 1.3 и JScript 3.0 и в среде Netscape
»^ Enterprise server 3 являлся зарезервированным ключевым словом. Впервые это ключевое
слово было реализовано в браузерах Netscape 6 и Internet Explorer 5. Ключевое слово throw
используется для генерации состояния ошибки, которое будет обрабатываться операто-
оператором try..catch, и для передачи ошибок, обнаруженных в этих операторах, обработчикам
ошибок более высокого уровня.
t//% В листинге 7.375 содержится текстовое поле и кнопка. Пользователь должен ввести в тек-
4>~ стовое поле числовое значение и щелкнуть на кнопке. После этого обработчик события
кнопки onCIick вызывает функцию, которая проверяет, является ли введенное в текстовое
поле значение числовым. Если значение не числовое, ошибка обрабатывается функцией
myErrorHandler. Функция myErrorHandler содержит оператор try..catch, который позволяет
программисту определить действия, выполняемые при ошибочном вводе. В данном при-
примере на экран выводится окно предупреждения, в котором содержится код ошибки и
сообщение об ошибке.
Листинг 7.375. В этом примере ключевое слово throw используется
в операторе try..catch
<html>
<head>
<title>Hcnonb3OBaHHe элемента throw в операторе try...catch</title>
<script type="text/javascript" language="JavaScriptl.5">
// Объявление функции обработки ошибок,
function myErrorHandler(data){
try{
// Проверка, равно ли передаваемое значение "string" или "NaN"
Глава 7. Ядро JavaScript ubj
// и генерирование соответствующей ошибки,
if(data == "string"){
throw "ЕО";
}else{
throw "El";
}
}catch(e) {
// Если была сгенерирована ошибка "ЕО", вернуть следующее,
if(е == "ЕО"){
return{"Ошибка (" + е + "): Запись должна быть числовой.");
}else{
// Передача обработчику более высокого уровня.
return("Ошибка (" + е + ") : Запись должна быть числовой.") ;
// Эфа функция считывает данные иэ формы и генерирует
// соответствующую ошибку,
function processData(form){
// Проверка, являетсн ли передаваемое значение числом.
if(isNaN(parselnt(form.myText.value) ) ) {
alert(myErrorHandler("string" ) ) ;
}else{
alert("Вы корректно ввели число");
}
}
II —>
</script>
</head>
<body>
<form name="myForm">
Please enter a number:
<input type="text" size=0" value=» name="myText">
<input type="button" value="Process" name="myButton"
onClick='processData(this.form)'>
</form>
</body>
</html>
throws JavaScript 1.2+
Nav4, NES3+
Зарезервированное ключевое слово
ШКлючевое слово throws в настоящее время не реализовано в языке JavaScript.Оно заре-
• зервироваыо для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
transient iaJaS?'ipL\l+
Nav4+, NES3+
Зарезервированное ключевое слово
Ключевое слово transient в настоящее время не реализовано в языке JavaScript.Оно за-
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
true JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
Ключевое слово true в настоящее время не реализовано в языке JavaScript.Оно зарезер-
зарезервировано для будущего использования.
Поскольку это ключевое слово не реализовано, пример его использования не приводится.
оЬ4 Часть III. Справочник по JavaScript
try..-Catch...finally JScript 5.0+, JavaScript~1.4, ECMAScript 3E+
J J Nav6+, NES3+, IE5+
try{
оператор!
throw исключение;
} catch(исключение if выражение){
операгор2
throw исключение;
} catch(исключение){
операгорЗ
throw исключение;
} finally{
олерагор4
throw исключение;
}
$S& Оператор try...catch...finally языка JavaScript в языках JavaScript I.3 и JScript 3.0 и сре-
** де Netscape Enteфrise server 3 солержал зарезервированные слова try, catch, и finally. Впер-
Впервые оператор try...catch...finally был реализован в браузерах Netscape 6 и Internet Explorer
5.
Оператор try...catch...finally, в котором элементы catch и finally являются необязатель-
необязательными и могут солержать вложенные операторы try...catch...finally, используется для об-
обработки всех или определенных, возникающих в сценарии ошибок. Если некоторая ошиб-
ошибка не обрабатывается данным оператором, она перелается браузеру. Это, как правило.
означает вывод на экран всплывающего диалогового окна или запись данных в скрытое
диалоговое окно ошибок.
При генерировании ошибки ее значение предается оператору catch с помощью параметра
исключение. Если ошибка не может быть обработана, используется еще один оператор
throw, который передает ошибку обработчику более высокого уровня (или следующему
обработчику), если такой обработчик имеется.
Первоначально ошибка может возникнуть при выполнении оператора!. Если в выраже-
выражении catch используется оператор if, исключение вызывается только тогда, когда значе-
значение параметра выражение равно true. В этом случае ошибка обрабатывается оператором2.
Если ошибка не обработана, будет выполняться операторЗ. Как уже говорилось ранее,
если ошибка не может быть обработана ни одним из блоков, она возвращается браузе-
браузеру, но перед этим выполняется блок finally (необязательный блок).
ПРИМЕЧАНИЕ
Возможность использования нескольких операторов catch является
расширением в среде Netscape 6.
В листинге 7.376 содержится текстовое поле и кнопка. Пользователь должен ввести в тек-
текстовое поле числовое значение и щелкнуть на кнопке. После этого обработчик события
кнопки onClick вызывает функцию, которая проверяет, является ли введенное в текстовое
поле значение числовым. Если значение не числовое, ошибка обрабатывается функцией
myErrorHandler. Функция myErrorHandler содержит оператор try...catch...finally, который
позволяет про1раммисту определить, что будет происходить при ошибочном вводе. В дан-
данном примере на экране выводится окно предупреждения, в котором содержится кол
ошибки и сообщение об ошибке. Для сигнализации окончания обработки ошибки в блоке
finally на экран выводится еще одно окно предупреждения.
Для демонстрации использование вложенных операторов try...catch...finally в данном при-
примере применяется двухуровневая обработка ошибок.
Листинг 7.376. В этом примере оператор try...catch.„finally используется для
обработки ошибочного ввода
<html>
<head>
<script type="text/javascript" language2"JavaScriptl.5">
Глава 7. Ядро JavaScript
// Объявление функции обработки ошибок,
function myErrorHandler(data){
try{
try{
// Проверка, равно ли передаваемое значение "string" или "NaN"
// и генерирование соответствующей ошибки,
if(data == "string")(
throw "EO" ;
}else{
throw "El";
}
}catch(e){
// Если была сгенерирована ошибка "ЕО", вернуть следующее.
if(e == "E0")(
return("Ошибка("Ошибка (" + е + "):
Запись должна быть числовой.");
}else{
// Передача обработчику более высокого уровня,
throw e;
}
}
// Обработчик более высокого уровня, который используется
// в целях демонстрации.
}catch(e){
return("Ошибка (" + е + "): Некорректная запись.")
}finally{
alert("Завершена обработка ошибок!")
}
}
// Функция считывает данные из формы и генерирует
// соответствующую ошибку,
function processData(form){
// Проверка, является ли передаваемое значение числом,
if(isNaN(parselnt(form.myText.value))){
alert(myErrorHandler("string" ) ) ;
}else{
alert("Вы корректно ввели число") ;
</script>
</head>
<body>
<form name="myForm">
Пожалуйста, введите число:
<input type="text" size=0" value=» name="myText">
<input type="button" value="Process" name="myButton"
onClick='processData(this.form)'>
</form>
</body>
</html>
tvoeof JavaScript 1.1+, JScript 1.0+
yK Nav3+, NES2+, IE3+, Opera3+
typeof (переменная)
f^ Унарный оператор typeof используется для определения типа переданной переменной.
Возвращаемое значение оператора может быть следующим: boolean, number, object, string
или undefined.
ША\ llf»HibO Поскольку ключевое слово undefined не было реализовано в
JavaScript 1.3 и JScript 3.0, многие браузеры, поддерживающие undefined, при пере-
дене переменной с неопределенным значением возвращают null.
13 Зак.733
386 Часть III. Справочник по JavaScript
В листинге 7.377 создаются экземпляры переменных типов boolean, number, object, string
и undefined, а затем с помошмо оператора typeof определяются и выводятся на страни-
странице их типы.
Листинг 7.377. Пример использоввния унарного оператора typeof для определения
типов четырех различных переменных
<html>
<head>
<Ъл.Ъ1е>Испольэование typeof для определения типов переменных*: / ti tle>
<script type="text/javascript" language="JavaScriptl.1">
<! —
// Объявление 4 переменных рааличных типов.
var bMyVar = true;
var nMyVar = 35;
var aMyVar = "Это строка";
var uMyVar;
//-->
</script>
</head>
<body>
<script type="text/javascript" languages"JavaScriptl.1">
<!--
// Объявление 4 переменных различного типа.
document.writeln("bMyVar = " + typeof(bMyVar));
document.writeln("<br>nMyVar = " + typeof(nMyVar))
document.writeln("<br>sMyVar = " + typeof(sMyVar))
document.writeln("<br>uMyVar = " + typeof(uMyVar))
//-->
</script>
</body>
</html>
Undefined JavaScript 1.3+, JScript 5.0+, ECMAScript 1E+
Nav4.06+, IE5+
undefined
Свойство undefined является элементарным значением объекта Global. Оно возвращается
переменными, которым не были присвоены значения. Кроме того, оно возвращается, если
вычисляемой переменной не было присвоено значение. Браузеры, которые не поддержи-
поддерживают данное свойство, для переменных с неопределенным значением вознращают nuD.
ПРИМЕЧАНИЕ
В первой редакции ECMAScript undefined опраделено только как
элементарное значение, и не опредалено как свойство объакта Global.
В листинге 7.378 создается переменная myVariable, а затем в операторе if проверяется,
определено ли ее значение. Обратите внимание, что Opera 3 и более современные брау-
браузеры, Несмотря на то что официально не поддерживают данное свойство, возвращают
null, но в операторе if получают значение true.
Листинг 7.378. Проверка, определено ли значение переменной
<script type="text/javascript" language="JavaScriptl.3">
<! --
// Создание переменной.
var myVariable;
// Вычисление значения переменной в операторе if с его
// отображением на странице.
if(myVariable == undefined){
document.write("Эта переменная не определена в этот
••момент времени");
}else{
document.write("Значение этой переменной равно: " + myVariable);
Глава 7. Ядро JavaScript
/
</script>
unescaDe/\ JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
K v/ Nav2+, NES2+, IE3+, Opera3+
unescape (строка)
Метод unescape() в качестве аргумента принимает шестнадцатеричное значение и воз-
возвращает его ASCII-эквивапент в кодировке ISO-Latin-1. Данный метод выполняет дей-
действие, противоположное действию оператора escape(), и, как правило, используется для
преобразования введенных пользователем данных перед их передачей.
В листинге 7.379 объявляется локальная переменная escapedVal, которая передается ме-
методу unescape(). Результат выполнения метода, "@", выводится на странице.
Листинг 7.379. Использование матода unescapel) для преобразования
шестнадцатеричного значения в его ASCII-эквивалент
<script type="text/javascript">
<! —
// Создание переменной.
var escapedVal = "%40";
// Вычисление значение переменной и его присваивание.
var unescapedVal = unescape(escapedVal);
document.write("Значение <I>escapedVal</I> (" + escapedVal + ") ");
document.write("равно " + unescapedVal);
II —>
</script>
ZT JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
Nav2+. NES2+, IE3+, Opera3+
var переменная
var переменная = значение
Ключевое слово var применяется для объявления в сценарии переменных. Если оно ис-
используется в функции, область видимости переменной ограничивается только этой фун-
функцией. Если ключевое слово var использоваться вне функции, область видимости пере-
переменной не ограничивается, и она может использоваться в любом месте на странице.
B листинге 7.380 в трех различных местах объявляется переменная myVar. Один раз она
объявляется на глобальном уровне, один раз в функции, в которой эта переменная яв-
является возвращаемым значением, и один раз в функции, в которой переменная выво-
выводится на страницу.
Листинг 7.380. Пример использования ключевого слова var в трех различных местах
<html>
<head>
<title>npHMepbi использования ключевого слова var</title>
<script type="text/javascript">
<! --
// Объявление глобальной переменной.
var myVar = "Global";
// Объявление переменной с тем же именем в этой функции
// и возврат ее вначения.
function myFunc(){
var myVar = "Function";
return myVar;
}
// Объявление переменной с тем же именем во второй функции
// и вывод ее значения на странице,
function mySecFunc(){
var myVar = "Second Function";
document.write("Значение myVar при вызове с помощью mySecFunc(): ");
document.write(myVar);
388 Часть III. Справочник по JavaScript
</script>
</head>
<body>
<script type="text/javascript">
<! --
// Запись значения глобальной переменной.
document.write("Значение myVar при вызове: " + myVar);
// Запись значения переменной, возвращенное функцией.
document.write("Значение myVar при вызове с помощью myFuncO: ");
document.write(myFunc () ) ;
// Вызов второй функции для Записи результатов.
mySecFunc () ;
//-->
</script>
</body>
</html>
VBArray ^СГ'Р'30+
var переменная = new VBArray(vbarray)
Объект VBArray позволяет получить доступ к массиву Visual Basic safeArrays. Эти мас-
массивы часто используются на одной и той же HTML-странице и создаются средствами
языка VBScript.Методы объекта VBArray перечислены в табл.7.45.
Таблица 7.45. Методы объекта VBArray
Метод Описание
dimensions() Возвращает размерность массива
getltem() Возвращает указанный элемент массива
lbound() Возвращает наименьшее значение индекса размерности массива
toArrayO По объекту VBArray возвращает массив JScript
ubound() Возвращает наибольшее значение индекса размерности массива
i <% Влистипге 7.381 для создания массива Visual Basic в операторе JScript new вызывается
(■> функция языка VBScript.Сама функция выводит на страницу пользователя содержимое
двумерного массива.
Листинг 7.381. Создание массива VBArray
<script type="text/vbscript">
' Объявление VB Array.
Function myVBArray()
1 Объявление переменных для хранения индексов массива.
Dim i
Dim j
' Объявление переменной, в которой будут храниться Записываемые в
массив Значения,
' и присваивание ей начального значения, равного 1.
Dim k
к = 1
' Создание двумерного массива.
Dim myArray(l, 1)
1 Выполнение цикла по массиву и запись в массив увеличенного
Значения.
For i = 0 То 1
For j = 0 То 1
myArray(j, i) = k
Глава 7. Ядро JavaScript ииУ
' Отображение значения на экран,
document.writeIn(k)
k = k + 1
Next
document.writeIn("<br>")
Next
1 Возврат массива вызывающей функции,
my VBArray = myArray
End Function
</script>
<script type="text/jscript">
<!--
// Создание нового экземпляра объекта VBArray.
var myArray = new VBArray(myVBArray());
//-->
</script>
VBArray. dimensions^)
vbarray.dimensions()
0Л Метол dimension.s() экземпляра объекта VBArray возвращает размерность массива.
^Влистинге 7.382 для создания массива Visual Basic в операторе JScript new вызывается
'■/' функция языка VBScript.Сама функция выводит содержимое двумерного массива на стра-
страницу пользователя. На экран также выводится окно предупреждения, которое содержит
значение размерности массива.
Листинг 7.382. Определение размерности объекта VBArray
<script type="text/vbscript">
I Объявление VB Array
Function myVBArray()
' Объявление переменных для хранения индексов массива.
Dim i
Dim j
' Объявление переменной, в которой будут храниться записываемые в
' массив значения, и присваивание ей начального значения, равного 1.
Dim k
к = 1
' Создание двумерного массива.
Dim myArray A, 1)
'Выполнение цикла по массиву и Запись в массив увеличенного Значения
For i = 0 То 1
For j = 0 То 1
myArray(j, i) = k
' Отображение значения на экране.
document.writeln(k)
k = k + 1
Next
document.writeln("<br>")
Next
' Возврат массива вызывающей функции.
myVBArray = myArray
End Function
</script>
<script type="text/jscript">
<!--
// Создание нового экземпляра объекта VBArray.
var myArray = new VBArray (myVBArray ())-'
alert(myArray.dimensions() ) ;
II —>
</script>
иУО Часть III. Справочник по JavaScript
VBArray.getltem() ^СГ'Р1 ЗОг
vbarray.getItem(индекс)
vbarray .getItem (иадексА, индексВ, . . . , индекс^)
Метод getltem() экземпляра объекта VBArray возвращает значение элемента массива,
которому соответствует параметр индекс. Если массив многомерный, для получения зна-
значения элемента необходимо указать соответствующее количество индексом.
В листинге 7.383 для создания массива Visual Basic в операторе JScript new вызывается
функция языка VBScript.Сама функция выводит содержимое двумерного массива на стра-
страницу пользователя. На экран также выводится окно предупреждения, которое содержит
значение элемента массива, расположенного во второй строке второго столбца.
Листинг 7.383. Использоввние метода getltemO
<script type="text/vbscript">
' Объявление VB Array
Function myVBArray()
' Объявление переменных для хранения индексов массива.
Dim i
Dim j
' Объявление переменной, в которой будут храниться записываемые в
' массив значения, и присваивание ей начального значения 1.
Dim k
к = 1
' Создание двумерного массива.
Dim myArray(l, 1)
'Выполнение никла по массиву и запись в массив увеличенного значения
For i = 0 То 1
For j = 0 То 1
myArray(j, i) = k
' Отображение значения на экран,
document.writeIn(k)
k = k + 1
Next
document.writeln("<br>")
Next
I Возврат массива вызывающей функции.
myVBArray = myArray
End Function
</script>
<script type="text/jscript">
<! --
// Создание нового экземпляра объекта VBArray.
var myArray = new VBArray(myVBArray());
alert(myArray.getlternA,1));
II —>
</script>
VBArray.lbound()
vbarray.lbound(размерность)
vbarray.lbound()
Метод lbound() экземпляра объекта VBArray возвращает наименьший индекс для пара-
параметра размерность. Если метод вызывается без параметра размерность, по умолчанию
будет использоваться значение 1.
Влистинге 7.384 для создания массива Visual Basic в операторе JScript new вызывается
функция языка VBScript.Сама функция выводит содержимое двумерного массива на стра-
страницу пользователя. На экран также выводится окно предупреждения, которое содержит
наименьший индекс во второй размерности.
Глава 7. Ядро JavaScript о У I
Листинг 7.384. Использование метода IboundO
<script type="text/vbscript">
' Объявление VB Array.
Function myVBArrayO
I Объявление переменных для хранения индексов массива.
Dim i
Dim j
' Объявление переменной, в которой будут храниться записываемые в
' массив значения, и присваивание ей начального значения 1.
Dim k
к = 1
' Создание двумерного массива.
Dim myArray(l, 1)
'Выполнение никла по массиву и запись в массив увеличенного значения
For i = 0 То 1
For j=0 To 1
myArray(j, i) = k
' Отображение значения на экране,
document.writeln(k)
k = k + 1
Next
document.writeln("<br>")
Next
' Возврат массива вызывающей функции.
myVBArray = myArray
End Function
</script>
<script type="text/jscript">
<!--
// Создание нового экземпляра объекта VBArray.
var myArray = new VBArray(myVBArray());
alert(myArray.lboundB));
II —>
</script>
___________ JScript 3.0+
vbarray.toArray()
Метод toArray() экземпляра объекта VBArray преобразует объект VBArray в массив
JScript.
глВлистинге 7.385 для создания массива Visual Basic в операторе JScript new вызывается
(г функция языка VBScript.Сама функция выводит содержимое двумерного массива на стра-
страницу пользователя.Затем созданный массив преобразуется в массив JScript и на экран
выводится окно предупреждения, содержащее значение массива.
Листинг 7.385. Использование метода toArrayO
<script type="text/vbscript">
' Объявление VB Array
Function myVBArray()
'Объявление переменных, предназначенных для хранения индексов массива
Dim i
Dim j
1 Объявление переменной, в которой будут храниться записываемые в
' массив значения, и присваивание ей начального значения 1.
Dim k
к = 1
' Создание двумерного массива.
Dim myArray(I, I
'Выполнение цикла по массиву и запись в массив увеличенного значения
For i = 0 То 1
For j = 0 То 1
myArray(j , i) = k
1 Отображение значения на экране.
392
Часть III. Справочник гю JavaScript
document.writeIn(k)
k = k + 1
Next
document.writeln("<br>")
Next
' Возврат массива вызывающей функции.
myVBArray = myArray
End Function
</script>
<script type="text/jscript">
<! --
// Создание нового экземпляра объекта VBArray.
var myArray = new VBArray(myVBArray()) ;
// Преобразование объекта VBArray в массив JScript.
var myJSArray = myArray.toArray();
// Отображение второго столбца, значения первой строхи.
alert(myJSArray[O,l]) ;
//-->
</script>
VBArrayoibound()
vbarray.ubound(размерность)
#3} Метод ubound() экземпляра объекта VBArray возвращает наибольший индекс для пара-
" метра размерность.
i г* Влистинге 7.386 для создания массива Visual Basic в операторе JScript new вызывается
<г* функция языка VBScript.Сама функция выводит содержимое двумерного массива на стра-
странице пользователя. На экран также выводится окно предупреждения, которое содержит
наибольший индекс во второй размерности.
Листинг 7.386. Использование метода ubound()
<script type="text/vbscript">
1 Объявление VB Array.
Function myVBArray()
1 Объявление переменных для хранения индексов массива.
Dim i
Dim j
' Объявление переменной, в которой будут храниться записываемые в
массив значения,
' и присваивание ей начального значения 1 .
Dim k
к = 1
' Создание двумерного массива.
Dim myArray A, 1)
1 Выполнение цикла по массиву и запись в массив увеличенного
значения.
For i = 0 То 1
For j = 0 То 1
myArray (j, i) = k
'■ Вывести значение на экран,
document.writeln(k)
k = k + 1
Next
document.writeln("<br>")
Next
1 Возврат массива вызывающей функции.
myVBArray = myArray
End Function
</script>
<script type="text/jscrlpt">
Глава 7. Ядро JavaScript
393
// Создание нового экземпляра объекта VBArray.
var myArray = new VBArray(myVBArray());
alert(myArray.uboundB));
//-->
</script>
JavaScript 1.1+, JScript 1.0+, ECMAScript 1E+
Nav3+, NES2+, IE3+
void{выражение)
void выражение
г&Оператор void используется для вычисления выражения без возврата значения. Этот опе-
' ратор возвращает значение undefined и вследствие наличия в ранних версиях браузеров
Unix Navigator различных ошибок, часто используется в качестве обработчика события
onClick. Обратите внимание, что браузер Opera не поддерживает данный оператор.
i В листинге 7.387 оператор void используется дли предотвращения перехода по ссылке <а>
' при вызове указанной функции.
Листинг 7.387. Использование оператора void для вызова функции
<html>
<head>
<title>npHMtepbi использования оператора void</title>
<script type="text/javascript">
<!--
//Объявление функцию, которая будет вызываться при щелчке на ссылке
function myFunc(){
alert("Вы щелкнули на ссылке!");
</script>
</head>
<body>
<а HREF="javascript:void(myFunc())">Щелкните для вызова фувкции</А>
</body>
</html>
volatile JavaScript 1.2+
Nav4+, NES3+
Зарезервированное ключевое слово
й Ключевое слово volatile в настояшее время не реализовано в языке JavaScript.Оно заре-
зарезервировано для будущего использования.
} Поскольку это ключевое слово не реализовано, пример его использования не приводится.
whj|e JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
Nav2+, NES2+, IE3+, Opera3+
while{условие){
код;
}
Условный оператор while вычисляет значение параметра условие и выполняет код до тех
пор. пока условие соблюдается. Он часто используется для вычисления значений пере-
переменных и выполнения различных задач, а также для выполнения итераций по строкам
файла при реализации оператора в серверной части.
В листинге 7.388 определяется число, а затем на экран выводится запрос на ниш пользо-
вателем второго числа. Запрос на ввод числа появляется до тех пор, пока не будет вве-
введено число, меньше числа, заданного в коде.
\D У Ч- Часть III. Справочник по JavaScript
Листинг 7.388. Использование оператора while для проверки передаваемого
значения
<html>
<head>
<1:л.1:1е>Использование оператора while</title>
</head>
<body>
<script type="text/javascript">
<!--
// Определение числа, с который будет производиться сравнение, и
// запрос пользователю на ввод второго числа.
var indexNum = 30;
var guess = parselnt(prompt("Пожалуйста введите число.", ""));
// Пока пользователь вводит числа больше заданного,
// отображение запроса на ввод числа.
while(guess >= indexNum){
guess = parselnt(prompt("Попытайтесь снова.
"•Заданное число меньше!", "" ) ) ;
}
// Если число, введенное пользователем, меньше заданного,
// вывести на экран следующее.
document.write("Загаданное вами число меньше значения индекса. ");
document.write("Вы загадали " + guess + " а значение индекса ") ;
document.write(indexNum + ' . ' ) ;
// Закрытие потока в окне браузера,
document.close () ;
//-->
</script>
</body>
</html>
w,th JavaScript 1.0+, JScript 1.0+, ECMAScript 1E+
Nav2+, NES2+, IE3+, Opera3+
with(объект){
код;
)
f Оператор with в качестве аргумента принимает объект и в коде получает доступ к свой-
свойствам, методам и событиям этого объекта без необходимости задания самого объекта. Это
позволяет использовать указанные характеристики объектов, например, объекта Math,
без явного задания имени объекта.
В листинге 7.389 создается переменная, определяется ее значение, а затем вызываются
методы объекта Math. Поскольку используется оператор with, нет необходимости ссылаться
на используемые методы через экземпляр объекта Math.
Листинг 7.389. Использование оператора with
<script type="text/javascript">
<! --
// Объявление используемых переменных.
var myNum = 25;
var myE, mySin, mySqrt;
// Применение оператора with и использование методов объекта Math,
with (Math) {
myE = E ;
mySqrt = sqrt(myNum)
mySin = sin(PI/myNum)
}
//-->
</script>
Глава 8
Клиентская сторона
Rглаве приводится описание всех компонентов языка JavaScript, используемых бра-
зерами. Как и в других главах этой части, в настоящей главе в каждом разделе
указаны номер версии, перечислены браузеры, поддерживающие данный компонент,
синтаксис, приводится описание, дается пример использования, а также содержит-
содержится масса другой полезной информации.
Объекты JavaScript описываются в алфавитном порядке, благодаря чему упроща-
упрощается поиск описания требуемого элемента. Методы, свойства, функции и обработ-
обработчики событий объектов приведены в алфавитном порядке через точку после соот-
соответствующего родительского объекта, что упрощает изучение языка.
ПРИМЕЧАНИЕ
При указании браузероа, поддерживающих данный компонант, приме-
применяются сокращения. За кеждым сокращением следует номер версии, в которой впер-
впервые быпа реелизоаана поддержка рассматриваемого зламанта, и знак "плюс" (+), если
браузер продолжает поддерживать данный элемент.
NES = Netscape Entarprisa Server
Nav = Natscape Communicator
IE = Microsoft Intarnat Explorar
Opara ^ Opera
JavaScript 1.2+, JScript 3.0+
Nav4+. IE4+, Opera5+
document:. anchors
\ Экземпляр объекта Anchor создается при определении дескриптора <а> с установленным
атрибутом name (или атрибутом id). Сам объект anchor (привязка) предстаыяет собой об-
область в HTML-документе, доступ к которой можно получить с использованием гипер-
гипертекстовой ссылки. Гипертекстовая ссыпка на точку привязки может содержаться в том же
документе, где находится объект, так и на другой Web-странице. В обоих случаях при-
привязка позволяет перейти к определенной части страницы, а не к началу страницы. Для
того чтобы привязка могла выполнять свои функции, требуется, чтобы атрибут name (или
атрибут id) гиперссылки указыват на положение точки привязки в документе.
HTML-дескриптор <а>, как правило, используется совместно с атрибутом href, кото-
который содержит гипертекстовую ссылку. Эта конструкция противоположна по своему дей-
действию привязке, поскольку при использовании атрибута href создается ссыпка, а не при-
оУ О Часть 111. Спрааочник по JavaScript
вязка. В том случае, когда дескриптор используется в качестве ссылки, а не в качестве
привязки, в языке JavaScript применяется объект Link, а не объект Anchor.
Свойства и методы объекта Anchor перечислены в табл. 8.1.
Таблица 8.1. Свойства и методы объекта Anchor
Тип
Свойство
Метод
Элемент
пате
text
X
У
unwatch()
watch()
Описание
Имя, с помощью которого ссылка получает доступ к закрепителю.
Текст, находящийся между дескрипторами <а> и </а>.
Координата х точки привязки.
Координата у точки привязки.
Этот метод прекращает слежение за свойством.
Этот метод устанавливает слежение за свойством.
В листинге 8.1 показано создание и использование закрепителя в HTML-документах на
примере толкового словаря, описывающего свойства фруктов. Заголовок каждой буквы
словаря является привязкой. В конце документа JavaScript использует отдельные свойства
привязки.
Листинг 8.1. Создание в документе объектов Anchor
<html>
<center>
<ЫХи>Толковый словарь, описывающий свойства фруктов</иХ/Ы>
Выберите букву:
<а href="#A">A</a>|<a href="#B">B</a>|<a href="#C">C</a>
</center>
<br><a пате="А"ХЬ4>Буква A</h4X/a>
Яблоко = Сочный плод округлой формы, который бывает красного,
желтого и зеленого цветов.<Ьг>
Абрикос = Округлый плод желто-оранжевого цвета.<Ьг>
<ЬгХа пате="В"ХЬ4>Буква B</h4x/a>
Банан = Длинный искривленный плод желтого цвета с мягкой
сердцевиной.<Ьг>
Ежевика = Черный, терпкий плод черного цвета, который растет на
кустарнике с шипами. <Ьг>
Голубика = Небольшая, округлая ягода синего цвета, которая растет
на кустарнике.<Ьг>
<ЬгХа пате="С"ХЬ4>Буква C</h4X/a>
Мускусная дыня = Большая оранжевая дыня с твердой кожурой.<Ьзг>
Кокос = Большой округлый плод с твердой, ворсистой кожурой.<Ьг>
<script type="text/javascript" language="JavaScript">
<!--
document.write("<Ьг>Свойства закрепителей:<Ьг>");
// Отображение значений свойств каждого закрепителя.
for(var counter=0; counter<document.anchors.length; counter++)
{
document .write ("anchors [" , counter , " ] .name=") ,"
document.write(document.anchors[counter].name,"<br>");
document.write("anchors[",counter,"].text=");
document.write(document.anchors[counter].text,"<br>");
document.write("anchors[".counter,"]. x=");
document.write(document.anchors[counter].x,"<br>");
document.write("anchors[",counter,"].y=");
document.write(document.anchors[counter].y,"<br>");
}
// — >
</script>
</html>
Глава 8. Клиентскея сторона
397
Anchor.name E*A^,fnp S
Nav4+, IE4+, Opera5+
document. anchors[число].name
^Свойство name определяет имя привязки. Именно с помощью этого имени пшерссыл-
ка получает доступ к привязке. Свойство name первоначально устанавливается с помо-
помощью атрибута name дескриптора <а>.
В листинге 8.2 создается толковый словарь, описывающий свойства фруктов, заголовок
каждой буквы которого яш1яется привязкой. В коиие документа свойство name каждой при-
привязки используется для создания гипертекстовой ссылки, с помощью которой осуществ-
осуществляется переход к соответствующей привязке.
Листинг 8.2. Использование свойства name объекта Anchor.
<html>
<center>
<ЫХи>Толковый словарь, описывающий свойства фрук>гов</иХ/Ы>
Выберите букву:
<а href="#A">A</a>|<a href="#B">B</a>|<a href="#C">C</a>
</center>
<br><a пате="А"ХЬ4>Буква A</h4X/a>
Яблоко = Сочный плод округлой формы, который бывает красного,
желтого и зеленого цветов.<Ьг>
Абрикос = Округлый плод желто-оранжевого цвета.<Ьг>
<ЬгХа пате="В"ХЬ4>Буква B</h4X/a>
Банан = Длинный искривленный плод желтого цвета с мягкой
сердцевиной.<Ьг>
Ежевика = Черный, терпкий плод черного цвета, который растет на
кустарнике с шипами.<Ьг>
Голубика = Небольшая, округлая ягода синего цвета, которая растет
на кустарнике.<Ьг>
<ЬгХа пате="С"ХЬ4>Буква C</h4x/a>
Мускусная дыня = Большая оранжевая дыня с твердой кожурой.<Ьг>
Кокос = Большой округлый плод с твердой, ворсистой кожурой.<Ьг>
<script type="text/javascript" language="JavaScript">
^i
document.write("<Ьг>Выберите букву:");
// С помощью объекта Anchor создается ссылка на каждый закрепитель
for (var counter=0; counter<document. anchors . length,- counter++)
{
document .write ("<a href='#",document.anchors[counter] . name ,"'>") ,'
document.write(document.anchors[counter].name,"</a>");
}
// —>
</script>
</html>
Anchor tPxt JavaScript 1.2-1.4
ДПСПОГЛеХТ Nav4-4.5
document.anchors[число].text
^Свойство text описывает текст, который находится между дескрипторами <а> и </а>.
Если между дескрипторами находятся какие-либо другие дескрипторы языка HTML,
свойство text может содержать не весь текст, который находится между дескрипторами
<а> и </а>.
•а В листинге 8.3 создается толковый словарь, описывающий свойства фруктов, заголопок
' каждой буквы которого является привязкой. В конце документа свойство text каждой при-
привязки используется для создания гипертекстовой ссылки с текстом соответствующей при-
привязки.
о 9 О Часть III. Справочник по JavaScript
Листинг 8.3. Использование свойства text объекта Anchor
<html>
<center>
<п1Хи>Толковый словарь, описывающий свойства фрук:Еов</иХ/п1>
Выберите букву:
<а href="#A">A</a>|<a href="#B">B</a>|<a href="#C">C</a>
</center>
<br><a пате="А"ХЬ4>Буква A</h4X/a>
Яблоко = Сочный плод округлой формы, который бывает красного,
желтого и зеленого цветов.<Ьг>
Абрикос = Округлый плод желто-оранжевого цвета.<Ьг>
<ЬгХа пате="В"ХЬ4>Буква B</h4X/a>
Банан = Длинный искривленный плод желтого цвета с мягкой
сердцевиной.<Ьг>
Ежевика = Черный, терпкий плод черного цвета, который растет на
кустарнике с шипами.<Ьг>
Голубика = Небольшая, округлая ягода синего цвета, которая растет
на кустарнике.<Ьг>
<ЬгХа пате="С"ХЬ4>Буква C</h4X/a>
Мускусная дыня = Большая оранжевая дыня с твердой кожурой.<Ьг>
Кокос = Большой округлый плод с твердой, ворсистой кожурой.<Ьг>
<script type="text/javascript" language="JavaScript">
<! —
document.write("<Ьг>Выберите букву:");
// С помощью объекта Anchor создается ссылка на каждый закрепитель
for(var counter=0; counter<document.anchors.length; counter++)
{
document.write("<a href ='#",document.anchors[counter].name,"'>") ;
document.write(document.anchors[counter].text,"</aXbr>");
}
// —>
</script>
</html>
Anchor.unwatch() #
document.anchors[число]. unwatch(свойство)
Метод unwatch() объекта Anchor используется для прекращения отслеживания свойства,
указанного в параметре свойство.
В листинге 8.4 приведен пример использования метода iuiwatch() для прекращения сле-
слежения за свойством name объекта Anchor после замены имени привязки на "сок".
Листинг 8.4. Использование метода unwatchf) объекта Anchor
<html>
<а name="oranges">Апельсины</а> оранжевого цвета.<Ьг>
<а пате="арр1е5">Яблоки</а> красного цвета.<ЬгХЬг>
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.write (id + " изменилось с " + oldValue + " на ");
document.write(newValue + "<br>");
return newValue;
}
// Начать слежение.
document.anchors[О].watch("name",alertme);
document.write("Исходное имя закрепителя: " +
document.anchors[0].name + "<br>");
// Изменить имя привязки, соответствующей апельсинам,
document.anchors[0].name = "сок";
Глава 8. Клиентская сторона о У У
// Прекратить слежение.
document.anchors[О].unwatch("name");
document.write ("Новое имя привязки: "+ document.anchors [0] .name + "<br>" ) ;
// Изменить имя привязки, соответствующей апельсинам.
document.anchors[О].name = "апельсиновый сок" ;
document.write("Окончательное имя привязки: " +
document.anchors[О].name);
// —>
</script>
</html>
Anrhnr watrhH JavaScript 1.2+
Ancnor.watCllU Nav4+, NES3+
document.anchors[число]. watch(свойство,функция)
©Метод watch() объекта Anchor используется для включения слежения за свойством, ука-
" занпым в параметре свойство. При изменении параметра свойство после вызова метода
watch() вызывается функция, указанная в параметре функция.
В листинге 8.5 приведен пример использования метода watch() для включения слежения
за свойством name объекта Anchor.
Листинг 8.5. Использование метода watchf) объекта Anchor
<html>
<а пате="огапдеБ">Апельсины</а> оранжевого цвета.<Ьг>
<а пате="арр1ез">Яблоки</а> красного цвета.<br><br>
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.write (id + " изменилось с " + oldvalue + " на ");
document.write(newValue + "<br>");
return newValue;
}
// Начать слежение.
document.anchors[0].watch("name",alertme);
document.write("Исходное имя закрепителя: " +
document.anchors[0].name + "<br>");
// Изменить имя привязки, соответствующей апельсинам,
document.anchors[0].name = "сок";
document.write("Новое имя привязки:"+document.anchors[0].name+"<br>");
// —>
</script>
</html>
Anchor x JavaScript 1.2-1.4
АПСПОГ.Х Nav4-4.5
document, anchors[число] .x
^Свойство x содержит координату х привязки (в пикселах), отсчитываемую от левого края
' документа.
В листинге 8.6 из заголовка, расположенного в верхней части документа, создается при-
привязка. Свойство х используется для вывода на экран в нижней части документа значе-
значения горизонтальной координаты объекта Anchor.
Листинг 8.6. Использование свойства х объекта Anchor
<html>
<center><a name="A"Xh4>H6noKO</h4X/aX/center>
Сочный плод округлой формы, который бывает красного, желтого и
зеленого цветов.<br>
<script type="text/javascript" language="JavaScript">
4UU Часть III. Справочник по JavaScript
// Отображение значения свойства х привязки.
document.write("Значение свойства х равно ",document.anchors[0].х);
// — >
</script>
</html>
Anchor V JavaScript 1.2-1.4
document, anchors[число].у
# Свойство у содержит координату у привязки (в пикселах), отсчитываемую от верхнею
края документа.
В листинге 8.7 на основе заголовка, расположенного в верхней части документа, созда-
создастся привязка. Свойство у используется для вывода на экран в нижней части документа
вертикальной координаты объекта Anchor.
Листинг 8.7. Использование свойства у объекта Anchor
<html>
<center><a name="B"Xh4>BaHaH</h4></a></center>
Длинный искривленный плод желтого цвета с мягкой сердцевиной.<Ьг>
<script type="text/javascript" language="JavaScript">
<! —
// Отображение значения свойства у привязки.
document.write("Значение свойства у равно ".document.anchors[0] .у) ;
// — >
</script>
</html>
JavaScript 1.1+, JScript 3.0+
Nav3+, IE4+
Основной объект клиентской части языка JavaScript.
В языке JavaScript аплеты, внедренные в HTML-страницы, представляются объектом
Applet. Этот объект, создаваемый в документе с помощью экземпляра дескриптора
<applet>, позволяет получить доступ к открытым полям и методам аплета с помощью
свойств и методов языка JavaScript.Свойства и методы объекта Applet перечислены в табл.
8.2.
Таблица 8.2. Свойства и методы объекта Applet
Тип Описание
Свойство Доступ ко всем общедоступным полям Java-аплета осуществляется через
свойства JavaScript-объекта Applet.
Метод Доступ ко всем общедоступным методам Java-аплета осуществляется через
методы JavaScript-объекта Applet.
]:/% В примере, приведенном в листинге 8.8, предполагается, что имеется аплет-калькуля-
'-' тор, который необходимо внедрить в HTML-документ. Также предполагается, что аплет
имеет метод add(), который выполняет сложение двух чисел и возвращает полученный
результат.Чтобы получить доступ к данному методу из кода JavaScript, необходимо сна-
сначала описать аплет с помощью дескрипторов <applet>. Затем JavaScript-код будет пере-
передавать методу add() числа 2 и 5, используя точечную нотацию, и на экране будет ото-
отображаться результат — число 7.
ПРИМЕЧАНИЕ
Данный пример не будет работоспособным, если отсутствует аплет
calculator, располагающий методом add().
Глава 8. Клиентскея сторона
401
Листинг 8.8. Использование метода объекта Applet
<html>
<applet name="calculator" code="calculator.class"
width=50 height=50x/applet>
<script type="text/javascript" language="JavaScript">
<! —
// Использование аплета calculator для вычисления суммы двух чисел
document.write(+5=",calculator.addB,5)///Возвращается значение 7.
// —>
</script>
</html>
JavaScript 1.1+, JScript 1.0+
Nav3+, IE3+, Opera3+
Основной объект клиентской части языка JavaScript.
Экземпляр объекта Area создается в HTML-документе, с помощью экземпляра дескрип-
дескриптора <агеа>. В HTML-документах дескриптор <агеа> используется совместно с дескрип-
дескриптором <тар> для определения области рисунка, которая будет служить гиперссылкой.
Поскольку объект Area является ссылкой, он эквивалентен объекту Link. Он хранится в
том же массиве, что и объект Link. Свойства, методы и обработчики событий объекта
Area сведены в табл. 8.3.
Таблица 8.3. Свойства, методы и обработчики событий объекта Area
Тип
Свойства
Методы
Обработчики
событий
Элемент
hash"
host
hostname
href
pathname
port
protocol
search
target
handleEvent()
u n watch ()
watch ()
onDblClick
Описание
Часть адреса URL, которая является привязкой, включая
символ #.
Хост-имя (IP-адрес) и порт, указанные в адресе URL.
Хост-имя, указанное в адресе URL.
Полный адрес URL.
Путь к файлу, указанный в URL, который начинается с
символа /.
Порт, указанный в URL.
Протокол, указанный в URL, включая конечное двоеточие (:).
Часть URL, используемая для поиска, включая начальный
знак вопроса (?).
Имя окна, в котором должен выводиться адрес URL.
Этот метод вызывает обработчик события, соответствующий
указанному событию.
Этот метод прекращает слежение за свойством.
Этот метод устанавливает слежение за свойством.
Этот обработчик события вызывается при двойном нажатии
левой кнопки мыши в области, заданной объектом Area.
onMouseOut Этот обработчик события вызывается при перемещении
указателя мыши из области, заданной объектом Area.
onMouseOver Этот обработчик события вызывается при перемещении
указателя мыши внутрь области, заданной объектом Area.
В листинге 8.9 создается Web-страница магазина красок, на которой содержится палитра
цветов со ссылками на фиктивные Web-сайты красок. Графические гиперссылки создаются
402
Часть III. Справочник по JavaScript
с использованием дескрипторов <map>, <img> и <агеа>. При перемещении указателя
мыши над определенной областью цвета в текстовых полях в нижней части экрана ото-
отображаются свойства данной области. На рис. 8.1 показано, что происходит при помеще-
помещении указателя мыши в область зеленого цвета.
Листинг 8.9. Создание объектов Area и использование их свойств
<html>
<body>
<Ь2>Магааин красок</Ь2>
Для того чтобы узнать больше об имеющихся красках, выберите один
иа 4 цветов.<Ьг>
<map name="colorMap">
<area name="redArea"
coords="l,1,48,4а"
href="http://www.red.com:1234/red.html?query=red#RED"
target="_top"
onMouseOver="overBox@)"
onMouseOut="clearBox()">
<area name="greenArea"
coords=1,l,99,4 9"
href="http://www.green.com:5678/green.html?query=green#GREEN"
target="_top"
onMouseOver="overBox(l)"
onMouseOut="clearBox()">
<area name="yellowArea"
coords="l,51,51,99"
href="http://www.yellow.com:9876/yellow.html?query=yellow#YELLOW"
target="_top"
onMouseOver="overBoxB)"
onMouseOut="clearBox()">
<area name="blueArea"
coords=1,51,99,99"
href="http://www.blue.com:5432/blue.html?query=blue#BLUE"
targe t="_top"
onMouseOver="overBoxC)"
onMouseOut="clearBox()">
</map>
<img src="box4.gif" align="top"
height=00" width=00" usemap="#colorMap">
<ЬгХЬгХЬХи>Свойства объекта ARKA.</uX/b>
<form name="myForm">
hash=<input name="tHash" type="textarea"Xbr>
host=<input name="tHost" type="textarea"Xbr>
hostname=<input name="tHostName" type="textarea"Xbr>
href=<input name="tHref" type="textarea"Xbr>
pathname<input name="tPathName" type="textarea"Xbr>
port=<input name="tPort" type="textarea"Xbr>
protocol=<input name="tProtocol" type="textarea"Xbr>
search=<input name="tSearch" type="textarea"Xbr>
target=<input name="tTarget" type="textarea"Xbr>
</form>
<script type="text/javascript" language="JavaScript">
<! —
// Заполнение текстовых полей.
function overBox(num)
{
document.myForm.tHash.value = document.links[num].hash;
document.myForm.tHost.value = document.links[num].host;
document.myForm.tHostName.value = document.links[num].hostname;
document.myForm.tHref.value = document.links[num].href;
document.myForm.tPathName.value = document.links[num].pathname;
document.myForm.tPort.value = document.links[num].port;
document.myForm.tProtocol.value = document.links[num].protocol ;
document.myForm.tSearch.value = document.links[num].search;
Глава 8. Клиентскея сторона
403
document.myForm.tTarget.value =
document.links[num].target;
)
// Очистка текстовых полей.
function clearBox ()
1
document. myForm. tHash. value = " •■;
document. myForm. tHost. value = ■■ •■;
document.myForm. tHostName.value =
document. myForm.tHref. value = "»;
document.myForm.tPathName.value =
document.myForm. tPort. value = "";
document.myForm.tProtocol.value =
document.myForm.tSearch.value = "
document.myForm. tTarget. value = ■•
</script> Рисунок 8.1.
</body> Использование
</html> свойств объекта Area
Смйгти «Въ^кта AREA.
green com Б678
JavaScript 1.2+
Nav4+
Area.handleEvent()
document.links[число].handleEvent(событие)
Метод handleEvent() вызывает обработчик события, который задан аргументом событие
для ссылки, заданной аргументом число. Метод возвращает значение соответствующее ука-
указанному аргументу событие.
В листинге 8.10 создается Web-страница, материал которой рассказывает о начинках для
пицц. При щелчке мышью на одной из областей открывается документ, в котором рас-
рассматриваются особенности выбранной начинки. Метод handleEvent() используется для
передачи всех событий мыши первой области (соответствующей разным сортам перца)
обработчикам событий второй области (соответствующей разновидностям лука). При пе-
перемещении указателя мыши по области, описывающей разные виды перца, потребуется
выводить на экран специальное сообщение, но метод handleEvent() используется таким об-
образом, что область, содержащая описание сортов перца, реагирует аналогично области,
описывающей лук. Обратите внимание, что благодаря методу handleEvent() в текстовом окне
слово "onion" выводится при перемещении указателя мыши над любой областью.
Листинг 8.10. Передача событий с целью обработки другими объектами Area.
<html>
<body>
<center><hl><u>
Узнайте больше о начинках наших пицц
</u></hl></center>
<ЬЗ>Для получения дополнительной информации выберите рисунок,
описывающий начинку.</h3>
<map name="toppingsMap">
<area name="peppers"
coords="l,l,48,48"
href="#PEPPERS"
target="_top"
onMouseOver="fillTextField(event)"
onMouseOut="f illTextField (event) "Xbr>
<area name="onion"
coords=1,1,99,49"
href="#ONION"
target="_top"
onMouseOver="document.pizzaForm.textbox.value='onion'"
onMouseOut="document.pizzaForm.textbox.value=''">
</map>
4U4 Часть III. Справочник по JavaScript
<img src="toppingsBox.gif"
align="top"
height=0"
width=00"
usemap="# toppingsMap">
<br>
<form name="pizzaForm">
<input type="text"
name= " textbox " >
</form>
<script type="text/javascript" language="JavaScript">
//Эта функция передает событие для обработки другому объекту Area,
function fillTextField(event)
{
//Передать событие второй ссылке.
document.links[1].handleEvent(event);
}
// —>
</script>
<a name=" PEPPERS "ХпЗ>Перец, который мы используем :</h3X/a>
>
<11>Желтый</11>
<11>Красный</1г>
<1х>Зеленый</11>
<a name="ONION"Xh3> Лук, который мы используем :</h3X/a>
>
<1х>Слабый</11>
<11>Острый</11>
</body>
</html>
hach JavaScript 1.1+, JScript 1.0+
.nasn Nav3+ |E3+^ ^
document, links[число].hash
Свойство hash объекта Area содержит точку привязки, указанную в URL, включая на-
начальный символ #.
В листинге 8.11 создается страница автомобильных деталей, которая позволяет найти но-
номера деталей, щелкнув мышью на рисунке интересующей детали. При выборе опреде-
определенной детали на экран выводится окно предупреждения, которое приводит значение
свойства hash выбранной ссылки. В приведенном примере это значение будет одним из
следующих: "#SPARKPLUGS", "#TIRES", "#HEADLIGHTS" или "#FUSES". После зак-
закрытия окна предупреждения браузер переходит к той части документа, которая опреде-
определена с помощью свойства hash.
Листинг 8.11. Вывод на экран значения свойства hash объекта Area
<html>
<body>
<center><hl><u>3anacHbie части к грузовым автомобилям</и></Ы></
center>
<ЬЗ>Выберите рисунок запасной части.</h3>
<map name="partsMap">
<area name="sparkplug"
coords=,1,48,48"
hre f="«SPARKPLUGS"
target="_top"
onClick="alert(document.links[0].hash)">
<area name="tires"
coords=1,1,99,49"
href="#TIRES"
Глава 8. Клиентская сторона
target="_top"
onClick="alert(document.links[1].hash)">
<area name="headlights"
coords=,51,51,99"
href="#HEADLIGHTS"
targe t="_top"
onClick="alert(document.links[2].hash)">
<area name="fuses"
coords=1,51,99, 99"
href="#FUSES"
targe t="_top"
onClick="alert(document.links[3].hash)">
</map>
<img src="partsBox.gif"
align="top"
height=00"
width=00"
usemap="#partsMap">
<br>
<a name="SPARKPLUGS"Xh3>CBe4H эажигания</ЬЗХ/а>
l>
<li>SP93654</li>
<li>SP34710</li>
<lx>SP19374</li>
/
<a name= "TIRES "><ЬЗ>Шины</ЬЗХ/а>
>
<11>Для пересеченной кесчаосчк</1х>
<1х>Ниэкие</1л.>
<1д.>Огандар'гные</1л.>
</ul
<a name="HEMLIGHTS"Xh3>*apM</h3X/a>
<l>
<11>Для ночной еэды</11>
<11>С'гандар'Вные
</ul>
<a name=" FUSES "ХЬЗ>Предохранители</ЬЗХ/а>
<l>
<11>Красный</11>
<11>Жел'гый</11>
<11>Зеленый</11>
<11>Синий</1х>
/
</body>
</html>
дГРЯ hn^t JavaScript 1.1+, JScript 1.0+
Area.nost N^ |E3+ ojera3+
document.links[число].host
Свойство host объекта Area содержит разделенные двоеточием (:) имя хоста и порт, ука-
указанные в строке URL.
Код из листинга 8.12 создает Web-страницу, содержащую описание авто-запчас-
авто-запчастей. Пользователь может осуществлять'поиск номеров запчастей путем щелчков
мышью на изображении интересующей его запчасти. В результате выбора опреде-
определенной запчасти на экране отображается окно предупреждения, содержащее строку
"www.wildbillstruckparts.com:4000", которая представляет собой значение свойства host для
выбранной ссылки. После закрытия окна предупреждения браузер попытается загрузить
указанный файл, который находится на фиктивном Web-сайте.
Листинг 8.12. Вывод на экран значения свойства host объекта Area
<html>
<body>
<center><hlXu>3an4ac'TH к грузовым автомобилям</и></Ы>
40Ь Часть III. Справочник по JavaScript
<ЬЗ>Выберите рисунок запчасти.</h3>
<map name="partsMap">
<area name="sparkplug"
coords="l,1,48,48"
href="http://www.wildbillstruckparts.com:4000/sparkplugs.html"
target="_top"
onClick="alert(document.links[0].host)">
<area name="tires"
coords=1,l,99,4 9"
href="http://www.wildbillstruckparts.com:4000/tires.html"
target="_top"
onClick="alert(document.links[1].host)">
<area name="headlights"
coords=,51,51,99"
href="http://www.wildbillstruckparts.com:4000/headlights.html"
targe t="_top"
onClick="alert (document, links [2] .host) ">
<area name="fuses"
coords=1,51,99,99"
href="http://www.wildbillstruckparts.com:4000/fuses.html"
targe t="_top"
onClick="alert(document.links[3].host)">
</map>
<img src="partsBox.gif"
align="top"
height=00"
width=00"
usemap="#partsMap">
</center>
</body>
</html>
Area.hOStname JavaScript 1.1+. Script Ш
document.links[число].hostname
$S5| Свойство hostname объекта Area содержит только имя хоста, указанное в адресе URL.
Код из листинга 8.13 создает Web-страницу, содержащую описание авто-запчастей.
Пользователь может найти номера авто-запчастей, щелкнув мышью на изображении ин-
интересующей детали. При выборе определенной детали на экран выводится окно предуп-
предупреждения, содержащее строку "www.wildbillstruckparts.com", которая определяет значение
свойства hostname для выбранной ссылки. После закрытия окна предупреждения браузер
попытается загрузить указанный файл, который находится на фиктивном Web-сайте.
Листинг 8.13. Вывод на экран значения свойства hostname объекта Area
<html>
<body>
<centerXhl><u>3an4acTK к грузовым автомобилям</и></Ы>
<ЬЗ>Выбор изображения запчасти.</ЬЗ>
<map name="partsMap">
<area name="sparkplug"
coords="l,1,4В,48"
href="http://www.wildbillstruckparts.com:4000/sparkplugs.html"
target="_top"
onClick="alert(document.links[0].hostname)">
<area name="tires"
coords=1,1,99,49"
href="http://www.wildbillstruckparts.com:4000/tires.html"
target="_top"
onClick="alert(document.links[1].hostname)">
<area name="headlights"
coords=,51,51,99"
href="http://www.wildbillstruckparts.com:4000/headlights.html"
target="_top"
onClick="alert(document.links[2].hostname)">
Глава 8. Клиентская сторона 407
<area name="fuses"
coords=1,51,99,99"
href="http://www.wildbillstruckparts.com:4000/fuses.html"
target="_top"
onClick="alert(document.links[3].hostname)">
</map>
<img src="partsBox.gif"
align="top"
height=00"
width=00"
usemap="#partsMap">
</center>
</body>
</html>
Дгря hrAf JavaScript 1.1+, JScript 1.0+
Агеа.пгет Nav3+ |E3+ Opera3+
document.links[число].href
f Свойство href объекта Area содержит полный адрес URL, указанный в атрибуте href дес-
дескриптора <агеа>. Это свойство представляет собой строку, доступную как для чтения,
так и для записи.
Код из листинга 8.14 создает сайт, содержащий изображение спортивного автомобиля.
Выбор места расположения пользователя определяет то, с какого сайта будет загружаться
изображение. Это реализовано за счет изменения свойства href ссылки, которое, в зави-
зависимости от выбора пользователя, будет указывать на различные Web-сайты.
Листинг 8.14. Изменение значения свойства href объекта Area
<html>
<body>
<сепЪег><ЫХи>И5ображения спортивных aBTOMo6raie»</u></hl></center>
<ЬЗ>Шаг 1: Выберите автомобиль.</ЬЗ>
<form name="question">
<input name="carType"
type="radio"
checked
onClick="updateLinks(•LAMBORGHINI')">Lamborghini<br>
<input name="carType"
type="radio"
onClick="updateLinks('FERRARI1)">Ferrari
</form>
<ЬЗ>Шаг 2: Чтобы увидеть автомобиль, выберите его изображение .</Vi3>
<map name="carMap">
<area name="car"
coords="l,l,4B,4B"
href="http://www.cars.com:5678/cars.html?query=fastftLAMBORGHIHI"
targe t="_top">
</map>
<img src="cars.gif" align="top"
height=0" width=0" usemap="#carMap">
<br>
<script type="text/javascript" language="JavaScript">
// Обновление ссылки на изображение в соответствии с
// положением переключателей,
function updateLinks(car)
{
// Установка ссылки на сайт Lamborghini,
if(car=="LAMBORGHINI")
document.links[0].href="http://www.cars.com:567B/cars.html
k~?query=fast#LAMBORGHINI";
Часть III. Справочник по JavaScript
// Установка ссылки на сайт Ferrari,
if(car=="FERRARI")
document.links[0].href="http://www.sportscars.com:2020/
>-fastcars.html?query=fast#FERRARI";
)
// —>
</script>
</body>
</html>
Area.OnDblClick JavaScript 1.2+, Kcript W
onDblClick="команда"
Обработчик события onDblQick объекта Area вызывается при двойном щелчке левой кноп-
кнопкой мыши внутри области, заданной дескриптором <агеа>.
Код из листинга 8.15 создает Web-сайт магазина одежды, содержащий изображение ру-
рубашки. После двойного щелчка на рисунке обработчик события onDblQick выводит со-
сообщение о наличии на складе красных рубашек.
Листинг 8.15. Использоввние свойства onDblCfick объекта Area
<html>
<body>
<Ь2>ИеЬ-сайт магазина одежды</Ь2>
<map name="clothesMap">
<area name="redshirt"
coords=,1,48,48"
target="_top"
onDblClick="alert('Вам должны нравиться красные рубашки.')">
</map>
<img src="clothes.gif" align="top"
height=00" width=00" usemap="#clothesMap">
</body>
</html>
onMouseOut="команда"
Обработчик события onMouseOut объекта Area вызывается при перемещении указателя
мыши в область, заданную дескриптором <агеа>.
В листинге 8.16 создается сайт магазина одежды, содержащий изображение рубашки. После
щелчка на рисунке пользователь получает доступ к Web-сайту, на котором хранятся све-
сведения о красных рубашках. При перемещении указателя мыши за пределы области, бла-
благодаря использованию обработчика события onMouseOut, на экран выводится окно пре-
предупреждения с сообщением.
Листинг 8.16. Использование свойства onMouseOut объекта Area
<html>
<body>
<h2>Web-caira магазина одежды</Ь2>
<map name="clothesMap">
<area name="redshirt"
coords="l,l,48,48"
href="bttp://www.clothes.com/redShirts.html"
target="_top"
onMouseOut="alert('Вы не хотите перейти на Web-cau"r,
wHa котором содержатся сведения о красных рубашках?')">
</тар>
<img src="clothes.gif" align="top"
height=00" width=00" usemap="#clothesMap">
</body>
</html>
Глава 8. Клиентская сторона
Area.onMouseOver
onMouseOver="команда"
Обработчик события onMouseOver объекта Area вызывается при перемещении указателя
мыши поверх области, заданной дескриптором <агеа>.
^В листинге 8.17 создается сайт одежды с рисунком рубашки. При нажатии на рисунок па
экран выводится сайт, рассказывающий о красных рубашках. При перемещении указа-
указателя мыши внутри области благодаря использованию обработчика события onMouseOver
на экран выводится окно предупреждения, сообщающее о том, что произошло событие
MouseOver.
Листинг 8.17. Использование свойства onMouseOver объекта Area
<html>
<body>
<h2>Web-страница магазина одежды</Ь2>
Чтобы просмотреть сведения относительно продаваемой одежды выберите
ярлык:<br>
<map name="clothesMap">
<area name="sale"
coords=,1,100,100"
href="http://www.clothes.com/specials.html"
target="_top"
onMouseOver="alert('Произошло событие onMouseOver.')">
</map>
<img src="sale.gif" align="top"
height=00" width=00" usemap="#clothesMap">
</body>
</html>
Дгря nathnamp JavaScript 1.1+, JScript 1.0+
Area.patnname Na<;3+ |E3+ 0^era3+
document.links[число]. pathname
Свойство pathname объекта Area определяет путь к файлу, указанному в адресе URL,
включая начальную косую черту (/).
В листинге 8.18 создается Web-страница, содержащая сведения относительно авто-запча-
авто-запчастей. Причем пользователь может получить сведения относительно номеров авто-запчас-
авто-запчастей, щелкнув мышью на изображении интересующей его детали. При выборе определен-
определенной детали отображается окно предупреждения, которое содержит значение свойства
pathname для выбранной ссылки. После закрытия окна предупреждения браузер попыта-
попытается загрузить указанный файл.
Листинг 8.18. Отображение значения свойства pathname объекта Area
<html>
<body>
<center><hl><u>3an4acTH к грузовым автомобилям</и></Ы>
<ЬЗ>Выбор изображения запчасти.</h3>
<map name="partsMap">
<area name="sparkplug"
coords="l,1,48,48"
hre f="sparkplugs.html"
target="_top"
onClick="alert(document.links[0].pathname)">
<area name="tires"
coords=1,l,99,49"
href="tires.html"
target="_top"
onClick="alert(document.links[1].pathname)">
<area name="headlights"
coords=,51,51,99"
href="headlights.html"
4 \ О Часть III. Справочник по JavaScript
target="_top"
onClick="alert(document.links[2].pathname)">
<area name="fuses"
coords=1,51,99,99"
href="fuses.html"
target="_top"
onClick="alert(document.links[3].pathname)">
</map>
<img src="partsBox.gif"
align="top"
height=00"
width=00"
usemap="#partsMap">
</center>
</body>
</html>
Area.port JavaScript 1.1+. ^Script Ш
document.links[число] . port
$C& Свойство port объекта Area содержит лишь номер порта, указанный в URL.
Код из листинга 8.19 создает страницу авто-запчастей, которая дает возможность пользо-
пользователю найти номера деталей, щелкнув мышью на изображении интересующей детали.
При выборе определенной авто-запчасти на экран выводится окно предупреждения, со-
содержащее строку 000", которая представляет собой значение свойства port выбранной
ссылки. После закрытия окна предупреждения браузер попытается загрузить указанный
Web-сайт.
Листинг 8.19. Отображение значения свойства port объекта Area
<html>
<body>
<center><hl><u>3anacHbie части к грузовым ав-гоыобилям</и></Ы>
<ЬЗ>Выбор изображения запасной части.</h3>
<map name="partsMap">
<area name="sparkPlug"
coords=,1,48,48"
href="http://www.wildbillstruckparts.com:4000/sparkplugs.html"
target="_top"
onClick="alert(document.links[0].port)">
<area name="tires"
coords=1,1,99, 4 9-
hr ef="http: //www.wildbillstruckparts.com:4000/tires.html"
target="_top"
onClick="alert(document.links[1].port)">
<area name="headlights"
coords=,51,51,99"
href="http://www.wildbilIstruckparts.com:4000/headlights.html"
target="_top"
onClick="alert(document.links[2].port)">
<area name="fuses"
coords=1,51,99 , 99"
href="http://www.wildbillstruckparts.com:4000/fuses.html"
target="_top"
onClick="alert(document.links[3].port)">
</map>
<img src="partsBox.gif"
align="top"
height=00"
width=00"
usemap="#partsMap">
</center>
Глава 8. Клиентская сторона 4- I I
</body>
</html>
Area.protOCOl JavaScript 1.1+, ^Script 1.0+
document.links[число] . protocol
f Свойство protocol содержит протокол (http:, file:, ftp: и т.д.), указанный в URL, включая
конечное двоеточие (:).
L/S В листинге 8.20 под областью ссылки на экране выводится значение свойства protocol,
W^ равное http:.
Листинг 8.20. Использование свойства protocol объекта Area
<html>
<Ь2>ИеЬ-страница, определяющая цвета</п2>
<map name="colorMap">
<area name="greenArea"
coords="l,l,4 8,48"
href="http://www.green.com:5678/green.html?query=green#GREEN"
target="_top">
</map>
<img src="box4.gif" align="top"
height=00" width=00" usemap="#colorMap">
<script>
<! —
// Отображение на экране протокола, соответствующего данной ссылке.
document.write("protocol = ",document.links[0].protocol);
// —>
</script>
</html>
______ _________
document.links[число] . search
Свойство search объекта Area содержит строку поиска, указанную в URL, включая на-
начальный знак вопроса (?).
B листинге 8.21 создается Web-страница, содержащая описание авто-запчастей. Пользо-
ватель может найти номера деталей, щелкнув мышью на изображении интересующей
детали. При выборе детали на экран выводится окно предупреждения, которое содержит
значение свойства search выбранной ссылки. В приведенном примере это значение бу-
будет одним из следующих строк: "?sparkplugs", "?tires", "?headlights" или "?fuses". После зак-
закрытия окна предупреждения браузер попытается загрузить фиктивную страницу.
Листинг 8.21. Вывод на экран значения свойства search объекта Area
<html>
<body>
<center><hl><u>3anacHbie части к грузовым автомобиляи</и></Ы>
<ЬЗ>Выбор изображения авто-запчасти.</ЬЗ>
<map name="partsMap">
<area name="sparkplug"
coords="l,1,48,4В"
href="parts.html?sparkplugs"
target="_top"
onClick="alert(document.links[0].search)">
<area name="tires"
coords=1,l,99,49"
href="parts.html?tires.html"
target="_top"
onClick="alert(document.links[1].search)">
<area name="headlights"
coords="l,51,51,99"
href="parts.html?headlights.html"
412
Часть Hi. Справочник по JavaScript
target="_top"
onClick="alert(document.links[2].search)">
<area name="fuses"
coords=1,51,99,99"
href="parts.html?fuses.html"
target="_top"
onClick="alert(document.links[3].search)">
</map>
<img src="partsBox.gif"
align="top"
height=00"
width=00"
usemap="#partsMap">
</center>
</body>
</html>
JavaScript 1.1+, JScript 1.0+
Nav3+, IE3+, Opera3+
Area.target
document.links[число]. target
Свойство target объекта Area содержит имя окна или кадра, в котором будет выводить-
выводиться указанный адрес URL. Это свойство доступно как в режиме чтения, так и в режиме
записи.
из листинга 8.22 создает Web-страницу авто-запчастей, которая дает возможность
пользователю найти номера деталей, щелкнув мышью на изображении интересующей де-
детали. Значение свойства target для свеч зажигания и шин изменены. Это приводит к тому,
что информация отображается в новом окне браузера. Результат выбора изображения свечи
зажигания представлен на рис. 8.2.
Листинг 8.22. Изменение значения свойства target объекта Area
<html>
<body>
<center><hlXu>3anacHue части к грузовым ав>гоиобиляи</и></Ы>
</center>
<ЬЗ>Выбор изображения запасной части.</h3>
<map name="partsMap">
<area name="sparkPlug"
coords="l,l,48,4В"
href="#SPARKPLUGS"
target="_top">
Be -£<й View Fjvoites lads
j Lmks м Address ; ^j *•
Рисунок 8.2.
При щелчке на
изображении свечи
зажигания
открывается новое
окно
Запасные части к грузовым автомобилям
Выбор изображения заласкай части.
. Запасные части к грузовым автомобилям -
( Яе ЕЛ' 'ЙЬи, FsvonteE Ыи; tic '" '• l«*s
©
га
Снечн зажнгання
. SP93654
. SP34710
. SP19374
ЫК internet £... щЩщ
Свечн зажигания
. SP93654
. SP34710
. SP19374
, Дпяшресеченшйикстности
, Низкие
, Стандартные
Фары
Глава 8. Клиентская сторона 4- I о
<area name="tires"
coords=1,1,99,49"
href="#TIRES"
target="_top">
<area name="headlights"
coords=,51,51,99 "
href="^HEADLIGHTS"
targe t="_top">
<area name="fuses"
coords=1,51,99,99"
href="#FUSES"
targe t="_top">
</map>
<img src="partsBox.gif" align="top"
height=00" width=00" usemap="#partsMap">
<br>
<script type="text/javascript" language="JavaScript">
<! —
// Отображение информации о свечах зажигания и шинах в новом окне.
document.links[0].target="_blank"; // Свечи зажигания.
document.links[1].target="_blank"; // Шины.
// -->
</script>
<a name="SPARKPLUGS"Xh3>CBe4H эажигания</ЬЗХ/а>
l>
<li>SP93 654</li>
<li>SP34710</li>
<li>SPl9374</li>
<a name="TIRES"Xh3>lIlHHbi</h3X/a>
>
<11>Для пересеченной местности</1х>
<11>Ниэкие</11>
<1л.>Огандар'гные</1л.>
<a name="HEADLIGHTS"Xh3>-I>apbi</h3X/a>
l>
<1д.>Для ночной еэды</11>
<11>Стандартные</11>
<а name=" FUSES "ХЬЗ>Предохранители</ЬЗх/а>
>
<11>Красный</11>
<11>Желтый</11>
<11>Зеленый</11>
<11>Синий</1х>
</body>
</html>
Агря nnwatrhM JavaScript 1.2+
Area.unwaicnu Nav4+ NES3+
document.links[число]. unwatch(property)
Метод unwatch() объекта Area используется для прекращения отслеживания свойства, за-
заданного с помощью параметра property.
В листинге 8.23 приведен пример использования метода unwatch() для прекращения сле-
жения за свойством href объекта Area после изменения его значения на "hup://
www.toys.com".
Листинг 8.23. Пример использования метода unwatchO объекта Area
<html>
<Ь2>Универсальный магазин</Ь2>
Выберите отдел<Ьг>
414 Часть III. Справочник по JavaScript
<map name="storeMap">
<area name="toyArea"
coords="l,l,100,50"
href="toys.html"
target="_top"
<area name="clothesArea"
coords="l,50,100,100"
href="clothes.html"
target="_top"
</map>
<img src="menu.gif" align="top"
height=00" width=00" usemap="#storeMap">
<br><br>
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
<
document, write (id + " изменилось с " + oldValue + " на ") ;
document.write(newValue + "<br>");
return newValue;
)
// Начало отслеживания.
document.links[0].watch("href",alertme);
document.write("Первоначальное значение свойства href для
"оидела игрушек: ");
document.write(document.links[0].href + "<br>");
// Изменение значения свойства href.
document.links[0].href = "http://www.toys.com";
document.write("Новое значение свойства href для отдела игрушек: "
+ document.links[0].href + "<br>");
// Прекращение отслеживания.
document.links[0].unwatch("href",alertme);
// Повторное изменение значения свойства href.
document.links[0].href = "http://www.toysrus.com";
document.write("Окончательное значение свойства href для отдела
'■♦игрушек: ") ;
document.write(document.links[0]-href + "<br>");
// —>
</script>
</html>
JavaScript 1.2+
Nav4+,W
document.links[число]. watch(свойство,функция)
Метод watch() объекта Area используется для включения слежения за свойством, ука-
указанным в с помощью параметра свойство. При изменении параметра свойство после
вызова метода watch() выполняется функция, указанная с помощью параметра функиря
В листинге 8.24 приведен пример использования метода watch() для включения слеже-
слежения за свойством href объекта Area.
Листинг 8.24. Использование метода watch() объекта Area
<html>
<п2>Универсальный магаэин</Ь2>
Выбор отдела<Ьг>
<map name="storeMap">
<area name="toyArea"
coords="l,l,100,50"
href="toys.html"
target="_top"
<area name="clothesArea"
coords="l,50,100,100"
Глава 8. Клиентская сторона 4 I U
href="clothes.html"
target="_top"
</юар>
<img src="menu.gif" align="top"
height=00" width=00" usemap="#storeMap">
<br><br>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
{
document.write (id + " изменилось с " + oldValue + " на ") ;
document.write(newValue + "<br>");
return newValue;
}
// Начало отслеживания.
document.links[0].watch("href",alertme);
document.write("Первоначальное значение свойства href для
wотдела игрушек: ");
document.write(document.links[0].href + "<br>");
// Изменение значения свойства href.
document.links[0].href = "http://www.toys.com";
document.write("Новое значение свойства href для отдела игрушек: "
+ document.links[0].href + "<br>");
// —>
</script>
</html>
Rnttnn JavaScript 1.0+, JScript 1.0+
DUUO" Nav2+, IE3+, Opera3+
Основной объект клиентской части языка JavaScript.
f Объект Button представляет собой графическую кнопку, на которой может щелкнуть
пользователь для выполнения какого-либо действия. Кнопки определяются в качестве со-
составных частей формы с помощью дескриптора <input>, значение атрибута type которого
в HTML-документе установлено равным "button". После создания кнопок доступ к ним
в коде JavaScript осуществляется так же, как и доступ к любому другому элементу формы
(с помощью точечной нотации). Свойства, аргументы, методы и обработчики событий
объекта Button перечислены в табл. 8.4.
Таблица 8.4. Свойства, аргументы, методы и обработчики событий объекта Button
Тип
Аргумент
Свойство
Метод
Элемент
string
num
form
name
type
value
blur()
Описание
Строка, которая отображается на графическом представлении
кнопки.
Порядковый номер, который позволяет получить доступ к
кнопкам с помощью списка элементов формы.
Это свойство возвращает объект Form, в котором находится
кнопка.
Строка, которая указана в атрибуте name дескриптора <input>.
Строка, которая указана в атрибуте type дескриптора <input>.
Для объекта кнопки значение этой строки всегда равно
"button".
Строка, которая отображается на графическом представлении
КНОПКИ.
Этот метод отменяет выделение графического представления
кнопки.
416
Тип
Обработчик
события
Элемент
clickO
focus()
handle Event()
unwatch()
watch()
onBlur
onClick
onFocus
onMouseDown
onMouseUp
Часть III. Справочник по JavaScri|
Описание
Этот метод вызывает обработчик события onClick для кнопки.
Этот метод определяет область выделения для кнопки.
Этот метод передает событие соответствующему обработчику
событий кнопки.
Этот метод прекращает отслеживание свойства.
Этот метод устанавливает отслеживание свойства.
Этот обработчик вызывается при отмене выделения кнопки.
Этот обработчик вызывается при щелчке левой кнопкой мыши
Этот обработчик вызывается при выделении кнопки.
Этот обработчик вызывается при нажатии левой кнопки мыши
во время выполнения щелчка.
Этот обработчик вызывается при отпускании левой кнопки
мыши во время выполнения щелчка.
В листинге 8.25 с помощью дескриптора <input> создается кнопка. При щелчке на кнопке
в текстовом поле радом с кнопкой отображается ее имя.
Листинг 8.25. Создание кнопки с одновременным отображением имени
<html>
<Ь2>Свойство NAME кнопки</Ь2>
<form name="myForm">
<input type="button"
value="Ans того чтобы увидеть имя этой кнопки, нажмите здесь"
name="myBigButton"
onClick="displayButtonName()">
<input type="text"
name="textBox">
</form>
<script type="text/javascript" language="JavaScript">
// Эта функция отображает s текстовом поле имя кнопки..
function displayButtonNameО
// Отображение в текстовом поле имени кнопки.
document.myForm.textBox.value=document.myForm.myBigButton.name;
</script>
</html>
Button.blur() JavaScript 1.1+I[JScnpt1.0+
document.форма.кнопка.blur()
l Метод blur() отменяет установку фокуса для кнопки.
ПРЕДУПРЕЖДЕНИЕ
В Unix-версиях браузеров Navigator 2 и Navigator 3 метод Ыиг[]
не может применяться для работы с кнопкеми.
В листинге 8.26 для демонстрации выполнения выделения (установка фокуса) с помо-
помощью дескриптора <input> создаются две кнопки. Первая кнопка после щелчка на ней
Глава 8. Клиентская стороне 4 I /
сохраняет фокус, а вторая за счет использования метода Ыиг(), после щелчка на ней те-
теряет фокус. Метод Ыиг() используется редко, но, тем не менее, в некоторых случаях
без него не обойтись.
Листинг 8.26. Снятие фокуса для кнопки с помощью метода Ыиг()
<html>
<Ь2>Игры с установкой фокуса для кнопки</Ь2>
Щелкните на двух кнопках. Обратите внимание, что после щелчка на
второй кнопке она теряет фокус.
<form nazne="myForm">
<input type="button"
value="fl сохраняю фокус после щелчка"
name="buttonl"Xbr>
<input type="button"
value="H теряю фокус после щелчка"
name="button2"
onClick="removeFocus()">
</form>
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция убирает фокус кнопки button2.
function removeFocus()
{
// Убирает фокус кнопки button2.
document.myForm.button2.blur();
}
// —>
</script>
</html>
Button.dickO JavaScript 1.0+, Script 1.0+
document.форма.кнопка. click()
Ц Метод click() имитирует событие click.
В листинге 8.27 с помощью дескриптора <input> создаются две кнопки. После щелчка на
первой кнопке отображается окно предупреждения. Щелчок на второй кнопке приводит
к тому, что вызывается обработчик события onCIick первой кнопки, а на экране отобра-
отображается то же окно предупреждения, что и при щелчке на первой кнопке.
Листинг 8.27. Имитация события click с помощью метода click()
<html>
<form name="myForm">
<input type="button"
уа1ие="Отображение окна предупреждения"
name="buttonl"
onClick="alert('Вы щелкнули на первой кнопке.')"><br>
<input type="button"
уа1ие="Имитация щелчка на первой кнопке"
name="button2"
onClick="clickFirstButton()">
</form>
<script type="text/javascript" language="JavaScript">
<! —
//Эта функция вызывает обработчик события onclick для первой кнопки
function clickFirstButton()
{
// Имитация щелчка на первой кнопке.
document.myForm.buttonl.click();
}
// —>
</script>
</html>
418 Часть III. Справочник по JavaScript
Blltton.fOCUSO JavaScript 1.1+. Script Ш
document. форма.кнопка. focus()
i Метод focus() переводит фокус на кнопку, не вызывая для кнопки обработчик собы-
события onFocus.
ПРЕДУПРЕЖДЕНИЕ
В Unix-версиях браузеров Navigator 2 и Navigator 3 метод
focus() с кнопками не работает.
В листинге 8.28 в целях демонстрации установки фокуса создаются две кнопки. В резуль-
результате щелчка на второй кнопке фокус перемещается на первую кнопку, а не остается на
второй кнопке (благодаря использованию метода focus()).
Листинг 8.28. Перенос фокуса на кнопку с помощью метода focus()
<html>
<Ь2>Перенос фокуса между кнопками</Ь2>
Щелкните на обоих кнопках. Обратите внимание, что при щелчке на
второй кнопке фокус перемещается на первую кнопку.
<form name="myForm">
<input type="button"
value="H сохраняю фокус после щелчка"
name="bu tton1"><br>
<input type="button"
value="H теряю фокус после щелчка"
name="button2"
onClick="moveFocus()">
</form>
<script type="text/javascript" language="JavaScript">
<!--
// Эта функция переносит фокус на кнопку buttonl.
function moveFocus()
(
// Перенос фокуса на кнопку buttonl.
document.myForm.buttonl.focus();
}
// —>
</script>
</html>
Button.form
document. форма.кнопка. form
Свойство form позволяет получить доступ к родительскому объекту Form для кнопки.
В листинге 8.29 за счет того, что выражение в операторе if равно true, подтверждается, что
свойство form кнопки содержит родительский объект формы. В окне браузера выводится пред-
предложение "Значение свойства form кнопки myButton соответствует объекту myForm".
Листинг 8.29. Получение доступа к родительскому объекту при помощи
свойства form кнопки.
<html>
<form name="myForm">
<input type="button"
value="Большая кнопка"
name="myButton">
</form>
<script type="text/javascript" language="JavaScript">
//Соответствует ли родительский объект кнопки myButton объекту myForm?
if(document.myForm.myButton.form == document.myForm)
alert("Значение свойства form кнопки myButton соответствует
"♦объекту myForm"); // Равен
Глава 8. Клиентская сторона 4 I У
else
alert("Значение свойства form кнопки myButton HE равно
'•объекту myForm"); // Не равен
// — >
</script>
</html>
Button.hanclleEvent() JavaScriNav4-45
document:.форма.кнопка.handleEvent(событие)
f Метод handlcEvent() предоставляет возможность вызвать обработчик события кнопки, даже
если пользователь не инициировал событие. Аргумент событие определяет объект Event,
соответствующий вызываемому обработчику событию.
Код листинга 8.30 предоставляет информацию о продаваемом автомобиле. При щелчке
на кнопках с надписями "Двери", "Двигатель" или "Коробка передач", в текстовые поля
выводится соответствующая информация. Текстовые поля можно очистить с помощью
кнопки "Очистить всю информацию" (Clear All Info). В отличие от всех других кнопок,
кнопка "Показать всю информацию" (Show All Info) с помощью метода handle£vent()
передает событие click остальным кнопкам. Таким образом, текстовые поля заполняются
с помощью кнопок.
Листинг 8.30. Обработка события click с помощью метода handleEventO
<html>
<сепЬег><Ь2>Продажа автомобилей! </h2x/center>
Чтобы получить дополнительную информацию щелкните на кнопке:
<form name="myForm">
<input type="button"
value="Двери"
name="doorsButton"
onClick="document.myForm.doorsBox.value='4 двери">
<input type="text"
name="doorsBox"><br>
<input type="button"
value="Двигатель"
name="engineButton"
onClick="document.myForm.engineBox.values' 4 цилиндра">
<input type="text"
name= " engineBox " Xbr >
<input type="button"
value="Коробка передач"
name="transmissionButton"
onClick="document.myForm.transmissionBox.value='ручная'">
<input type="text"
name=" transmissionBox "Xbr>
<input type="button"
value="Очистить всю информацию"
name="clearAllBu tton"
onClick="clearAll()">
<input type="button"
value="Показать всю информацию"
name="showAHButton"
onClick="showAll(event)">
</form>
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция очищает все текстовые поля.
function clearAll()
{
document.myForm.doorsBox.value="";
document.myForm.engineBox.value="";
document.myForm.transmissionBox.value="";
420 Часть III. Справочник по JavaScript
// Эта функция передает событие Click всем остальным кнопкам.
// Каждая кнопка вносит в текстовые поля свою информацию,
function showAll(event)
{
document.myForm.doorsButton.handleEvent(event);
document.myForm.engineButton.handleEvent(event);
document.myForm.transmissionButton.handleEvent(event);
}
// —>
</script>
</html>
Button.name
document. имя.кнопка. name
Свойство name позволяет получить доступ к атрибуту name, указанному в дескрипторе
<input>. Это свойство доступно только в режиме чтения.
В листинге 8.31 создается кнопка. При щелчке на кнопке отображается значение ее свой-
свойства name.
Листинг 8.31. Определение имени кнопки с помощью свойства пате
<html>
<form name="myForm">
<input type="button"
value="BonbmaH кнопка"
name="myButton"
onClick="displayMessage()">
</form>
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция отображает окно предупреждения с именем кнопки.
function displayMessage()
{
// Создание строки с именем кнопки.
var alertstring = String("Вы нажали кнопку с именем ") ;
alertString += document.myForm.myButton.name;:
// Создание окна предупреждения.
alert(alertString);
}
// — >
</script>
</html>
Button.OnBlur JavaScript 1.1+. Script Ш
onBlur="команда"
^Обработчик события on Blur указывается в дескрипторе <input>. Он определяет, какая
• операция будет выполняться при потере кнопкой фокуса.
В листинге 8.32 обработчик события on Blur используется для отображения окна предуп-
предупреждения при потере кнопкой фокуса.
Листинг 8.32. Использование обработчика события onBlur для отображения окна
предупреждения при потере кнопкой фокуса
<html>
<form name="myForm">
<input type="button"
уа1ие="Болыиая кнопка"
name="myButton"
onBlur="alert(•Произошло событие Blur•)">
</form>
</html>
Глава 8. Клиентская сторона
421
ButtOH.OnCliCk
onClick="команда"
Обработчик события onClick указывается в дескрипторе <input>. Он определяет, какая
операция будет выполняться после щелчха на кнопке.
В листинге 8.33 обработчик события onClick используется для отображения окна предуп-
режцения после щелчка на кнопке.
Листинг 8.33. Использование обработчика события onClick для отображения окна
предупреждения после щелчка на кнопке
<html>
<form name="myForm">
<input type="button"
value="Большая кнопка"
name="myButton"
onClick="alert('Произошло событие Click1)">
</form>
</html>
Button.OnFoCUS JavaScript 1.1+. ^Script 10+
onFocus="команда"
Обработчик события onFocus указывается в дескрипторе <input>. Он определяет, какая
операция будет выполняться при получении кнопкой фокуса.
f В листинге 8.34 обработчик события onFocus используется для отображения окна предуп-
режцения при получении кнопкой фокуса.
Листинг 8.34. Использование обработчика события onFocus для аывода на зкран
окна предупреждения при получении кнопкой фокуса
<html>
<form name="myForm">
<input type="button"
value="Большая кнопка"
name="myButton"
onFocus="alert('Произошло событие Focus')">
</form>
</html>
Button.OnMouseDown JavaScript 10+. Script 10+
onMouseDown="команда"
Обработчик события onMouseDown указывается в дескрипторе <input>. Он определяет,
какая операция будет выполняться после щелчка левой кнопкой мыши.
В листинге 8.35 обработчик события onMouseDown используется отображения окна пре-
дупреждения после щелчка левой кнопкой мыши.
Листинг 8.35. Использование обработчика события onMouseDown для отображения
окна предупреждения после щелчка левой кнопкой мыши.
<html>
<form name="myForm">
<input type="button"
уа1ие="Большая кнопка"
name="myButton"
onMouseDown="alert('Произошло событие MouseDown')">
</form>
</html>
Button.OnMoUSeUp JavaScript 10+. Kcript 10+
onMouseUp="команда"
422 Часть III. Справочник по JavaScript
йс& Обработчик события onMouseUp указывается в дескрипторе <input>. Он определяет, какая
«< операция будет выполняться после отпускания левой кнопки мыши при установке кур-
курсора на кнопку.
В листинге 8.36 обработчик события onMouseUp используется для вывода окна предупреж-
предупреждения после отпускания левой кнопки мыши при нахождении курсора мыши на кнопке.
Листинг 8.36. Использование обработчика события onMouseUp для вывода на
зкран окна предупреждения в момент отпускания левой кнопки мыши (при
установке курсора мыши на кнопке)
<html>
<form name="myForm">
<input type="button"
value="Большая кнопка"
name="myButton"
onMouseUp="alert('Произошло событие MouseUp')">
</form>
</html>
JavaScript 1.1+, JScript 1.0+
№3 |E3 O3
document.форма.кнопка.type
Свойство type обеспечивает доступ к атрибуту type кнопки. Это свойство доступно
только для чтения и всегда содержит строку "button".
В листинге 8.37 создаются кнопки, которые используются для выполнения математичес-
математических операций. Свойство type используется для определения количества кнопок на стра-
странице. Затем вычисленное число выводится в сообщении в нижней части страницы.
Листинг 8.37. Использование свойства type кнопки.
<html>
<h2>The Math Page</h2>
<form name="mathForm">
<input type="button"
name=plus2"
value=" D + 2) "
onClick="document.mathForm.answer.value='D + 2) = 6'">
<input type="button"
name=minus2"
value="D - 2) "
onClick="document.mathForm.answer.value='D - 2) = 2'"><hr>
Ответ:
<input type="text"
name="answer">
</form>
<script type="text/javascript" language="JavaScript">
// Создание счетчика, который будет определять количество
// кнопок на форме mathForm.
var buttonCount = О;
// Цикл по всем элементам формы mathForm.
for(var x=0; x<document.mathForm.length; x++)
// Это кнопка?
if(document.mathForm.elements[x].type=="button")
buttonCount++; // Увеличения значения счетчика
// buttonCount на единицу.
// Отображение количества кнопок на форме mathForm.
document.write("Для решения математической задачи, пожалуйста,
'■♦выберите одну из ",buttonCount) ; // 2 кнопки,
document.write(" кнопок.");
</script>
</html>
Глава В. Клиентская сторона 4си
Button.unwatchO ^
document. форма.кнопка. unwatch(свойство)
Метод unwatch() объекта Button используется для прекращения отслеживания свойства,
указанного в параметре свойство.
В листинге 8.38 приведен пример использования метода unwatch() для прекращения сле-
слежения за свойством value объекта Button после замены значения текста кнопки на "Синий".
ПРЕДУПРЕЖДЕНИЕ
Ошибка, связанная с методами watch() и unwatch[) предотв-
предотвращает перерисовку твкста не кнопке, даже не смотря на то, что значение кнопки было
изменено.
Листинг 8.38. Использование метода unwatchf) объекта Button
<html>
<form name="colorForm">
<input type="button" name="colorButton" value="KpacHbiu">
</form>
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document, write (id + " изменилось с " + oldValue + " на ") ;
document.write(newValue + "<br>");
return newValue;
\
II Начало отслеживания
document.colorForm.colorButton.watch("value",alertme);
document.write("Первоначальное значение текста кнопки: ") ;
document.write(document.colorForm.colorButton.value + "<br>");
// Изменение значения текста кнопки.
document.colorForm.colorButton.value = "Синий";
document.write("Новое значение текста кнопки: ");
document.write(document.colorForm.colorButton.value + "<br>");
// Прекращение слежения
document.colorForm.colorButton.unwatch("value");
// Изменение значения текста кнопки.
document.colorForm.colorButton.value = "Зеленый";
document.write("Окончательное значение текста кнопки: ");
document.write(document.colorForm.colorButton.value + "<br>");
// —>
</script>
</html>
document. форма.. кнопка. value
Свойство value предоставляет доступ к атрибуту value кнопки. Это свойство представля-
представляет собой строку, доступную только для чтения, которая выводится на графическом пред-
представлении кнопки.
В листинге 8.39 свойство value используется для изменения текста на кнопке. Для изме-
изменения текста введите в текстовое поле свое имя и щелкните на кнопке Customize the
Button (Настроить вид кнопки). Текст кнопки, расположенной в нижней части документа,
изменится.
Листинг 8.39. Изменение текста на кнопке с помощью свойства value
<html>
<Ь2>Настройка вида кнопки</Ь2>
4 С. 4 Часть III. Справочник по JavaScript
<form name="myForm">
Please enter your name:
<input type="text"
name="nameBox">
<input type="button"
name="customizeTheButton"
value="Настроить вид кнопки"
onClick="customizeButton()"><br>
<input type="button"
name="theButton"
value="Нажмите "
onClick="displayAlert()">
</form>
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция изменяет текст на кнопке,
function customizeButton()
{
//Создание строки, содержащей имя, введенное в текстовое поле.
var aString = document.myForm.nameBox.value;
aString += "Нажмите эту кнопку!";
//Изменить текст на кнопке.
document.myForm.theButton.value=aString;
}
// Эта функция создает окно предупреждения,
function displayAlert()
{
// Создание окна предупреждения,
alert("Вы нажали кнопку.");
}
// —>
</script>
</html>
Button watrhH JavaScript 1.2+
Bimon.waicnu Nav4+ NES3+
document, form.button, watch(свойство,функция)
^& Метод wateh() объекта Button используется для включения отслеживания свойства, ука-
■* занного в параметре свойство. При изменении параметра свойство после вызова метода
watch() вызывается функция, указанная в параметре функция.
ьЛ В листинге 8.40 приведен пример использования метода watch() для включения отсле-
£^ живания свойства, указанного с помощью параметра свойство объекта Button.
ПРЕДУПРЕЖДЕНИЕ
Ошибка, связанная с методами watch[) и unwatchO, предотв-
предотвращает перерисовку текста на кнопке, несмотря не то, что имя кнопки быпо изменена.
Листинг 8.40. Использование метода watch() объекта Button
<html>
<form name="colorForm">
<input type="button" name="colorButton" value="Красный">
</form>
<script type="text/javascript" language="JavaScript">
<!--
function alertme(id,oldValue,newValue)
{
document.write (id + " изменилось с " + oldValue + " на ");
document.write(newValue + "<br>");
return newValue;
}
// Начало отслеживания.
document.colorForm.colorButton.watch("value",alertme);
document.write("Первоначальное значение теста кнопки: ");
Глава 8. Клиентская сторона
425
document.write(document.colorForm.colorButton.value + "<br>");
// Изменения текста надписи на кнопке.
document.colorForm.colorButton.value = "Синий";
document.write("Новое значение теста кнопки: ");
document.write(document.colorForm.colorButton.value + "<br>");
// —>
</script>
</html>
JavaScript 1.0+, JScript 1.0+
N|-v2+ lE3+ Opera3+
Основной объект клиентской части языка JavaScript.
\ Объект Checkbox представляет собой графический флажок, который можно установить или
отменить его установку. Флажки создаются в качестве составных частей формы с помо-
помощью дескриптора <input>, значение атрибута type которого в HTML-документе установ-
установлено, равным checkbox. После создания доступ к флажку из JavaScript-коде можно по-
получить как к элементу формы, используя точечную нотацию. Флажки с одинаковыми
именами объединяются в группу. При этом в рамках группы доступ к отдельным флаж-
флажкам осуществляется как к элементам массива, т.е. с использованием скобок. Аргументы,
свойства, методы и обработчики событий объекта Checkbox перечислены в табл. 8.5.
Таблица 8.5. Аргументы, свойства, методы и обработчики событий объекта Checkbox
Тип
Элемент
Описание
Аргумент num1
Свойство
Порядковый номер, который предоставляет доступ к флажкам с
помощью списка элементов формы.
num2 Порядковый номер, который предоставляет доступ к отдельным
флажкам в группе.
checked
Булево значение, которое определяет, установлен ли флажок.
defaultChecked Булево значение, которое содержит начальное состояние
флажка. Это значение устанавливается с помощью атрибута
checked.
form
Это свойство возвращает родительский объект Form флажка.
name Строка, которая указана в атрибуте name дескриптора <input>.
type Строка, которая указана в атрибуте type дескриптора <input>.
Для объекта Checkbox значение этой строки всегда равно
"checkbox".
value
Значение, которое возвращается при передаче формы.
Метод
Ыиг()
Этот метод устраняет фокус из графического представления
флажка.
click()
Этот метод вызывает обработчик события onClick для флажка.
focus()
Этот метод устанавливает фокус для флажка.
handleEvent() Этот метод передает событие соответствующему обработчику
событий флажка.
unwatch()
Этот метод прекращает отслеживание свойства.
watch()
Этот метод устанавливает отслеживание свойства.
Обработчик onBlur
события
Этот обработчик вызывается при перемещении фокуса
от флажка.
426
Тип
Элемент
onClick
onFocus
Описание
Этот обработчик вызывается
Этот обработчик вызывается
флажок.
Часть III. Справочник по JavaSci|
при выборе флажка.
при перемещении фокуса на
из листинга 8.41 используется для создания страницы заказа гамбургера. Флажки ис-
используются для выбора начинки гамбургера. После щелчка на кнопке Submit Order (За-
(Заказать) отображается окно предупреждения с указанием выбранных начинок.
Листинг 8.41. Создание флажков и использование некоторых их свойств
<html>
<Ь2>Заказ гамбургера</Ь2>
Шаг 1: Пожалуйста, выберите начинку гамбургера:<Ьг>
<form name="orderForm">
Салат-латук
<input type="checkbox"
value="салат-латук"
name=" lettuceCB "Xbr>
Сыр
<input type="checkbox"
value="сыр"
name="cheeseCB"Xbr>
Помидоры
<input type="checkbox"
value="noMMflopbi"
name=" tomatoCB " Xbr >
Шаг 2:
<input
</form>
<script
type="button"
value="Заказать"
name="о гderButton"
onClick="submitOrder()">
type="text/javascript" language="JavaScript">
// Эта функция создает окно предупреждения,
// в котором отображаются выбранные начинки,
function submitOrder()
{
// Создание строки, которая будет выводиться
// в окне предупреждения.
var alertString = String("Заказ: гамбургер");
if(document.orderForm.lettuceCB.checked == true)
alertString += " с салатом-латуком "; // Добавить
if(document.orderForm.cheeseCB.checked == true)
alertString += "с сыром "; // Добавить
if(document.orderForm.tomatoCB.checked == true)
alertString += "с помидорами "; // Добавить
// Создание окна предупреждения,
alert(alertString);
салат-лагук
сыр
помидоры
</script>
</html>
Checkbox. blur()
document, форма.флажок. Ыиг()
ffck Метод Ыиг() убирает фокус из графического представления флажка.
JavaScript 1.1+, JScript 3.0+
Nav3+, IE4+
ПРЕДУПРЕЖДЕНИЕ
В Unix-варсиях браузеров Navigator 2 и Navigator 3 метод Ыиг()
для флажков не работает.
Глава 8. Клиентская сторона 4 С. /
В листинге 8.42 с помощью дескриптора <input> создаются флажки. Первый флажок после
щелчка на нем сохраняет фокус, а второй флажок после щелчка на нем за счет исполь-
использования метода Ыиг() теряет фокус. Не удивляйтесь, если в данном примере не прояв-
проявляется особая разница между флажками. В некоторых браузерах невозможно отличить фла-
флажок, для которого установлен фокус, от флажка, для которого фокус не установлен.
Поэтому метод Ыиг() может оказаться бесполезным.
Листинг 8.42. Перенос фокуса из флажка с помощью метода blur()
<html>
<Ь2>Переыещение фокуса между флажками</Ь2>
Установить оба флажка. Обратите внимание, что после установки
второго флажка
он теряет фокус.
<form name="myForm">
Я сохраняю фокус после установки
<input type="checkbox"
name="checkBoxl"Xbr>
Я теряю фокус после щелчка
<input type="checkbox"
name="checkBox2"
onClick="removeFocu3()">
</form>
<script type="text/javascript" language="JavaScript">
// Эта функция убирает фокус из флажка checkBox2.
function removeFocus()
{
// Убирать фокус от кнопки checkBox2.
document.myForm.checkBox2.blur();
>
// — >
</script>
</html>
Phprkhnv rhprkArt JavaScript 1.0+, JScript 3.0+
cneckbox.checked ^^ (e4+ ^^
document, форма.флажок. checked
| Свойство checked определяет текущее состояние флажка. Поскольку это свойство пред-
представляет собой булево значение, доступное как для чтения, так и для записи, состоя-
состояние флажка можно модифицировать, изменяя это свойство.
Код из листинга 8.43 предлагает пользователю выбрать количество дверей, который он
хочет иметь в своей новой машине. При передаче заказа анализируется состояние флаж-
флажков, а также определяется какое количество дверей выбрано (если один из флажков ус-
установлен). Если установлены оба флажка, состояние флажков сбрасывается за счет изме-
изменения свойства checked.
Листинг 8.43. Изменение свойства checked для флажка
<html>
<Ь2>Бланк покупки автомобиля</Ь2>
Шаг 1: Пожалуйста, выберите количество дверей заказываемого
автомобиля:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="door4">4 двери<Ьг>
<input type="checkbox"
name="door2">2 двери<Ьг>
Шаг 2:
<input type="button"
уа1ие=аказать"
name="orderBu tton"
onClick="submitOrder()">
</form>
428
Часть ill. Справочник по JavaScript
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция создает окно предупреждения,
// в котором указывается какое количество дверей было выбрано.
function submitOrder()
{
// Проверить, установлены ли оба флажка.
if((document.orderForm.door4.checked == true) &&
(document.orderForm.door2.checked = true))
{
// Создание окна предупреждения.
alert("Вы выбрали два различных значения для количества
wдверей. Выберите этот параметр снова.");
// Отмена установки обоих флажков,
document.orderForm.door4.checked = false;
document.orderForm.door2.checked = false;
}
// Проверка того, установлен ли хотя бы один флажок,
else if((document.orderForm.door4.checked == false) &&
(document.orderForm.door2.checked == false))
(
// Создание окна предупреждения.
alert("Вы не выбрали количество дверей! Пожалуйста,
wBu6epHTe количество дверей.");
}
// Отображение содержимого заказа на автомобиль,
else
{
// Создание строки, выводимой в окне предупреждения,
var alertstring = String("Заказ: Автомобиль с ");
if(document.orderForm.door4.checked == true)
alertstring += дверьми."; // Добавить в строку 4 двери
if(document.orderForm.door2.checked == true)
alertstring += дверьми."; // Добавить в строку 2 двери
// Создание окна предупреждения,
alert(alertstring);
</script>
</html>
Phprkhny rlirWH JavaScript 1.1+, JScript 3.0+
unecKDox.ciicku №ну3+ (Е4+ онрега5+
document.форма.флажок. click()
& Метод click() имитирует событие click. При использовании данного метода изменяется
значение свойства clicked.
В листинге 8.44 пользователь выбирает опции для нового автомобиля. Если он выбирает
опцию "Диски из магниевого сплава" на экране появляется окно предупреждения с со-
сообщением "Диски из магниевого сплава выглядят великолепно!". При выборе опции
"Спортивная комплектация" пользователь получает сообщение, в котором говорится, что
спортивная комплектация включает диски из магниевого сплава. Кроме этого сообщения,
благодаря использованию метода click(), выводится сообщение "Диски из магниевого
сплава выглядят великолепно!".
Листинг 8.44. Использование метода click() для флажка.
<html>
<Ь2>Бланк покупки автомобиля</Ь2>
Шаг 1: Пожалуйста, выберите параметры заказываемого автомобиля:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="alloy"
onClick="alert('Диски из магниевого сплава выглядят
wвеликолепно!')">Диски из магниевого сплава
Глава 8. Клиентская сторона
<Ьг>
<input type="checkbox"
name="sporty"
onClick="displayNote()">Спортивная комплектация<Ъг>
Шаг 2:
<input type="button"
value="Заказать"
name= " orderBu tton "
onClick="alert('Ваш заказ принят')">
</form>
<script type="text/javascript" language="JavaScript">
// Эта функция вызывает другой обработчик события.
function displayNote()
{
if(!document.orderForm.alloy.checked)
{
// Сообщить пользователю, что спортивная комплектация
-»включает диски из сплава.
alert("Спортивная комплектация включает диски из сплава")
// Используя метод click() вывести на экран сообщение
wo дисках из магниевого сплава,
document.orderForm.alloy.click();
</script>
</html>
Checkbox.defaultChecked JavaScript 1.0+. JScript 3.0+
document .форма.флажок. defaultChecked
Свойство defaultChecked содержит начальное состояние флажка, указанное в атрибуте
checked дескриптора <input>. Поскольку данное свойство содержит только начальное со-
состояние флажка, оно представляет собой булево значение, доступное только для чтения.
В листинге 8.45 свойство defaultChecked используется для установки флажков количества
дверей в их начальное состояние.
Листинг 8.45. Установка флажков в начальное состояние с помощью
свойства defaultChecked
<html>
<Ь2>Бланк заказа автомобиля</Ь2>
Шаг 1: Пожалуйста, выберите количество дверей заказываемого
автомобиля:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="door4">4 двери<Ьг>
<input type="checkbox"
name="door2"
checked>2 двери<Ьг>
Шаг 2:
<input type="button"
уа1ие=аказать"
name="orderButton"
onClick="alert('Ваш заказ принят')">
<input type="button"
value="Сбросить флажки"
name="resetButton"
onClick="resetCheckboxes()">
</form>
<script type="text/javascript" language="JavaScript">
Часть III. Справочник по JavaScript
// Эта функция возвращает флажки в их исходные состояния.
function resetCheckboxes()
{
//Установить начальное состояние с помощью свойства defaultchecked
document.orderForm.door4.checked =
document.orderForm.door4.defaultchecked;
document.orderForm.door2.checked =
document.orderForm.door2.defaultchecked;
}
// — >
</script>
</html>
Checkbox.foCUSQ JavaScript 1.0+. JScript 3.0+
document.форма.флажок. focus()
Метод focus() переносит фокус на флажок, не вызывая обработчика события onFocus
флажка.
ПРЕДУПРЕЖДЕНИЕ
В Unix-вврсиях браузеров Navigator 2 и Navigator 3 метод
focus() для флажков не работает.
В листинге 8.46 с помощью дескриптора <input> создаются две кнопки. Выберите фла-
флажок Option 1 (Опция 1), а затем флажок Option 2 (Опция 2). И, наконец, щелкните на
кнопке Move Focus (Переместить фокус), которая переносит фокус со второго флажка на
первый. Не удивляйтесь, если в данном примере вы не увидите разницы между флаж-
флажками. В некоторых браузерах нельзя отличить флажок, для которого установлен фокус,
от флажка, для которого фокус не установлен. Поэтому метод focus() может оказаться
бесполезным.
Листинг 8.4Б. Перенос фокуса на флажок с помощью метода focus().
<html>
<Ь2>Перемещение фокуса между флажками</Ь2>
Установить оба флажка, а затем для переноса фокуса на первый
флажок нажмите кнопку.
<form name="myForm">
<input type="checkbox"
name="checkBoxl">Олция 1<Ьг>
<input type="checkbox"
пате="сЬескВох2">Опция 2<br>
<input type="button"
name="focusButton"
value="Перевести фокус"
onClick="moveFocus()">
</form>
<script type="text/javascript" language="JavaScript">
<!--
// Эта функция переносит фокус на флажок checkBoxl.
function moveFocus()
<
// Перенос фокуса на флажок checkBoxl.
document.myForm.checkBoxl.focus() ;
}
// — >
</script>
</html>
Phprkhnv fnrm JavaScript 1.0+, JScript 3.0+
Checkbox.form NHy2+ |E4+ онрега3+
document, форма.флажок. form
Свойство form позволяет получить доступ к родительскому объекту Form флажка.
Глава 8. Клиентская сторона 43 I
В листинге 8.47 за счет того, что выражение в операторе if равно true, подтверждается,
что свойство form флажка содержит родительский объект Form.
Листинг 8.47. Получение доступа к родительскому объекту Form флажка
<html>
<form name="myForm">
<input type="checkbox"
value="flA"
name="myCheckBox"
checked>
</form>
<script type="text/javascript" language="JavaScript">
// Соответствует ли родительский объект флажка myCheckBox
// объекту myForm?
if(document.myForm.myCheckBox.form == document.myForm)
alert("Значение свойства form флажка myCheckBox
*• соответствует объекту myForm");
else
alert("Значение свойства form флажка myCheckBox HE
wсоответствует объекту myForm");
// —>
</script>
</html>
Checkbox.handleEvent() JavaScript^.2-1.3
document.форма.флажок. handleEvent(событие)
& Метод handleEvent() предоставляет возможность вызвать обработчик события флажка, даже
если пользователь не инициировал событие. Аргумент событие указывает объект Event,
который соответствует вызываемому обработчику события.
В листинге 8.48 пользователю предлагается выбрать двигатель для приобретаемого им ав-
автомобиля. Если пользователь выбирает двигатель V6 F-цилиндровый), на экран выво-
выводится сообщение о том, что двигатель V6 очень мощный. Если выбран 4-цилиндровый
двигатель, на экран выводится предложение рассмотреть возможность использования
двигателя V6. Метод handleEvent() передает первому флажку событие click. Это приводит
к тому, что на экране появляется сообщение о двигателе V6.
Листинг 8.48. Передача событий флажкам с помощью метода handleEventf)
<html>
<Ь2>Бланк заказа автомобиля</Ь2>
Шаг 1: Пожалуйста, выберите тип двигателя для заказываемого
автомобиля:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="v6"
onClick="alert('Двигатель V6 очень мощный•')">V6<br>
<input type="checkbox"
name="cylinder4"
onClick="displayNote(event)">4 цилиндра<Ьг>
Шаг 2:
<input type="button"
value="Заказать"
name="orderButton"
onClick="alert('Ваш заказ принят')">
</form>
<script type="text/javascript" language="JavaScript">
// Эта функция передает событие click другому флажку
// с помощью метода handleEvent.
432 Часть III. Справочник по JavaScript
function displayNote(event)
{
/ / Вывести сообщение о двигателе V6.
alert("Вы рассматривали возможность заказа двигателя V6?");
// Передать событие первому флажку.
document.orderForm.v6.handleEvent(event);
>
// —>
</script>
</html>
Thprkhny пяшр JavaScript 1.0+, JScript 3.0+
Checkbox, name ^2+ |м+ ^^
document. форма.флажок. name
# Свойство name позволяет получить доступ к атрибуту name для флажка. Это свойство до-
доступно только в режиме считывания.
В листинге 8.49 свойство name флажков используется для отображения на экране выб-
выбранного типа двигателя.
Листинг 8.49. Отображение на экране имени флажка с помощью свойства name
<html>
<Ь2>Бланк заказа грузового автомобиля</Ь2>
Шаг 1: Пожалуйста, выберите тип двигателя для заказываемого
автомобиля:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="V6"
onClick="duplicateCheck(V6,VB)">V6<br>
<input type="checkbox"
name="V8"
onClick="duplicateCheck(V8,V6)">VB<br>
Шаг 2:
<input type="button"
value="Заказать"
name="orderButton"
onClick="submitOrder()">
</form>
<script type="text/javascript" language="JavaScript">
<! —
//Эта функция использует свойство name для указания выбранных опций
function submitOrder()
{
//Создание строки,которая будет отображаться в окне предупреждения
var alertString = String("Вы выбрали двигатель ") ;
// Определение типа выбранного двигателя,
if(document.orderForm.V6.checked == true)
{
alertString += document.orderForm.V6.name; // Отображение
/ / двигателя V6.
alert(alertString);
}
else if(document.orderForm.V8.checked == true)
{
alertString += document.orderForm.VB.name; // Отображение
/ / двигателя V8.
alert(alertString);
>
else
alert("Вы не выбрали тип двигателя'"); //Двигатель не выбран.
}
// Эта функция отменяет установку другого флажка,
// если выбираются оба флажка.
function duplicateCheck(theCheckBox,otherCheckBox)
Глава 8. Клиентская сторона 4ии
// Определить выбраны ли оба флажка.
if(theCheckBox.checked && otherCheckBox.checked)
otherCheckBox.checked = 0;
}
// — >
</script>
</html>
Checkbox.OnBlur JavaScript 1.1+. JScript 3.0+
onBlur="команда"
Обработчик события onBIur указывается в дескрипторе <input>. Он определяет, какая
операция будет выполняться при потере флажком фокуса.
f В листинге 8.50 обработчик события onBIur используется для вывода на экран сообще-
ния о том, что перец, заказанный для изготовления пиццы, является острым.
Листинг 8.50. Использование обработчика события onBIur для вывода на экран
окна предупреждения при потере флажком фокуса
<html>
<п2>Пицца-автоыат</Ь2>
Шаг 1: Пожалуйста, выберите начинку для пиццы:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="peppers"
onBlur="pepperAlert()">Перец<Ьг>
<input type="checkbox"
name="sausage">Колбаса<Ьг>
Шаг 2:
<input type="button"
уа1ие=аказать пиццу"
name="orderButton"
onClick="alert('Ваш заказ принят.')">
</form>
<script type="text/javascript" language="JavaScript">
// Эта функция предупреждает покупателя о тон, что перец острый.
function pepperAlert()
{
/ / Если выбран перец, вывести сообщение.
if(document.orderForm.peppers.checked == true)
{
// Создание окна предупреждения,
alert("Это очень острый перец.");
</script>
</html>
Checkbox.onClick
onClick="команда"
I Обработчик события onClick указывается в дескрипторе <input>. Он определяет, какая
' операция будет вьшолняться при нажатии флажка.
В листинге 8.51 обработчик события onClick используется для вывода на экран сообще-
сообщения о том, что колбасную начинку лучше заказывать с перцем.
Листинг 8.51. Использование обработчика события onClick для вывода на экран
окна предупреждения
<html>
<Ь2>Пицца-автомат</Ь2>
4 О 4 Часть ill. Справочник по JavaScript
Шаг 1: Пожалуйста, выберите начинку для пиццы:<br>
<form name="orderForm">
<input type="checkbox"
name="peppers"
onClick="recommendSausage()">Перен<Ьг>
<input type="checkbox"
name="sausage">Кол6аса<Ьг>
Шаг 2:
<input type="button"
уа1ие=аказать"
name="orderButton"
onClick="alert ('Ваш saicas принят.')">
</form>
<script type="text/javascript" language="JavaScript">
// Эта функция предлагает покупателю заказать колбасную начинку.
function recommendSausage()
{
// Если выбран перец, вывести окно предупреждения,
if(document.orderForm.peppers.checked == true)
{
// Создать окно предупреждения.
alert("Колбасную начинку лучше заказывать с перцем.");
>
>
// Вывести на зкран обработчик события onClick.
document.write("Обработчик событий onClick флажка Перец: ") ;
document.write(document.orderForm.peppers.onclick);
// — >
</script>
</html>
Checkbox.OnFoCUS JavaScript 1.1+. JScript 3.0+
onFocus="команда"
# Обработчик события onFocus указывается в дескрипторе <input>. Он определяет, какая
операция будет выполняться при получении флажком фокуса.
В листинге 8.52 обработчик события onFocus используется для выбора дополнительного
сыра, если пользователь выбирает колбасную начинку.
Листинг 8.52. Использование обработчика события onFocus для выбора
дополнительного сыра.
<html>
<Ь2>Пицца-автомат</Ь2>
Шаг 1: Пожалуйста, выберите начинку для пиццы:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="peppers">Перец<Ьг>
<input type="checkbox"
name="sausage"
onFocus="chooseExtraCheese()">Колбаса<Ьг>
<input type="checkbox"
name="cheese'^Дополнительный сыр<Ьг>
Step 2:
<input type="button"
value="Заказать"
name="orderButton"
onClick="alert('Ваш заказ принят.')">
</form>
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция устанавливает флажок "Дополнительный сыр".
function chooseExtraCheese()
Глава 8. Клиентскея стороне
435
// Если выбрана колбасная начинка, выбрать дополнительный сыр.
if(document.orderForm.sausage.checked == false)
<
// Выбрать дополнительный сыр.
document.orderForm.cheese.checked = true;
</script>
</html>
JavaScript 1.1+, JScript 3.0+
Nav3+, IE4+, Opera3+
document.форма.флажок.type
Свойство type предоставляет доступ к атрибугу type флажка. Это свойство доступно только
в режиме считывания и всегда содержит строку "checkbox".
В листинге 8.53 покупателю предлагается из возможных начинок пиццы выбрать только
две. Для определения количество выбранных начинок используется свойство type, с по-
помощью которого определяется количество флажков на форме. В данном примере имеет-
имеется четыре флажка, которые соответствуют возможным начинкам пиццы.
Листинг 8.53. Использование свойства type флажка
<html>
<Ь2>Пицца-авяомат</Ь2>
Шаг 1: Пожалуйста, выберите начинку для пиццы:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="peppers">Перец<Ьг>
<input type="checkbox"
name="sausage">Колбаса<Ьг>
<input type="checkbox"
name=" onion" >Лук<Ы>
<input type="checkbox"
name="bacon">Бекон<Ьг>
Шаг 2:
<input type="button"
value="Заказать"
name="orderButton"
onClick="alert('Ваш заказ принят.')">
</form>
<script type="text/javascript" language="JavaScript">
// Присвоить счетчику начальное значение 0.
var counter = 0 ;
// Определить количество флажков на форме,
for(var x=0; x<document.orderForm.length; x++)
// Является ли текущий элемент флажком?
if(document.orderForm.elements[x]-type == "checkbox")
// Увеличить значение счетчика на единицу.
counter++;
// Вывести на экран инструкцию по выбору начинок.
document.write("Пожалуйста, выберите не более 2 из ");
document.write(counter," возможных начинок."); // Вставить 4
</script>
</html>
Checkbox.unwatch()
document. форма.флажок. unwatch(свойство)
4 о Ь Часть III. Справочник по JavaScript
# Метод unwatchO объекта Checkbox используется для прекращения отслеживания свой-
свойства, указанного в параметре свойство.
В листинге 8.54 приведен пример использования метода unwatchO Для прекращения от-
отслеживания свойства value объекта Checkbox после замены его значения на "Синий".
Листинг 8.54. Использование метода unwatchO объекта Checkbox
<html>
<£orm name="myForm">
<input type="checkbox" name="myCheckbox" уа1ие="Красный">
</form>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document, write (id + " изменилось с " + oldValue + " на ") ;
document.write(newValue + "<br>");
return newValue;
// Начать отслеживание
document.myForm.myCheckbox.watch("value",alertme);
document.write("Исходное значение свойства value флажка: ");
document.write(document.myForm.myCheckbox.value + "<br>");
// Изменить значение свойства value флажка
document.myForm.myCheckbox.value = "Синий";
document.write("Новое значение свойства value флажка: ");
document.write(document.myForm.myCheckbox.value + "<br>");
// Прекратить отслеживание.
document.myForm.myCheckbox.unwatch("value");
// Изменить значение свойства value флажка.
document.myForm.myCheckbox.value = "Зеленый";
document.write("Заключительное значение свойства value флажка: ");
document.write(document.myForm.myCheckbox.value + "<br>");
</script>
</html>
Checkbox.value
document. форма.. флажок. value
Свойство value предоставляет доступ к атрибуту value флажка. Это свойство представляет
собой значение, доступное как для чтения, как и для записи, которое передается сер-
серверу во время передачи формы.
В листинге 8.55 свойство value каждого флажка используется для вывода на экран инст-
инструкций по заказу пиццы.
Листинг 8.55. Использование свойства value флажка
<html>
<Ь2>Пицца-автомат</Ь2>
Шаг 1: Пожалуйста, выберите начинку для пиццы:<Ьг>
<form name="orderForm">
<input type="checkbox"
name="onion"
value="острый лук">Лук<Ьг>
<input type="checkbox"
name="bacon"
value="перченый бекон">Бекон<Ьг>
Шаг 2:
<input type="button"
value="Заказать"
name="orderButton"
onClick="alert('Ваш заказ принят.')">
</forro>
Глава 8. Клиентская сторона Н-О /
<script type="text/javascript" language="JavaScript">
// Вывести на экран инструкции, используя свойство value,
document.write("Пожалуйста, выберите для вашей пиццы либо ");
// Вставить острый лук
document.write(document.orderForm.onion.value);
// Вставить перченый бекон
document.write(", либо ",document.orderForm.bacon.value);
document.write("!");
// —>
</script>
</html>
Checkbox.watch() ^
document, форма.флажок. watch{свойство,функция)
Метод watch() объекта Checkbox используется для включения отслеживания свойства,
указанного в параметре свойство. При изменении свойства, указанного с помощью па-
параметра свойство, после вызова метода watch() выполняется функция, указанная в па-
параметре функция.
В листинге 8.56 приведен пример использования метода watch() для включения отсле-
отслеживания свойства value объекта Checkbox.
Листинг 8.56. Использование метода watch() объекта Checkbox
<html>
<form name="myForm">
<input type="checkbox" name="myCheckbox" value="Красный">
</form>
<script type="text/javascript" language="JavaScript">
<■ i — —
function alertme(id,oldValue,newValue)
{
document.write (id + " изменилось с " + oldValue + " на ") ;
document.write(newValue + "<br>");
return newValue;
}
// Начать отслеживание.
document.myForin.tnyCheckbox.watch ("value" ,alertme) ;
document.write("Первоначальное значение флажка: ");
document.write(document.myForm.myCheckbox.value + "<br>");
// Изменить значение флажка.
document.myForm.myCheckbox.value = "Синий";
document.write("Новое значение флажка: ");
document.write(document.myForm.myCheckbox.value + "<br>");
// —>
</script>
</html>
JavaScript 1.0+, ECMAScript 1.0+, JScript 1.0+
2 E3 Q3
Основной объект клиентской части языка JavaScript.
Объект Document представляет Web-страницу, которая отображается в окне браузера (во
фрейме или в слое). Экземпляр этого объекта создается при загрузке документа в окне
браузера. Объект Document имеет большое количество свойств и методов, которые зна-
значительно отличаются в языках JavaScript и JScript.Свойства, методы и обработчики со-
событий объекта Document перечислены в табл. 8.6.
438
Часть III. Справочник по JavaScript
Таблица 8.6. Свойства, методы и обработчики событий объекта Document
Тип Элемент
Свойство alinkColor
all
anchors
applets
bgcolor
classes
cookie
domain
embeds
fgcolor
forms
ids
images
lastModified
layers
linkColor
links
plugins
referrer
tags
title
URL
vlinkColor
Метод captureEventsO
close()
contextual)
getSelection()
open()
releaseEvents()
routeEvent()
unwatch()
watch()
write()
writeln()
Описание
Цвет активных ссылок.
Массив всех HTML-дескрипторов в документе.
Массив объектов Anchor.
Массив объектов Applet.
Цвет фона документа.
Массив классов таблиц стилей.
Cookie-набор, соответствующий данному документу.
Домен документа.
Массив внедренных объектов.
Цвет текста документа.
Массив объектов Form.
Массив идентификаторов таблиц стилей.
Массив объектов Image.
Дата последнего изменения документа.
Массив объектов Layer.
Цвет ссылок.
Массив объектов Link.
Массив внедренных объектов.
URL документа, содержащего ссылку на текущий документ.
Массив таблиц стилей дескрипторов.
Название документа.
URL текущего документа.
Цвет посещенных ссылок.
Этот метод перехватывает события, которые должные
обрабатываться документом.
Этот метод закрывает поток данных в документ.
Этот метод применяет стиль к выбранным HTML-элементам.
Этот метод возвращает выбранный текст.
Этот метод открывает поток данных в документ.
Этот метод освобождает перехваченное документом событие.
Этот метод передает перехваченное событие другим объектам.
Этот метод прекращает отслеживание свойства.
Этот метод устанавливает отслеживание свойства.
Этот метод добавляет текст в конец документа.
Этот метод добавляет в конец документа текст и символ новой
строки.
Глава 8. Клиентская сторона
Тип Элемент
Обработчик onClick
события
onDblClick
onKeyDown
onKeyPress
onKeyUp
onLoad
onMouseDown
onMouseUp
onUnLoad
Описание
Обработчик
Обработчик
Обработчик
Обработчик
Обработчик
Обработчик,
документа.
Обработчик
Обработчик
Обработчик,
окна.
событий
событий
событий
событий
событий
который
событий
событий
который
439
щелчков мыши.
двойных щелчков мыши.
KeyDown.
KeyPress.
KeyUp.
используется по окончании загрузки
MouseDown.
MouseUp.
используется при выгрузке документа из
document.alinkColor JavaScript 1.0+. Script 1.0+
document.alinkColor
^Свойство alinkColor устанавливает цвет активных ссылок. Ссылка считается активной в
момент времени между нажатием и отпусканием левой клавиши мыши, когда указатель
мыши находится над, ссылкой. Цвет может задаваться строкой из шестнадцатеричных цифр
или именем стандартного в HTML цвета. Шестнадцатеричный формат состоит из шести
цифр, соответствующих шаблону "RRGGBB".
В листинге 8.57 устанавливается зеленый цвет всех активных ссылок, даже если они рас-
расположены перед дескрипторами <script>.
Листинг 8.57. Определение значения свойства alinkColor документа
<html>
<а href="myGreenPage.html">3еленый сайт</а><Ьг>
<script type="text/javascript" language="JavaScript">
<!--
// Установить зеленый цвет всех активных ссылок.
document.alinkColor=0ff00" ;
// —>
</script>
<a href="myGreenGrassFage.html">CTpaHni4a цвета зеленой травы</а>
</html>
document.all Js^ip7To+
document.al
Свойство document.all содержит массив всех HTML-элементов документа Элементы в мас-
массиве расположены в порядке их создания. Методы, связанные с массивом document.all,
описаны в табл. 8.7.
Таблица 8.7. Методы, связанные с массивом documentall
Метод Описание
item() Возвращает HTML-элемент, основываясь на его имени.
tags() Возвращает массив элементов, которые имеют указанный дескриптор.
44U Часть III. Справочник по JaveScript
В листинге 8.58 свойство document.all используется для получения доступа к привязке
Paint, которая является четвертым элементом на странице. Имя привязки, указанное с
помощью точечной нотации, используется для создания ссылки на начало документа.
Листинг 8.58. Использование свойства document.all
<html>
<а name="Paint"xh2xu>UBe'ra красок</их/Ь2х/а>
Красный<Ьг>
Зеленый<Ьг>
Синий<Ьг>
Оранжевый<Ьг>
<Ьг>
<script type="text/javascript" language="JavaScript">
// Создать ссылку на закрепитель Paint D-тый элемент).
document.write("<a href='#",document.all[4].name,"'>"); // Вставит
// "Paint",
document.write(document.all[4].name,"</a>"); // Вставить "Paint".
</script>
</html>
document.all.item() JScriP* J-J+
document.all.item{имя)
fc Метод item() позволяет извлечь HTML-элемент из массива document.all без указания его
положения в массиве. Метод item() вместо порядкового номера для идентификации эле-
элемента использует имя, указанное в атрибуте имя или id HTML-дескрипторов. Как пра-
правило, данный метод возвращает элемент, однако если найдено несколько элементов с
указанным именем, возвращается массив, состоящий из этих элементов.
В листинге 8.59 метод item() используется для получения доступа к закрепителю Paint.
Имя привязки, указанное с использованием точечной нотации, используется для созда-
создания ссылки на начало документа.
Листинг 8.59. Использование метода itemO для выборки определенного HTML-
элемента.
<html name="top">
<а name="Paint"Xh2xu>UBeTa красок</иХ/Ь2х/а>
Красный<Ьг>
Зеленый<Ьг>
Синий<Ьг>
Оранжевый<Ьг>
<Ьг>
<script type="text/javascript" language="JavaScript">
// Создать ссылку, используя имя 4-того элемента,
document.write("<a href='#") // Создать первую часть
// дескриптора ссылки,
document.write(document.all.item("Paint").name,"■>"); // Вставить
// "Paint",
document.write(document.all.item("Paint").name,"</a>"); // Вставить
// "Paint".
</script>
</html>
document.all.tags() JJ
document.all.tags{дескриптор)
Метод tags() позволяет извлечь все HTML-элементы из массива document.all, которые
содержат определенный дескриптор. Метод возвращает массив, состоящий из рассматри-
рассматриваемых элементов.
Глава 8. Клиентская стороне
Л В листинге 8.60 метод tags() используется для создания массива, включающего все со-
держащиеся в документе дескрипторы точек привязки. Имя первой точки привязки, вы-
выраженное с применением точечной нотации, используется для создания ссылки на на-
начало документа.
Листинг 8.60. Использование метода tagsO для извлечения HTML-злемента,
содержащего определенный дескриптор
<html>
<а name=" Paint" ХЬ2Хи>Цвета красок</их/Ь2х/а>
Красный<Ьг>
Зеленый<Ьг>
Синий<Ьг>
Оранжевый<Ьг>
<Ьг>
<script type="text/javascript" language="JavaScript">
<! —
// Получение всех дескрипторов ■точек привязки,
var arrayOfAnchors = document.all.tags("a") ;
//Создать ссылку,используя имя первого элемента в массиве arrayOfAnchors
document.write("<a href='#",arrayOfAnchors[0].name,"'>"); //Вставить
//"Paint".
document.write(arrayOfAnchors[0].name,"</a>"); //Вставить "Paint".
// —>
</script>
</html>
document.anchors
document.anchors
document.anchors[индекс]
Свойство anchors определяет массив, в котором содержатся все объекты Anchor, кото-
которые встречаются в HTML-документе, в дескрипторах <а пате=" строка" >. Свойство
anchors включает свое собственное свойство, length, которое определяет количество объек-
объектов Anchor в массиве. Значение параметра индекс находится в диапазоне от нуля до
length - 1. Детальное описание всех свойств точек привязки можно найти в описании
объекта Anchor ранее в главе.
ПРЕДУПРЕЖДЕНИЕ
Несмотря на то что гиперссылки создеются с помощью деск-
дескриптора <а>, они не попадают в мессив anchors. Гиперссылки хранятся в массива
links документе.
В листинге 8.61 приведен пример выборки имен точек привязки с помощью массива
anchors.
Листинг 8.61. Выборка имен точек привязки с помощью массива anchors
<html>
<а пате="А"ХЬ4>Буква A</h4x/a>
абрикос<Ьг>
аллигатор<Ьг>
<а пате="В"ХЬ4>Буква Б</Ь4Х/а>
6анан<Ьг>
баскетбол<Ьг>
бейсбол<br>
<script type="text/javascript" language="JavaScript">
<i —
document.write("Имена точек привязки:<br>"); // Заголовок.
// Организовать цикл, который выводи на экран имена всех
// точек привязки в документе.
for(var x=0; x<=document.anchors.length; x++)
442 Часть III. Справочник по JavaScript
// Отобразить имя точки привязки.
document.write(document.anchors[x].name,"<br>");
}
// —>
</script>
</html>
document.anchors.length
document.anchors.length
Свойство length определяет количество объектов Anchor в документе.
В листинге 8.62 свойство length используется для организации цикла по всем точкам при-
привязки в документе. При каждом выполнении цикла создается ссылка на соответствующую
точку привязки.
Листинг 8.62. Использование свойства length для создания гиперссылок.
<html>
<centerxhl><u>Web-страница, содержащая описания музыкальных
инструментов< /их /hl></ center >
<brxa name="Trumpet"Xh4>Tpy6a</h4x/a>
Труба - духовой музыкальный инструмент, который издает четкие,
громкие звуки.
Для изменения высоты звука труба имеет три клавиши.
<br><a name="Guitar"xh4>rHTapa</h4X/a>
Гитара — струнный музыкальный инструмент, состоящий из пустотелого
деревянного корпуса
и длинного деревянного грифа. Большинство гитар имеют 6 струн.
Нажатия струн в различных комбинациях дают различные аккорды.<Ьг>
<brxa name=" piano "><Ь4>Фортепьяно</Ь4Х/а>
Фортепьяно имеет один из самых широких диапазонов звуков.
Звуки издаются путем нажатия на клавиши,
которые соединены с небольшими деревянными молоточками, которые,
в свою очередь, ударяют по струнам, настроенным на определенную
высоту звука.<Ьг>
<script type="text/javascript" language="JavaScript">
document.write("<Ьг>Выберите инструмент:<br>");
// Создать ссылку на каждый закрепитель,
// используя свойство length объекта Anchor.
for(var counter=0; counter<=document.anchors.length; counter++)
{
document.write("<a href='#",document.anchors[counter].name," '>") ;
document.write(document.anchors[counter].text,"</a><br>");
</script>
</html>
document.applets JavaScript 1.1+, Script 10+
document.applets
document.applets[индекс]
i Свойство applets определяет массив, содержащий все объекты Applet, которые встреча-
встречаются в HTML-документе, в дескрипторах <applet>. Свойство applets имеет свое собствен-
собственное свойство — length, которое содержит количество объектов Applet в массиве. Значе-
Значение index находится в диапазоне от нуля до length — 1. Детальное описание всех свойств
аплетов приводится в описании объекта Applet ранее в настоящей главе.
В листинге 8.63 описываются два фиктивных аплета-калькулятора, внедренные в HTML-
документ. С помощью массива applets имена калькуляторов отображаются на экране.
Глава 8. Клиентская стороне 44О
Листинг 8.63. Получение доступа к аплетам с помощью массива applets.
<html>
<applet name="Home Calculator"
code="homeCalculator.class"
width=50
height=50
may scriptx/apple t>
<applet name="Office Calculator"
code="officeCalculator.class"
width=50
height=50
mayscriptx/applet>
Особую благодарность мы выражаем людям,
которые предоставили нам следующие калькуляторы: <Ы>
<script type="text/javascript" language="JavaScript">
// Отобразить на экране наименования калькуляторов.
document.write(document.applets[0].name,"<br>");
. document.write(document.applets[1].name);
// —>
</script>
</html>
document.applets.length JavaScript 1.1+. JScript 3.0+
document.applets.length
& Свойство length определяет количество объектов Applet в документе.
us В листинге 8.64 свойство length используется для отображения на экране количества ап-
W летов в HTML-документе.
Листинг 8.64. Определение количества аплетов в документе с помощью свойства
length
<html>
<Ь2>ЯеЬ-страница аплетов</п2>
< applet name="myAddApplet"
code="add.class"
width=50
height=50
mayscriptx/applet>
<applet name="mySubtractApplet"
code="subtract.class"
width=50
height=50
mayscriptx/applet>
<script type="text/javascript" language="JavaScript">
<! —
// Отображение на экране количества аплетов в документе,
document.write("В настоящее время на этой странице находятся ",
document.applets.length);
document.write(" аплетов. Посетите эту страницу позже,");
document.write(" поскольку новые аплеты добавляются ежедневно.");
// —>
</script>
</html>
document.bgColor
document.bgColor
Свойство bgColor устанавливает цвет фона HTML-документа. Цвет может задаваться стро-
строкой из шестнадцатеричных цифр или с помощью имени стандартного в HTML цвета. Ше-
444 Часть III. Справочник по JevaScript
стнадцатеричный формат состоит из шести цифр, соответствующих шаблону "RRGGBB"
Цвет фона также можно установить с помощью атрибута bgcolor дескриптора <body>.
|; ^ В листинге 8.65 изменяется цвет фона документа в зависимости от нажатой кнопки.
Листинг 8.65. Изменение свойства bgColor для документа
<html>
<form>
<input type="button"
value= " Желтый"
name="Yellow"
onClick="changeBG('yellow')">
<input type="button"
уа1ие=елекый"
name="Green"
onClick="changeBG('green')">
<input type="text"
name="color">
</form>
<script type="text/javascript" language="JavaScript">
<!--
//Эта функция изменяет цвет фона документа и заполняет текстовое поле
function changeBG(color)
{
document.bgColor=color; // Изменить цвет фона,
document.myForm.color.value=color; // Отобразить на экране
// название цвета.
}
// —>
</script>
</html>
document.captureEvents()
document.captureEvents{маска_события)
Метод captureEvents() устанавливает тип событий, которые должны передаваться доку-
документу, а не объекту, для которого они изначально предназначались. Аргумент (аргументы)
определяет перехватываемый тип событий. Ниже перечислены все возможные маски со-
событий. Возможность перехвата событий различного типа обеспечивается за счет исполь-
использования поразрядной операции ИЛИ (|).
« EventABORT • EventMOUSEDOWN
« EventBLUR « EventMOUSEMOVE
« EventCHANGE • Event. MOUSEOUT
« EventCLICK « EventMOUSEOVER
в EventDBCLICK в Event.MOUSEUP
« Event.DRAGDROP « Event.MOVE
« Event.ERROR • Event.RESET
e Event.FOCUS в Event.RESIZE
в EventKEYDOWN в EventSELECT
e Event.KEYPRESS • EventSUBMIT
в Event. KEYUP « Event. UNLOAD
в EventLOAD
В коде из листинга 8.66 предпринимается попытка при нажатии и отпускании кнопки
мыши заменить желтый цвет фона на фиолетовый. Перед обработкой кнопкой событий
Event.MOUSEDOWN и Event.MOUSEUP они перехватываются с помощью метода
captureEvent() документа и обрабатываются специальными функциями, которые изме-
изменяют цвет фона на красный и синий.
Глава 8. Клиентская сторона
Листинг 8.66. Перехват событий с помощью метода captureEventO
<html>
Расположенная ниже кнопка должна осуществлять переключение между
желтым и пурпурным цветами фона, но поскольку события MOUSEUP и
MOUSEDOWN перехватываются и обрабатываются документом, события
никогда не попадают на уровень кнопки.
<form>
<input type="button"
value="Желтый/Пурпурный"
onMouseDown="document.bgColor='yellow1"
onMouseUp="document.bgColor='purple'">
</form>
<script>
<! —
// Перехват всех событий нажатия и отпускания кнопки мыши и
// обработка их с помощью обработчиков документа. Это позволяет
// перехватывать обработчики событий мыши.
document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP);
// Объявить обработчики событий документа, которые будут
// обрабатывать нажатия и отпускания кнопки мыши.
document.onmousedown = function(event){ document.bgColor='red'} ;
document.onmouseup = function(event){ document.bgColor="blue'}
// —>
</script>
</html>
document.classes JavaScript^.2-1.3
document.classes.имя_класса.имя_дескриптора.стиль
Свойство classes представляет собой ассоциативный массив, в котором содержатся классы,
соответствующие таблицам стилей Netscape. С помощью точечной нотации параметр имя_
класса указывает атрибут class и соответствующий HTML-дескриптор (имя_дескршипора), к
которому применяется стиль, переданный в параметре стиль. Если параметр имя_дескрип-
тора имеет значение all, стиль, указанный в параметре стиль, применяется ко всем дес-
дескрипторам с атрибутом class имя_юшсса. Классы таблиц стилей создаются внутри дескрип-
дескрипторов <style> и <script> с использованием JavaScript или HTML.Указываемый стиль может
быть одним из стилей или методов, перечисленных в табл. 8.8. Дополнительная информа-
информация по всем перечисленным свойствам приведена в описании объекта Style ниже в главе.
перед использованием нового класса, поскольку многие HTML-объекты после создания
не допускают внесения изменений.
ЕЗЕШ21
пользуете?
Таблица
Тип
Свойство
]Ш2& Если при создании нового классв внутри дескрипторов <style> ис-
1 точечная нотация, document указывать не обязательно.
8.8. Свойства и методы
Элемент
align
backgroundColor
background Image
borderBottomWidth
borderColor
borderLeftWidth
объекта Style, которые можно использовать в свойстве classes
Описание
Выравнивание элемента внутри родительского элемента.
Цвет фона элемента.
Фоновый рисунок для элемента.
Ширина нижней границы элемента.
Цвет границы элемента.
Ширина левой границы элемента.
446
Тип
Маетод
Элемент
borderRightWidth
borderStyle
borderTop Width
clear
color
display
fontFamily
fontSize
fontStyle
fontWeight
lineHeight
listStyleType
marginBottom
marginLeft
marginRight
marginTop
paddingBottom
paddingLeft
paddingRight
paddingTop
textAlign
textDecoration
textlndent
textTransform
verticalAlign
whiteSpace
width
borderWidthsO
margins()
Часть III. Справочник по JavaScript
Описание
Ширина правой границы элемента.
Стиль границы элемента.
Ширина верхней границы элемента.
Стороны элемента, где запрещены плавающие элементы.
Цвет переднего плана элемента.
Выводимый на экран элемент.
Используемый элементом шрифт.
Кегль используемого элементом шрифта.
Стиль используемого элементом шрифта.
Начертание используемого элементом шрифта.
Расстояние между двумя соседними линиями.
Формат элементов списка.
Расстояние между нижней границей элемента и верхней
границей другого элемента.
Расстояние между левой границей элемента и правой
границей другого элемента.
Расстояние между правой границей элемента и левой
границей другого элемента.
Расстояние между верхней границей элемента и нижней
границей другого элемента.
Расстояние между нижней границей элемента и его
содержимым.
Расстояние между левой границей элемента и его
содержимым.
Расстояние между правой границей элемента и его
содержимым.
Расстояние между верхней границей элемента и его
содержимым.
Выравнивание текста внутри элемента.
Тип декоративного украшения текста.
Абзацный отступ перед текстом.
Преобразование, которое необходимо применить
по отношению к тексту.
Вертикальное выравнивание элемента.
Поведение пробелов в элементе.
Ширина элемента.
Ширина границы вокруг элемента.
Расстояние между границей элемента и границами
соседних элементов.
paddingsQ
Расстояние между границами элемента и его содержимым.
Глава 8. Клиентсквя сторона 447
В листинге 8.67 демонстрируются три различных способа создания классов таблиц сти-
стилей в языках JavaScript и HTML внутри дескрипторов <style> H<script>. Обратите вни-
внимание, что на конечный результат влияет порядок объявления классов.
Листинг 8.67. Создание классов таблиц стилей
<html>
<style type="text/ess">
all.TEXTFORMAT {font-style: italic;}
</style>
<p CLASS=TEXTFORMAT>no^e первого дескриптора STYLE. <p>
<style type="text/javascript">
classes.TEXTFORMAT.all.fontWeight = "bold";
</style>
<p class=TEXTFORMAT>nocne второго дескриптора STYLE.<p>
<script>
document.classes.TEXTFORMAT.all.textDecoration = "underline";
</script>
<p class=TEXTFORMAT>nocne дескриптора SCRIPT.<p>
</html>
document.closeO
document.close()
| Метод close() закрывает выходной поток, направленный в документ. На экран будут
выведены все данные, которые еще не были отображены до вызова этого метода.
ПРЕДУПРЕЖДЕНИЕ
Реализация методе closed в различных браузерах и различных вер-
версиях одного браузера можэт существенно отличаться. В некоторых брвузерах поток данных
продолжает передаваться документу даже после вызова метода closef), поэтому использовв-
ния этого мвтода лучшв избегвть. Если такая функция необходима, проверьтв корректность
ее выполнения во всех браузервх, в которых должен поддерживвться код.
В листинге 8.68 метод close() используется для закрытия потока, направленного в до-
документ.
Листинг 8.68. Закрытие потока данных, направленных в документ, с помощью
метода closed.
<html>
<script type="text/javascript" language="JavaScript">
<! —
//Отобразить произвольный текст на экране, а затем закрыть документ
document.write("Это длинная строка, которая должна переноситься
wHa следующую строку ") ;
document.write("браузера. Если строка не переносится в следующую
wстроку браузера, измените ") ;
document.write("размер окна браузера и ");
document.write("перезапустите данный код.<Ьг>");
// Закрыть документ и вывести все строки текста,
// которые находятся в буфере,
document.close();
// Вывести еще один абзац.
document.write("Если предыдущий абзац занимает несколько строк, ");
document.write("вы заметите,что зтот абзац выводится на экран только ");
document.write("после вызова метода close.");
// Создать окно предупреждения, благодаря которому можно увидеть,
// когда выполняется операция закрытия.
alert("Для продолжения нажмите кнопку");
// —>
</script>
</html>
Ч-Ч-О Часть III. Справочник по JavaScript
dOCUment.COntextlialO JavaScript 1JML4
document.contextual{контекст1,...,[контекстИ], стиль)
# Метод contextual^) позволяет применять стиль к HTML-документам на базе контекста
элементов. Например, можно указать, что цвет текста внутри дескриптора <i>, который
находится внутри дескрипторов <h2>, должен быть зеленым. Последний передаваемый
методу аргумент соответствует применяемому стилю. Аргументы контекст могут также
использоваться для задания других стилей, в которых для его применения должен со-
содержаться стиль, определяемый параметром стиль.
L/j В листинге 8.69 метод contextual() используется для изменения цвета всего текста, ото-
1У браженного курсивом внутри дескрипторов заголовков второго уровня, на зеленый.
Листинг 8.69. Изменения цвета курсивного текста на зеленый с помощью
метода contextual!)
<html>
<script type="text/javascript" language="JavaScript">
document.contextual(document.tags. h2,
document.tags.i).color="green";
</script>
<Ь2>Эти слова <1>эеленого цвета</х></Ь2>
</html>
dOCUment.COOkle JavaSaipt 1Л+. JScript Ш
document.cookie
# Свойство cookie позволяет считывать и записывать cookie-наборы. Cookie-наборы пред-
представляют собой данные небольшого объема, которые хранятся Web-браузером с целью
обеспечения совместного использования данных различными Web-страницами.
t/0 Код из листинга 8.70 создает cookie-набор, а затем считывается полученный результат.
Листинг 8.70. Создание cookie-набора и считывание полученного результата с
помощью свойства cookie
<html>
<script>
<! —
// Создание cookie-набора.
document.cookie = "температура=75";
// Отображение на экране содержимого cookie-набора.
document.write("cookie-файл содержит: ",document.cookie);
// —>
</script>
</html>
document.domain
document.domain
Первоначально свойство domain содержит имя хоста сервера, с которого был загружен
документ. Документ может изменять значение домена, но поддомен остается прежним. На-
Например, если Web-страница была загружена с адреса www.example.com, документ может
изменить его на example.com. Причиной этого является возможность совместного исполь-
использования свойств различными страницами, находящимися на разных серверах, но в пе-
переделах одного Web-сайта. Ограничительная природа данного свойства предотвращает не-
некорректное отображение данных, собранных несвязанными документами.
Пример использования данного свойства не приводится, поскольку для того чтобы доменное
имя в данном свойстве не было пустым, документ должен находиться на сервере.
Глава 8. Клиентская сторона Ч-Ч-У
document.embeds
document.embeds
document.embeds[индекс]
Свойство embeds представляет собой массив, в котором содержатся все внедренные объек-
объекты и подключаемые модули, встречающиеся в HTML-документе в дескрипторе <embed>.
Свойство embeds имеет свое собственное свойство — length, которое содержит количе-
количество объектов в массиве. Значение параметра индекс находится в диапазоне от нуля до
length - I.
ПРИМЕЧАНИЕ
Массив embeds содержит те же двнные, что и мвссив
document, plugins.
В листинге 8.71 свойство length используется для вывода на экран количества внедрен-
внедренных в HTML-документ объектов.
Листинг 8.71. Отображение на экране количества внедренных объектов с помощью
свойства embeds
<html>
<Ь2>Геометрические фигуры</Ь2>
<h2>Oкружность</Ь2>
<embed src="circle.gif">
<Ь2Жвадрат</Ь2>
<embed src="square.gif">
<script type="text/javascript" language»"JavaScript">
<!--
// Отображение на экране сведений о размерах массива embeds.
document.write(document.embeds.length," внедренных объекта.");
// —>
</script>
</html>
document.embeds.length
document.embeds.length
Свойство length определяет количество объектов, находящихся в массиве embedsf].
В листинге 8.72 свойство length используется для вывода на экран количества внедрен-
внедренных в HTML-документ объектов.
Листинг 8.72. Вывод на экран количества внедренных объектов с помощью
свойства length
<html>
<Ь2>Геометрические фигуры</Ь2>
<Ь2>Окружность</Ь2>
<embed src="circle.gif ">
<Ь2Жвадрат</Ь2>
<embed src="square.gif">
<script type="text/javascript" language="JavaScript">
// Отображение на экрана значения размера массива embeds,
document -write (document. embeds. length, " внедренных объектов. ") ;
</script>
</html>
documenUgColor
document.fgColor
Свойство fgColor устанавливает цвет, заданный по умолчанию для всего текста в Web-
документе. Оно эквивалентно заданию цвета в атрибуте text дескриптора <body>. Цвет мо-
450 Часть III. Справочник по JavaScript
жет задаваться строкой из шестнадцатеричных цифр или именем стандартного в HTML
цвета. Шестнадцатеричный формат состоит из шести цифр в соответствии с шаблоном
"RRGGBB".
В листинге 8.73 в качестве цвета, заданного по умолчанию для всего текста на страни-
странице, устанавливается синий цвет.
Листинг 8.73. Задание цвета текста с помощью свойства fgColor
<html>
<script type="text/javascript" language="JavaScript">
// Установить синий цвет,
document.fgColor=000ff";
</script>
<body>
Текст на эфой странице синий.
</body>
</html>
document.formName
document.имя_формы
\ Свойство имя_формы фактически определяет имя формы в HTML-документе. Указав имя
формы после слова document, можно получить доступ к объектам этой формы. Кроме
того, доступ к форме можно получить через свойство forms, воспользовавшись индек-
индексацией в массиве. Дополнительную информацию можно найти в описании свойства
document.forms.
В листинге 8.74 осуществляется доступ к действиям каждой формы за счет использова-
использования объекта document и указания имени формы с помощью точечной нотации.
Листинг 8.74. Получения доступа к действиям форг., с помощью имен форм
<html>
<form name="Forml" асtion="green">
<input type="button"
value="Зеленый"
onClick = "document.bgColor='green'">
</form>
<form name="Form2" action="blue">
<input type="button"
уа1ие="Синий"
onClick = "document.bgColor=1blue'">
</form>
<script type="text/javascript" language="JavaScript">
// Отображение на экране действия каждого объекта Form,
document.write("Действие, соответствующее объекту Forml ");
document.write(document.Forml.action, "<br>");
document.write("Действие, соответствующее объекту Form2 ")•
document.write(document.Form2.action);
</script>
</html>
document.fomis
document.forms
document.
Свойство forms определяет массив, в котором содержатся все формы, включенные в со-
состав HTML-документа с помощью дескрипторов <form>. Свойство forms включает свое
собственное свойство, length, определяющее количество форм в массиве. Значение index
находится в диапазоне от нуля до length — 1.
Глава В. Клиентская сторона
В листинге 8.75 осуществляется доступ к имени каждой формы за счет использования
массива formsf].
Листинг 8.75. Получение доступа к имени формы с помощью массива forms
<html>
<form name="Forml">
<input type="button"
value=елевый"
onclick = "document.bgColor='green'">
</form>
<form name="Form2">
<input type="button"
value="CHHHii"
onClick = "document.bgColor='blue'">
</form>
<script type="text/javascript" language="JavaScript">
// Отображение на экране имен объектов form,
for(i=0;i<document.forms.length;i++)
{
document.write("Имя объекта form ",(i+l));
document.write(" <i><b>",document.forms[i].name,"</bX/i><br>") ;
}
// —>
</script>
</html>
document.forms.length
document.forms.length
Свойство length определяет количество объектов Form в массиве forms[].
В листинге 8.76 свойство length используется для вывода на экран количества объектов
Form в документе.
Листинг 8.76. Определение количества объектов Form в документе с помощью
свойства length
<html>
<form name="Forml">
<input type="button"
уа1ие="Эеленый"
onClick = "document.bgColor='green'">
</form>
<form name="Form2">
<input type="button"
value="Синий"
onClick = "document.bgColor='blue'">
</form>
<script type="text/javascript" language="JavaScript">
<!--
// Сколько элементов содержится в массиве forms[]?
document.write("В документе ",document.forms.length," объекта
Form.");
// —>
</script>
</html>
document.getSelection() JavaScrip,Ja1v^
document.getSelection()
k Метод getSelection() возвращает текст, выделенный в HTML-документе.
В листинге 8.77 метод getSelectionO используется для отображения в текстовом поле выб-
выбранного текста. Результат выбора текста "Язык JavaScri pt просто великолепен!" показан на
рис. 8.3.
452
Часть III. Справочник по JavaScript
Рисунок 8.3.
Выделение текста и вывод
выделенного текста в
текстовом поле
Б приведенном ниже текстовом окне будет выводиться
выбранный на Web-страннце текст. Выберите с помощью
мыши фразу "ESBaESSsBS просто великолепен!"
JavaScript
Листинг 8.77. Отображение на экране выделенного текста
<html>
В приведенном ниже текстовом окне будет выводиться
выбранный на Web-странице текст, выберите с помощью мыши
фразу "Язык JavaScript просто великолепен!"<ЬгХЬг>
<form name="Forml">
<input type="fcext" name="TextArea">
</form>
<script type="text/javascript" language^"JavaScript">
<! —
// После отпускания кнопки мыши заполнить текстовое поле,
document.captureEvents(Event.MOUSEUP);
document.onmouseup = function(event){
document.Forml.TextArea.value = edocument.getSelection() )
// — >
</script>
</html>
JavaScript 1.2-1.3
Nav4-4.5
document.handleEvent()
document.handleEvent(событие)
Метод handleEvent() предоставляет возможность вызова обработчика событий докумен-
документа, даже если пользователь не инициировал событие. Аргумент событие указывает объект
Event соответствующий вызываемому обработчику события.
В коде из листинга 8.78 объявляется обработчик событий, который предназначен для об-
обработки всех событий Click. Например, когда пользователь щелкает на кнопке 9, метод
cIickHandler() передает событие обработчику события документа
Листинг 8.78. Передача событий документу с помощью метода handleEventO
<html>
<Ь2>Математическая Задача</п2>
Сколько будет 6+3?
<form name="answerForm">
<input type="button"
value=" 8 "
name="answerВ"
onClick="alert('Неправильно. Попытайтесь еще раэ.')">
<input type="button"
value=" 9 "
name="answer9"
onClick="document.handleEvent(event)">
</form>
<script
type="text/javascript" languages"JavaScript">
// Функция обработки событий Click.
function clickHandler(event)
// Отображение на экране окна предупреждения,
alert("В документе произошло событие Click.");
// Зарегистрировать для события Click обработчик событий,
document.onClick = clickHandler;
Глава 8. Клиентская сторона
453
</script>
</html>
JavaScript 1.2-1.3
Nav4-4.5
document.ids
document.ids.идентификатор_имени.стиль
| Свойство ids определяет ассоциативный массив, в котором содержатся идентификаторы,
соответствующие таблицам стилей Netscape. Используя точечную запись, параметр иден-
тификаторимени указывает идентификатор, соответствующий стилю. Идентификаторы
таблиц стилей создаются с помощью дескрипторов <style> и <script> с использовани-
использованием JavaScript или HTML. Определяемый стиль может относиться к одному из стилей или
методов, перечисленных в табл. 8.9. Дополнительные сведения обо всех перечисленных
свойствах приведены в описании объекта Style далее в настоящей главе.
ходится перед использованием нового идентификаторв, поскольку многие HTML-объвк-
ты после создания нв допускают внесения измвнений.
испопьэуется точечная нотация, document уквзывать не обязательно.
Таблица 8.9. Свойства и методы объекта Style, которые можно использовать в свойстве ids
Тип Элемент
Свойство align
backgroundColor
backgroundlmage
borderBottomWidth
borderColor
borderLeftWidth
borderRightWidth
borders tyle
borderTop Width
clear
color
display
fontFamily
fontSize
fontStyle
fontWeight
lineHeight
MstStyleType
Описание
Выравнивание элемента внутри родительского элемента.
Цвет фона элемента.
Фоновый рисунок для элемента.
Ширина нижней границы элемента.
Цвет границы элемента.
Ширина левой границы элемента.
Ширина правой границы элемента.
Стиль границы элемента.
Ширина верхней границы элемента.
Стороны элемента, где запрещено использование
плавающих элементов.
Цвет переднего плана элемента.
Выводимый на экран элемент.
Используемый элементом шрифт.
Кегль используемого элементом шрифта.
Стиль используемого элементом шрифта.
Ширина используемого элементом шрифта.
Расстояние между двумя соседними линиями.
Формат элементов списка.
454
Тип
Метод
Элемент
marginBottom
marginLeft
marginRight
marginTop
paddingBottom
paddingLeft
paddingRight
paddingTop
textAlign
textDecoration
textlndent
textTransform
verticalAlign
whiteSpace
width
borderWidths()
margins()
paddings()
Часть III. Справочник по JavaScript
Описание
Расстояние между нижней границей элемента и верхней
границей другого элемента.
Расстояние между левой границей элемента и правой границей
другого элемента.
Расстояние между правой границей элемента и левой границей
другого элемента.
Расстояние между верхней границей элемента и нижней
границей другого элемента.
Расстояние между нижней границей элемента и его содержимым.
Расстояние между левой границей элемента и его содержимым.
Расстояние между правой границей элемента и его содержимым.
Расстояние между верхней границей элемента и его содержимым.
Выравнивание текста внутри элемента.
Тип декоративного оформления текста.
Абзацный отступ перед текстом.
Преобразование, которое необходимо применить по отношению
к тексту.
Вертикальное выравнивание элемента.
Обработка служебных пробелов в элементе.
Ширина элемента.
Ширина границы вокруг элемента.
Расстояние между границей элемента и границами соседних
элементов.
Расстояние между границами элемента и его содержимым.
В коле из листинга 8.79 демонстрируются три различных способа создания идентифика-
идентификаторов таблиц стилей в языках JavaScript и HTML внутри дескрипторов <style> H<script>.
Обратите внимание, что на конечный результат в данном случае влияет порядок объяв-
объявления идентификаторов.
Листинг 8.79. Создание идентификаторов таблиц стилей
<html>
<style type="text/css">
#TEXTFORMAT {font-style: italic;}
</style>
<p id=TEXTFORMAT>IIocne первого дескриптора STYLE.<p>
<style type="text/javascript">
ids.TEXTFORMAT.fontWeight = "bold";
</style>
<p id=TEXTFORMAT>nocne второго дескриптора STYLE.<p>
<script>
document.ids.TEXTFORMAT.textDecoration
"underline";
</script>
<P id=TEXTFORMAT>no^e дескриптора SCRIPT. <p>
</html>
Глава 8. Клиентская сторона
document.images
document.images
document.images[индекс]
Свойство images определяет массив, в котором содержатся все объекты, встречающиеся
в HTML-документе и заданные с помощью дескриптора <img>. Свойство images вклю-
включает свое собственное свойство, length, которое определяет количество объектов в мас-
массиве. Значение параметра индекс находится в диапазоне от нуля до length — 1.
В коде из листинга 8.80 с помощью массива images осуществляется доступ к источнику
каждого изображения.
Листинг 8.80. Получение доступа к изображениям с помощью массива images
<html>
<h2 >Окружность</Ь2 >
<img src="circle.gif">
<п2Жвадрат</п2>
<img src=" square. gif"Xbr>
<script type="text/javascript" languages"JavaScript">
<! —
// Отображение на экране источника каждого объекта Image.
for(i=0;i<document.images.length;i++)
{
document.write("Источник объекта Image ",(i+1));
document.write (" is <iXb>" ,document, images [i] . src, "</bX/iXbr>") ;
}
// — >
</script>
</html>
document.images.length
document.images.length
Свойство length задает количество объектов в массиве images[].
В листинге 8.81 свойство length используется для отображения на экране количества
объектов изображений в HTML-документе.
Листинг 8.81. Определение количества изображений в документе с помощью
свойства length
<html>
<п2>Окружнос*ь</п2>
<img src="circle.gif">
<п2Жвадрат</п2>
<img src="square.gif"><br>
<script type="text/javascript" language="JavaScript">
<! —
// Отображение сведений о размере массива images.
document.write(document.images.length," объекта image.");
// —>
</script>
</html>
document.lastModified
document.lastModified
Six Свойство lastModified определяет дату и время последнего изменения документа на сервере.
«< Это свойство может оказаться очень полезным при работе с документами, содержащи-
содержащими информацию, которая зависит от некоторой даты. При использовании этой даты еле-
456 Часть III. Справочник по JavaScript
дует быть осторожным, поскольку Web-серверы не всегда предоставляют информацию о
дате последнего изменения. Если информация о дате отсутствует, значение свойства
lastModified будет соответствовать полночи 1 января 1970 г. (по Гринвичу).
Код из листинга 8.82 создает прейскурант цен на одежду со скидкой, начиная с даты
последнего изменения документа.
Листинг 8.82. Отображение на экране прейскуранта цен на базе значения
свойства lastModified
<html>
<center>
<п2>ПРОДАЖА ОДЕЖДЫ СО СКИДКОЙ</Ь2>
<script type="text/javascript" language="JevaScript">
document.write("Начиная с ",document.lastModified," следующие
предметы одежды ") ;
document.write("будут продаваться со скидкой sa протяжении одной
недели ") ;
document.write("поэтому заказывайте прямо сейчас!<Ьг>");
// —>
</script>
<table border=ON>
<tr>
<th>npeflM6T</th>
<ЬЬ>Розничная цена</№>
<th>UeHa со скидкой</№>
</tr>
<tr>
<td>4>yT6onica</td>
<td>$20.00</td>
<tdXf ont color="RED">$10. 99</f ont></td>
</tr>
<tr>
<td>$60.00</td>
<td><font color="RED">$30. 99</fontX/td>
</tr>
<tr>
<td>$25.00</td>
<tdxfont color="RED">$15.00</fontX/td>
</tr>
</table>
</center>
</html>
dOCUinent.layerS JavaScrip^t^i.2-1,4
document.layers
document.layers[индекс]
Свойство layers определяет массив, содержащий все объекты, которые встречаются в
HTML-документе в дескрипторе <1ауег>. Свойство layers включает свое собственное свой-
свойство, length, которое определяет количество объектов в массиве. Значение index находится
в диапазоне от нуля до length - 1.
ПРЕДУПРЕЖДЕНИЕ
Свойство layers на поддарживаатся a JavaScript 1.5, поэтому
оно недоступно при использовании браузера Netscape В.
В листинге 8.83 создаются два слоя, а затем с помощью свойства Iayers[] их имена вы-
выводятся в нижней части страницы.
Глава 8. Клиентская сторона 457
Листинг 8.83. Получение доступа к объектам Layer с помощью свойства layers[].
<html>
<layer name="Layerl"
PAGEX=50
PAGEY=50
width=100
height=10O
bgcolor="blue">Layer K/layer>
<layer name="Layer2"
PAGEX=150
PAGEY=150
width=100
height=10O
bgcolor="red">Layer 2</layer>
<script fcype="fcexfc/javascript" language»"JavaScript">
<!--
// Отображение на экране имен объектов Layer.
for (i=0; Kdocument. layers . length; i++)
(
document.write("Имя объекта layer ",(i+1));
document.write(" <ixb>",document.layers[i].name,"</b></i><br>")
}
// — >
</script>
</html>
document.layers.length
document.layers.length
■fiujb Свойство length определяет количество объектов в массиве layers [].
ПРЕДУПРЕЖДЕНИЕ
Свойство length массива layers[] нв поддерживается в
JavaScript 1.5. поэтому оно недоступно при испольэоаении бреуэере Netscepe 6.
В коде из листинга 8.84 создается два слоя, а затем с помощью свойства length их име-
имена отображаются в нижней части страницы.
Листинг 8.84. Получение доступа к объектам Layer с помощью свойства length
<html>
<layer name="Layerl"
pagex=50
pagey=50
width=100
height=100
bgcolor="blue">Layer K/layer>
<layer name="Layer2"
pagex=150
pagey=150
width=100
height=100
bgcolor="red">Layer 2</layer>
<script type="text/javascript" language="JavaScript">
<! —
// Отображение на экране размера массива layers,
document.write(document.layers.length," объектов layer.");
// —>
</script>
</html>
dOCliment.linkColor JavaScript 1.0+. ECMAScript 1.0+, Script 1.0+
document.linkColor
4DO Часть III. Справочник по JavaScript
#С помошью свойства linkCoior устанавливается цвет непосещенных ссылок. Цвет может
задаваться с помощью строки шестнадцатеричных цифр или имени стандартного в HTML
цвета. Шестнадцатеричный формат состоит из шести цифр, соответствующих шаблону
"RRGGBB".
В листинге 8.85 устанавливается зеленый цвет для всех непосещенных ссылок.
Листинг 8:85. Определение цвета ссылок с помощью свойства linkCoior
<html>
<а href="myGreenPage.html">3eneHbBi Web-carra</aXbr>
<script type="text/javascript" language="JavaScript">
<! —
// Установить зеленый цвет непосещенных ссылок.
document.linkColor=0ff00";
// —>
</script>
<a href="myGreenGrassPage.html">Web-CTpaHtn;a цвета зеленой травы</а>
</html>
document.links
document.. links
document.links[индекс}
Свойство links определяет массив, содержащий все объекты Link, которые встречаются
в HTML-документе, в дескрипторах <а href="soiwce">. Свойство links включает свое соб-
собственное свойство, length, которое определяет количество объектов Link в массиве. Зна-
Значение параметра индекс находится в диапазоне от нуля до length — 1. Детальное описа-
описание всех свойств ссылок приводится в описании объекта link ранее в настоящей главе.
ПРЕДУПРЕЖДЕНИЕ
■ Несмотря на то что точки привязки создаются с помощью деск-
дескрипторов <а>, они не попадают в массиа links. Точки привязки хранятся в массиве
anchors документа.
В коде из листинга 8.86 на экран выводятся URL всех ссылок, находящихся в массиве
links[].
Листинг 8.86. Вывод на экран URL всех ссылок, относящихся к массиву links.
<html>
<а href="EmployeeList.html">Web-CTpaHima служащих</а><Ьг>
<а href="EmployeeBenefits.html">КеЬ-страница доходов служащих</аХЬг>
<script type="text/javascript" language="JavaScript">
<! —
// Вывод на экран URL объектов Link
for(i=0;i<document.links.length;i++)
<
document, write ("URL об-ьеква link ",(i+l));
document, write (" <i><b>" , document .links [i] .href, "</bX/iXbr>") ;
}
// —>
</script>
</html>
document.links.length
document.links.length
Свойство length определяет количество объектов Link в массиве document.links.
В листинге 8.87 свойство length используется для вывода на экран количества ссылок в
HTML-документе.
Глава 8. Клиентская сторона
459
Листинг 8.87. Определение количества ссылок в документе с помощью
свойства length.
<html>
<а href="EmployeeList.html">ИеЬ-страница, содержащая сведения о
w служащих</а><Ьг>
<а href="EmployeeBenefits.html">Web-cTpaHH4a, описывающая доходы
** служащих</аХЬг>
<script type="text/javascript" language="JavaScript">
// Отображение на экране размер массива links.
document.write(document.links.length," ссылки.");
// — >
</script>
</html>
dOCUinent.OnClick JavaScrlpt1.O+. JScript+1.0-3.0
document.onClick
Обработчик события onClick определяет, что будет происходить при щелчке мышью на
объекте Document.
j В листинге 8.88 сценарий в дескрипторе <head> документа устанавливается функция,
которая будет обрабатывать все события Click документа. Для этого используется метод
captureEvents() документа, который перехватывает все события Event.CLICK. При щел-
щелчке мышью на самой странице обработчик события объекта Document выводит на экран
окно предупреждения, которое сообщает пользователю о возникновении события.
Листинг 8.88. Обработка событий Click с помощью обработчика событий onClick
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
<! —
// Указать браузеру, что необходимо перехватывать ВСЕ события
// Click на странице, и объявить функцию, которая будет
// выполнять обработку.
document.captureEvents(Event.CLICK);
document.onClick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий Click.
function myClickHandler(e){
alert("В документе произошло событие Click!");
}
// — >
</script>
</head>
<body>
При щелчке кнопкой мыши на документе на экране появится
окно предупреждения с сообщением о возникновении события Click.
</body>
</html>
document.OnDblClick JavaSarlptl.O+.
document.onDblClick
| Обработчик события onDblClick определяет, что будет происходить при двойном щелч-
ке мышью на объекте Document.
В листинге 8.89 сценарий в дескрипторе <head> документа устанавливает функцию, ко-
торая будет обрабатывать все события DblCIick документа. Для этого используется метод
captureEvents() документа, который перехватывает все события Event.DBLCLICK. При
двойном щелчке мышью на самой странице обработчик события объекта Document вы-
выводит на экран окно предупреждения, которое сообщает пользователю о возникновении
события.
460 Часть III. Справочник по JavaScript
Листинг 8.89. Обрвботка событий DblClick с помощью обработчика событий onDblClick
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
<! —
// Указать браузеру, что необходимо перехватывать ВСЕ события
// DblClick на странице, и объявить функцию, которая будет
// выполнять обработку.
do-cument.captureEvents (Event.DBLCLICK) ;
document.onDblClick = myDblClickHandler;
// Объявить функцию myDblClickHandler для обработки событий DblClick.
function myDblClickHandler(e) {
alert("В документе произошло событие DblClick!");
}
// —>
</script>
</head>
<body>
При выполнении двойного щелчка кнопкой мыши на документе на экране
отобразится окно предупреждения с сообщением о происшедшем событии
DblClick.
</body>
</html>
document.onKeyDown JavaScriPti.o+.
document.onKeyDown
Обработчик события onKeyDown Определяет, что будет происходить при нажатии клавиши
в то время, когда установлен фокус для объекта Document.
j В листинге 8.90 сценарий, заключенный в дескриптор <head> документа, определяет
функцию, которая будет обрабатывать все события KeyDown документа. Для этого исполь-
используется метод captureEvents() документа, который перехватывает все события
Event.KEYDOWN. При нажатии клавиши на странице обработчик события объекта
Document отображает на экране окно предупреждения, в котором сообщается пользова-
пользователю о происшедшем событии.
Листинг 8.90. Обрвботка событий KeyDown с помощью обработчике событий onKeyDown
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
<!--
// Указать браузеру, что необходимо перехватывать ВСЕ события
// KeyDown на странице, и объявить функцию, которая будет
// выполнять дальнейшую обработку.
document.captureEvents(Event.KEYDOWN);
document.onKeyDown = myKeyDownHandler;
// Объявить функцию myKeyDownHandler для обработки событий KeyDown.
function myKeyDownHandler(e){
alert("В документе произошло событие KeyDown!");
</script>
</head>
<body>
При нажатии клавиши в документе на экране появится
окно предупреждения с сообщением о возникновении события KeyDown.
</body>
</html>
Глава 8. Клиентская сторона Ч-Ь I
document.onKeyPress JavaScripts, JScripM.0-3.0
document.onKeyPress
Обработчик события onKeyPress определяет, что будет происходить при нажатии клавиши
в то время, когда фокус находится на объекте Document.
В листинге 8.91 сценарий в дескрипторе <head> документа устанавливает функцию, ко-
которая будет обрабатывать все события KeyPress документа. Для этого используется метод
captureEvents() документа, который перехватывает все события EventKEYPRESS. При на-
нажатии клавиши на странице обработчик события объекта Document выводит на экран окно
предупреждения, которое сообщает пользователю о возникновении события.
Листинг 8.91. Обработка событий KeyPress с помощью обработчика событий onKeyPress
<html>
<head>
<script type="text/javascript" language»"JavaScriptl.2">
// Указать браузеру, что необходимо перехватывать ВСЕ события
// KeyPress на странице, и объявить функцию, которая будет
// выполнять обработку.
document.captureEvents(Event.KEYPRESS);
document.onKeyPress = myKeyPressHandler;
// Объявить функцию myKeyPressHandler для обработки событий KeyPress.
function myKeyPressHandler(e){
alert("В документе произошло событие KeyPress!");
</script>
</head>
<body>
При нажатии клавиши клавиатуры в документе на экране появится
окно предупреждения с сообщением о возникновении события KeyPress.
</body>
</html>
dOCUITient.OnKeyUp JavaScript1.O+. JScnpt+1.0-3.0
document.onKeyUp
Обработчик события onKeyUp определяет, что будет происходить при нажатии и отпус-
отпускании клавиши в то время, когда фокус находится на объекте Document.
В листинге 8.92 сценарий в дескрипторе <head> документа определяет функцию, кото-
которая будет обрабатывать все события KeyUp документа. Для этого используется метод
captureEvents() документа, который перехватывает все события Event.KEYUP. При на-
нажатии и отпускании клавиши на странице обработчик события объекта Document выво-
выводит на экран окно предупреждения, которое сообщает пользователю о происшедшем
события.
Листинг 8.92. Обработка событий KeyUp с помощью обработчика событий onKeyUp
<html>
<head>
<script type="text/javascript" languages"JavaScriptl.2">
// Указать браузеру, что необходимо перехватывать ВСЕ события
// KeyUp на странице, и объявить функцию, которая будет выполнять
// обработку.
document.captureEvents(Event.KEYUP);
document.onKeyUp = myKeyUpHandler;
// Объявить функцию myKeyUpHandler для обработки событий KeyUp.
function myKeyUpHandler (e){
Ч-Ьс. Часть III. Справочник по JavaScript
alert("В документе произошло событие KeyUp!");
</script>
</head>
<body>
При нажатии и отпускании клавиши клавиатуры в документе на экране
появится
окно предупреждения с сообщением о возникновении события KeyUp.
</body>
</html>
document.onLoad JavaScriPti.o+. jscript ш
onLoad="команда"
# Обработчик события onLoad объекта Document вызывается после завершения загрузки
страницы в данный конкретный экземпляр окна. Этот обработчик события фактически при-
принадлежит объекту Window, но доступ к нему осуществляется через объект Document.
ПРИМЕЧАНИЕ
Событие onLoad в дескрипторе <body> документа, который загружа-
загружается во фрейм, происходит перед возникновением события указанного в дескрипторе
<frameset>, загружаемого в документ.
В листинге 8.93 благодаря использованию обработчика события onLoad при завершении
загрузки страницы на экран выводится окно предупреждения.
Листинг 8.93. Обработка события Load с помощью обработчика события onLoad
<html>
<body onLoad='alert("Документ полностью Еагружен.")'>
<п2>Событие document.onLoad</h2>
</body>
</html>
d0CUment.0nM0USeD0Wn JavaScript1.0+. JScript+1.O-3.O
document.onMouseDown
> Обработчик события onMouseDown определяет, что будет происходить при нажатии кноп-
кнопки мыши в момент установки на объекте Document.
В листинге 8.94 сценарий в дескрипторе <head> документа определяет функцию, кото-
которая будет обрабатывать все события MouseDown документа. Для этого используется ме-
метод captureEventsO документа, который перехватывает все события Event.MOUSEDOWN.
При нажатии кнопки мыши на самой странице обработчик события объекта Document
выводит на экран окно предупреждения, которое сообщает пользователю о возникнове-
возникновении события.
Листинг 8.94. Обработке событий MouseDown с помощью обработчика
событий onMouseDown
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
<!--
// Указать браузеру, что необходимо перехватывать ВСЕ события
// MouseDown на странице,
// и объявить функцию, которая будет выполнять обработку.
document.captureEvents(Event.MOUSEDOWN);
document.onMouseDown = myMouseDownHandler;
//Объявить функцию myMouseDownHandler для обработки событий MouseDown
function myMouseDownHandler(e){
alert("В документе произошло событие MouseDown!");
Глава 8. Клиентская сторона
</script>
</head>
<body>
При нажатии клавиши мыши в момент установки курсора на документе
на экране появится окно предупреждения с сообщением о наступлении
события MouseDown.
</body>
</html>
dOCUment.OnMoiiSeUp JavaScrlpt1.O+. JScripM.0-3.0
document.onMouseDp
Обработчик события onMouseUp определяет, что будет происходить при нажатии и пос-
последующем отпускании кнопки мыши в момент установки курсора на объекте Document.
В листинге 8.95 сценарий в дескрипторе <head> документа устанавливает функцию, ко-
которая будет обрабатывать все события MouseUp документа. Для этого используется ме-
метод captureEvents() документа, который перехватывает все события EventMOUSEUP. При
нажатии и последующем отпускании кнопки мыши на самой странице обработчик со-
события объекта Document выводит на экран окно предупреждения, в котором сообщает-
сообщается пользователю о возникновении события.
Листинг 8.95.Обработка событий MouseUp с помощью обработчика событий onMouseUp
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
<!--
// Указать браузеру, что необходимо перехватывать ВСЕ события
/ / MouseUp на странице,
// и объявить функцию, которая будет выполнять обработку.
document.captureEvents(Event.MOUSEUP);
document.onMouseUp = myMouseUpHandler;
// Объявить функцию myMouseUpHandler для обработки событий MouseUp.
function myMouseUpHandler(e){
alert("В документе произошло событие MouseUp!");
}
// —>
</script>
</head>
<body>
При нажатии и отпускании кнопки мыши на документе на экране
появится окно предупреждения с сообщением о возникновении события
MouseUp.
</body>
</html>
document.onUnLoad
onUnLoad="команда"
Обработчик события onUnLoad объекта Document вызывается после выгрузки страницы
из данного конкретного экземпляра окна. Этот обработчик события фактически принад-
принадлежит объекту Window, однако доступ к нему осуществляется через объект Document.
Более подробная информация приведена в описании обработчика события
Window.onUnLoad.
ПРИМЕЧАНИЕ1
Событие onUnLoad в дескрипторе <body> документа, который загру-
загружается ао фрейм, происходит перад возникновением события указанного а дескриптора
<frameset> загружаемого в документ.
464 Часть III. Справочник по JavaScript
В листинге 8.96, благодаря использованию обработчика события onUnLoad, при щелчке
на ссылке на фиктивную HTML-страницу выводится окно предупреждения.
Листинг 8.96. Обработка события UnLoad с помощью обработчикв события onUnLoBd
<html>
<body onUnLoad='alert("Пожалуйста, не покидайте эту страницу!")'>
<а href="nextpage.Ьйт1">Для перехода на следующую страницу щелкните
на этой ссылке. </а>
</body>
</html>
document.open()
document.open()
document.open(тип_т±те)
)Ь Метод ореп() объекта Document очищает текущий документ и открывает новый поток
данных для помещения в документ. Этот метод принимает один аргумент, munjtmme,
который определяет, какой тип данных будет сохраняться в документе. Аргумент
mun_mime может быть одним из следующих типов: text/html, text/plain, image/gif, image/
jpeg или image/x-bitmap.
IВ листинге 8.97 с помощью метода ореп() открывается документ, в который записыва-
записывается текст.
Листинг 8.97. Открытие документа с помощью метода ореп()
<script type="text/javascript" language="JavaScript">
<! —
document.open()
document.write("Поток текста, направляемого в документ");
document.close()
// —>
</script>
rinriimpnt nlnainq JavaScript 1.1+. JScript 1.0+
aocument.piugins Nav3+ |E3+ Opera3+
document.plugins
document.plugins[индекс]
k Свойство plugins определяет массив, в котором содержатся все внедренные объекты и
подключаемые модули, встречающиеся в HTML-документе в дескрипторе < embed>.
Свойство plugins имеет свое собственное свойство, length, определяющее количество
объектов в массиве. Значение индекс находится в диапазоне от нуля до length — 1.
ПРИМЕЧАНИЕ
Массив pluginsH содержит та же данные, что и массив
document. embeds[].
В листинге 8.98 свойство length используется для отображения на экране количества
объектов, внедренных в HTML-документ.
Листинг 8.98. Вывод на экран количества внедренных объектов с помощью
свойства plugins
<html>
<Ь2>Геометрические фигуры</Ь2>
<п2>Окружность</п2>
<embed src="circle.gif">
<п2>Квадрат</п2>
<embed src="square.gif">
<script type="text/javascript" language="JavaScript">
// Отображение на экране сведений о размере массива plugins.
document.write(document.plugins.length," внедренных объектов.");
</script>
</html>
Глава 8. Клиентская сторона 4Б5
document.plliginS.length JavaScript 1.1+. Script 1.0+
document.plugins.length
^Свойство length описывает количество объектов, находящихся в массиве plugins[].
В листинге 8.99 свойство length используется для вывода на экран количества объектов,
внедренных в HTML-документ.
Листинг 8.99. Отображение на экране количества внедренных объектов с помощью
свойства length.
<html>
<Ь2>Окружность</п2>
<embed src="circle.gif ">
<Ь2Жвадрат</п2>
<embed src="square.gif">
<script type="text/javascript" language="JavaScript">
// Отображение сведений о размере массива plugins.
document.write(document.plugins.length," внедренных объектов.");
</script>
</html>
document.referrer JavaScript 1.0+, Kcnpt 3.0+
document.referrer
& Свойство referrer содержит URL документа, который использовался для перехода на те-
i кущий документ. Если URL был введен непосредственно в адресной строке браузера, это
свойство будет пустым.
В листинге 8.100 свойство referrer используется для создания ссылки в текущем доку-
документе на предыдущий документ.
Листинг 8.1ОО.Соэдание ссылки на предыдущий документ с помощью свойства referrer
<script type="text/javascript" language="JavaScript">
// Создать ссылку на предыдущий документ.
document.write("<a href='",document.referrer,"'>Вернуться назад</а>");
</script>
document. releaseEvents() lavaSai&ll-ll
document.releaseEvents{событие)
document.releaseEvents(событие! | событие2 | событиеЩ
% Метод reIeaseEvents() объекта Document освобождает все события указанного типа, пе-
' рехваченные ранее с помощью метода Document.captureEvents(). Освободить можно со-
события следующего типа:
EventABORT • Event.MOUSEDOWN
Event.BLUR e Event.MOUSEMOVE
Event.CHANGE
Event.CLrCK
Event.DBLCLICK
Event.DRAGDROP
Event.ERROR
Event.FOCUS
Event.KEYDOWN
Event.KEYPRESS
Event.KEYUP
Event. LOAD
Event.MOUSEOUT
Event.MOUSEOVER
Event.MOUSEUP
Event.MOVE
Event.RESET
Event.RESIZE
Event. SELECT
EventSUBMIT
Event. UNLOAD
Часть III. Справочник по JavaScnpi
После перехвата одного из указанных событий пользователь может указать функцию, ко-
которая будет использоваться вместо стандартного обработчика событий. Для освобождал
события после его перехвата служит метод releaseEvents().
В листинге 8.101 создается текстовое поле и кнопка. Сценарий в дескрипторе <head> до-
документа объявляет функцию, которая будет использоваться для обработки событий Ш
документа. Для этого применяется метод captureEvents() документа, который перехваты-
перехватывает все события Event.CLICK. При щелчке мышью на странице значение счетчика, ко-
который отображается в текстовом поле, увеличивается на единицу.
При нажатии на клавишу мыши происходит событие MouseDown и освобождается со-
событие Event.CLICK. После этого при щелчке на странице мышью прирашения счетчика
не происходит.
Листинг 8.101. Использование метода releaseEventsO для прекращения перехвата
событий определенного типа
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
<! —
// Объявление счетчика количества щелчков.
var counter = О;
//Указать браузеру, что необходимо перехватывать ВСЕ события Click
//на странице и объявить функцию, которая будет выполнять обработку,
document.captureEvents(Event.CLICK);
document.onclick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий Click,
function myClickHandler(e){
// Передавать все события Click обработчику события
// onclick текстового поля.
document.myForm.myText.handleEvent(e) ;
}
// Эта функция вызывается обработчиком события onclick текстового
// поля. Вывести на экран количество щелчков,
function changeText(){
document.myForm.myText.value = counter++;
}
// Прекратить перехват событий Click,
function releaseClick() {
document.releaseEvents(Event.CLICK);
document.onClick="";
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input type=TEXT size=2 value="" name="myText"
onClick="changeText() ">
<input type=BUTTON value="Прекратить перехват событий"
onMouseDown="releaseClick() ">
</form>
</body>
</html>
document. routeEventO JavaScriC
document.routeEvent(событие)
bk Метод routeEventO объекта Document передает все события указанного типа, перехва
г ченные ранее с помощью метода Document.captureEvents(), стандартным обработчика
событий. Передаваться могут события следующих типов:
Глава 8. Клиентская сторона 4Ь/
EventABORT
EventBLUR
Event.CHANGE
Event.CLICK
Event.DBLCLICK
EventDRAGDROP
EventERROR
Event.FOCUS
Event. KEYDOWN
Event.KEYPRESS
Event-KEYUP
Event.LOAD
Event.MOUSEDOWN
Event-MOUSEMOVE
Event.MOUSEOUT
Event.MOUSEOVER
Event.MOUSEUP
Event.MOVE
Event.RESET
Event.RESIZE
Event.SELECT
EvenLSUBMIT
Event.UNLOAD
После перехвата одного из указанных событий пользователь может указать функцию, ко-
которая будет использоваться вместо стандартного обработчика события. Для освобождения
события после его перехвата служит метод releaseEvents().
В листинге 8.102 создается текстовое поле и ссылка. Сценарий в дескрипторе <head> до-
документа объявляет функцию, которая будет использоваться для обработки событий Click
документа. Для этого используется метод captureEvents() документа, который перехва-
перехватывает все события Event.CLICK. При щелчке мыши на странице значение счетчика, ко-
который отображается в текстовом поле, увеличивается на единицу.
При щелчке мышью на ссылке происходит событие MouseDown, а событие Event.CLICK
передается для обработки обычным способом. После этого при щелчке на странице при-
приращения счетчика не происходит.
Листинг 8.102. Использование метода routeEventO для передачи перехваченных
событий стандартным обработчикам
<html>
<head>
<script type="text/javascript" language="JavaScriptl. 2">
<! —
// Объявление переменной счетчика щелчков,
var counter = 0 ;
//Указать браузеру, что необходимо перехватывать ВСЕ события Click
//на странице и объявить функцию, которая будет выполнять обработку,
document.captureEvents(Event.CLICK);
document.onclick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий Click,
function myClickHandler(e){
// Передавать все события Click обработчику события onclick
// текстового поля.
document.myForm.myText.handleEvent(e);
}
// Эта функция вызывается обработчиком события onclick текстового
// поля. Отобразить на экране количество щелчков,
function changeText(){
document.myForm.myText.value = counter++;
}
// Прекратить перехват событий Click,
function releaseClick(){
document.routeEvent(Event.CLICK);
}
// —>
</script>
</head>
<body>
<form name="myForm">
468
Часть III. Справочник по JavaScript
<input type="TEXT" size=" value="" name="myText"
onClick="changelext()">
<a href="http://www.purejavascript.com"
onMouseDown="window.routeEvent(Event - CLICK)">1Делкните на эфой
"-♦ссылке! </а>
</form>
</body>
</html>
JavaScript 1.2+
Nav4t
document.tags
document. tags . имя_дескрипгора. стиль
j Свойство tags определяет ассоциативный массив, в котором содержатся дескрипторы,
соответствующие таблицам стилей Netscape. С помощью точечной нотации параметр или.-
дескриптора указывает HTML-дескриптор, к которому применяется стиль style. Дескрип-
Дескрипторы таблиц стилей создаются в дескрипторах <style> и <script> с использованием языков
JavaScript или HTML.Указываемый стиль может быть одним из стилей или методов, пе-
перечисленных в табл. 8.10. Более подробная информация по всем перечисленным свойствам
приведена в описании объекта Style далее в настоящей главе.
ПРИМЕЧАНИЕ
При создании дескрипторов убедитесь в том, что объявление дескрип-
дескриптора находится перед использованием нового дескриптора, поскольку многие HTML-
объекты после создания не допускают внесения изменений.
ПРИМЕЧАНИЕ
Если при создании нового дескриптора внутри дескрипторов <style>
используется точечнея нотация, document указыветь не обязательно.
Таблица 8.10. Свойства и методы объекта Style, которые можно использовать в свойстве tags.
Тип
Элемент
Описание
Свойство align
Выравнивание элемента внутри родительского элемента.
backgroundColor
Цвет фона элемента.
backgroundlmage Фоновый рисунок элемента.
borderBottomWidth Ширина нижней границы элемента.
borderColor
Цвет границы элемента.
borderLeftWidth
Ширина левой границы элемента.
borderRightWidth
Ширина правой границы элемента.
borderStyle
Стиль границы элемента.
borderTopWidth
Ширина верхней границы элемента.
clear
Стороны элемента, где запрещены плавающие элементы.
color
Цвет переднего плана элемента.
display
Выводимый на экран элемент.
fontFamily
Используемый элементом шрифт.
fontSize
Кегль используемого элементом шрифта.
fontStyle
Стиль используемого элементом шрифта.
fontWeight
Ширина используемого элементом шрифта.
Глава 8. Клиентская сторона
469
Тип
Метод
Элемент
lineHeight
NstStyleType
marginBottom
marginLeft
marginRight
marginTop
paddingBottom
paddingLeft
paddingRight
paddingTop
textAlign
textDecoration
textlndent
textTransform
verticalAlign
whiteSpace
width
borderWidths()
margins()
paddings()
Описание
Расстояние между двумя соседними линиями.
Формат элементов списка.
Расстояние между нижней границей элемента и верхней
границей другого элемента.
Расстояние между левой границей элемента и правой
границей другого элемента.
Расстояние между правой границей элемента и левой
границей другого элемента.
Расстояние между верхней границей элемента и нижней
границей другого элемента.
Расстояние между нижней границей элемента и его
содержимым.
Расстояние между левой границей элемента и его
содержимым.
Расстояние между правой границей элемента и его
содержимым.
Расстояние между верхней границей элемента и его
содержимым.
Выравнивание текста внутри элемента.
Тип декоративного оформления текста.
Абзацный отступ перед текстом.
Преобразование, которое необходимо применить к тексту.
Вертикальное выравнивание элемента.
Порядок обработки служебных символов в элементе.
Ширина элемента.
Ширина границы вокруг элемента.
Расстояние между границей элемента и границами
соседних элементов.
Расстояние между границами элемента и его содержимым.
ЛВ листинге демонстрируются 8.103 три различные способа создания дескрипторов таблиц
стилей в языках JavaScript и HTML внутри дескрипторов <style> H<script>.Обратите вни-
внимание, что на конечный результат влияет порядок объявления дескрипторов.
Листинг 8.103. Создание дескрипторов таблиц стилей
<html>
<style type="text/css">
Р {font-style: italic;}
</style>
<р>После первого дескриптора STYLE.<р>
<style type="text/javascript">
tags.P.fontWeight = "bold";
</style>
<р>После второго дескриптора STYLE.<p>
470 Часть III. Справочник по JavaScript
<script>
<! —
document.tags.P.textDecoration = "underline"
// —>
</script>
<р>После дескриптора SCRIPT.<p>
</html>
document.title iavaSCNali%TZ£
document.title
~й Свойство title представляет собой строку, доступную только для чтения, которая содержи
название документа. Как правило, это свойство устанавливается с помощью дескрипто-
дескриптора <title>.
В листинге 8.104 с помощью свойства title на экран выводится название Web-страншы.
Листинг 8.104. Использование свойства title документа
<html>
<head><title>MoH Web-cTpaHH4a</titleX/head>
<script>
// Вывести на экран название документа.
document.write("Название страницы <i>");
document.write(document.title,"</i>");
</script>
document.unwatch()
document.unwatch(свойство)
Щ Метод unwatch() объекта Document используется для прекращения отслеживания свой-
» ства, указанного в параметре свойство.
В листинге 8.105 приведен пример использования метода unwatch() для прекращения от-
отслеживания свойства fgColor объекта Document после замены значения свойства на "Си-
"Синий".
ПРЕДУПРЕЖДЕНИЕ
Ошибке, связеннея с методами watch() и unwatch(), предотв-
предотвращает аывод текста с новым цветом в браузере, даже несмотря на то, что значение
свойстве fgColor было изменено.
Листинг 8.105. Использование метода unwatchO объекта Document
<html>
<ЬЖакого цвета этот текст?</ЬХЬг><Ьг>
<script type="text/javascript" language="JavaScript">
<!--
function alertme(id,oldValue,newValue)
{
document.write (id + " изменилось с " + oldValue + " на ");
document.write(newValue + "<br>");
return newValue;
}
// Начало отслеживания.
document.watch("fgColor",alertme);
document.write("Первоначальный цвет текста: "
+ document.fgColor + "<br>");
// Изменение цвета текста,
document.fgColor = "Blue";
document.write("Новый цвет текста: " + document.fgColor + "<br>");
Глава 8. Клиентская сторона Ч- / I
// Прекращение отслеживания.
document.unwatch("fgColor");
// Изменение цвета текста.
document.fgColor = "Red";
document.write("Окончательный цвет секста:
+ document.fgColor + "<br>");
// —>
</script>
</html>
document.URL
documen t. DRL
Ц Свойство URL содержит URL документа. Это свойство доступно только для чтения.
ЛВ листинге 8.106 свойство URL используется для вывода на экран URL документа.
Листинг 8.106. Использование свойства URL документа
<html>
<script>
<!--
// Отображение URL документа.
document.write("ORL этой страницы -->",document.URL);
// —>
</script>
</html>
document.vlinkColor JavaScript 1.0+, JScript W
document.vlinkColor
f Свойство vlinkColor устанавливает цвет посещенных ссылок. Цвет может задаваться с по-
помощью строки шестнадцатеричных цифр или именем стандартного в HTML цвета. Ще-
стнадцатеричный формат состоит из шести цифр, соответствующих шаблону "RRGGBB".
i/jB листинге 8.J07 устанавливается зеленый цвет всех посещенньк ссылок только в том слу-
г чае, если они находятся перед дескрипторами <script>.
Листинг 8.107. Определение цвета посещенных ссылок с помощью свойства vlinkColor
<html>
<а href="myGreenPage.html">SejieHbift Web-caUT</aXbr>
<script type="text/javascript" language="JavaScript">
<! —
//Установить зеленый цвет посещенных ссылок.
document.vlinkColor=Off00" ;
// —>
</script>
<a href="myGreenGrassPage.html">Web-c!cpaHH4a цвета зеленой травы</а>
</html>
document.watchO 425?nes£
document.watch(свойство,функция)
t Метод watch() объекта Document используется для включения отслеживания свойства,
указанного в параметре свойство. При изменении параметра свойство после вызова ме-
метода watch() вызывается функция, указанная в параметре функция.
у$В листинге 8.108 приведен пример использования метода watch() для включения отсле-
г живания свойства fgColor объекта Document.
ПРЕДУПРЕЖДЕНИЕ
Ошибка, связанная с методами watch() и unwatch(), предотв-
)ащает вывод текста с новым цветом в браузере, деже несмотря на то, что значение
мйства fgColor было изменено.
4 / С. Часть III. Справочник по JavaScript
Листинг 8.108. Использование метода watchO объекта Document
<html>
<ЬЖакого цвета этот текст?</Ь><Ьг><Ьг>
<script type="text/javascript" language="JavaScript">
<!--
function alertme(id,oldValue,newValue)
{ "*'
document.write (id + " изменилось с " + oldValue + " на ") ;
document.write(newValue + "<br>");
return newValue;
}
// Начать отслеживание,
document.watch("fgColor",alertme);
document.write("Первоначальный цвет текста: "
+ document.fgColor + "<br>");
// Изменение цвета текста,
document.fgColor = "Blue";
document.write("Окончательный цвет текста: "
+ document.fgColor + "<br>");
// -- >
</script>
</html>
document.write()
document.write(знавение, . . . .)
Метод write() дописывает в конец документа в виде строки аргумент (или аргументы,
разделенные запятыми) значение. Если какой-нибудь из аргументов не является строкой,
перед записью в документ он преобразуется в строку.
Э^ листинге 8.109 с помошью метода write() в документ записывается текст и значение
свойства.
Листинг 8.109. Запись текста в документ с помощью метода write()
<html>
<head><title>Kинoфильмы</title></head>
<script type="text/javascript" language="JavaScript">
<!--
/ / Запись данных в текущий документ.
document.write("Название этой Web-страницы <u>");
document.write(document.title,"</u>");
// — >
</script>
</html>
document.writeln()
document.writeln(значение,. . . .)
Метод writeln() дописывает в конец документа в виде строки аргумент (или аргумен-
аргументы, разделенные запятыми) значение. В отличие от метода write(), метод writeln() после за-
записи последнего аргумента вставляет символ новой строки. Если какой-нибудь из аргументов
не является строкой, перед записью в документ он преобразовывается в строку.
jB листинге 8.110 с помощью метода writelnO в документ записывается текст и значение
свойства. Для того чтобы на Web-странице, был виден символ новой строки, вставляе-
вставляемый методом writelnO, следует воспользоваться дескриптором <рге>.
Листинг 8.110. Запись текста в документ с помощью метода writelnO
<html>
<head>< ti й1е>Кинофилыш</ti tle></head>
<script type="text/javascript" languages"JavaScript">
Глава 8. Клиентская сторона 4 / и
// Запись данных в текущий документ.
document.writeln("<рге>Название этой Web-страницы <и>");
document.writeln(document.title,"</u></pre>");
// —>
</script>
</html>
JavaScript 1.0+, JScript 3.0+
Nav2+, IE4+, Opera3+
Основной объект клиентской части языка JavaScript.
f Объект Embed позволяет получить доступ к любому объекту, внедренному в Web-стра-
Web-страницу с помощью дескриптора <embed>. Он является унаследованным от объекта Document.
Как правило, объект Embed используется при работе с аудио- и видеофайлами, но его
можно использовать и с другими типами файлов. Доступ к внедренным объектам осу-
осуществляется либо через массив embeds, либо по именам объектов.
В листинге 8.Ш приведен пример получения доступа к MIDI-файлу с помощью мас-
массива embeds.
При загрузке данного HTML-кода в окне браузера опция AUTOSTART дескриптора
<embed> автоматически начнет воспроизведение MIDI-файла. Для остановки воспроиз-
воспроизведения функция stopsong() вызывает метод stop, который является частью подключа-
подключаемого аудиомодуля браузера.
Листинг 8.111. Получение доступа к внедренному объекту с помощью мвссива embeds
<html>
<body>
<script "type="text/javascript" language="JavaScript">
// Эта функция останавливает воспроизведение MIDI-файла.
function stopsongO {
document.embeds[0] .stop ();
}
// —>
</script>
<embed src="phantom.mid" name="phantom" width=00"
height=0" autostart="true">
<br>
<form>
Для останова проигрывания MIDI-файла щелкните на кнопке останова.
<input type="button" value="CTon" onCLick='stopsong()'>
</form>
</body>
</html>
JavaScript 1.2+, JScript 1.0+
Nav4+, IE3+
Основной объект клиентской части языка JavaScript.
t Объект Event является встроенным объектом, который передает свойства обработчику
событий. Свойства объекта Event перечислены в табл. 8.11.
Тип
Свойство
Элемент
data
height
layerX
layerY
Таблица 8.11. Свойства объекта Event
Описание
Массив ссылок URL для перетаскиваемых объектов
Высота окна
Горизонтальное положение курсора в слое
Вертикальное положение курсора в слое
474
Тип
Метод
Элемент
modifiers
pageX
pageY
screenX
screenY
target
type
which
width
unwatch()
watch()
Часть III. Справочник по JavaScript
Описание
Разрядная маска, представляющая клавиши модификатора
Горизонтальное положение курсора на Web-странице
Вертикальное положение курсора на Web-странице
Горизонтальное положение курсора на экране
вертикальное положение курсора на экране
Объект, на котором перехватываются события
Тип события
Нажатая кнопка мыши
Ширина окна
Прекращение отслеживания свойства
Установка отслеживания свойства
Помимо свойств объекта Event, существуют события, которые можно обрабатывать. Пе-
Перечень возможных событий приведен в табл. 8.12.
Таблица 8.12. Обрабатываемые события
События
ABORT
BLUR
CHANGE
CLICK
DBLCLICK
DRAGDROP
ERROR
FOCUS
KEYDOWN
KEYPRESS
KEYUP
LOAD
MOUSEDOWN
MOUSEMOVE
MOUSEOUT
MOUSEOVER
MOUSEUP
MOVE
RESET
RESIZE
SELECT
Описание
Загрузка Web-страницы прервана пользователем.
Объект потерял фокус.
Содержимое или параметр объекта изменено.
Выполнен один щелчок мышью.
Выполнен двойной щелчок мышью.
Выполнено перетаскивание объекта.
При загрузке страницы произошла ошибка.
Объект получил фокус.
Удерживается клавиша клавиатуры.
Нажата клавиша клавиатуры.
Клавиша клавиатуры нажата и отпущена.
Документ загружен в окне браузера.
Нажата левая кнопка мыши.
Переместился курсор мыши.
Указатель мыши переместился за пределы объекта.
Указатель мыши переместился над объектом.
Левая кнопке мыши отпущена после нажатия.
Объект перемещен по экрану.
Нажата клавиша Reset.
Изменен размер объекта.
Выбран документ.
Глава 8. Клиентскея стороне 475
События Описание
SUBMIT Нажата клавиша Submit.
UNLOAD Документ выгружен из окна браузера.
Без использования своих свойств объект Event применяется только в качестве аргумен-
аргумента функций перехвата событий. Пример подобного использования показан в листинге
8.112. В примере перехватываются все события KEYPRESS и DBLCLICK объекта Window
и событие SUBMIT документа. После перехвата события передаются обработчикам собы-
событий, которые выполняют определенные функции. Два обработчика событий возвращают
свойства объекта Event.
Листинг 8.112. Использоввние ключевого слова Event
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Выполнение перехвата нескольких событий.
window.captureEvents(Event.KEYPRESS | Event.DBLCLICK);
document.captureEvents(Event.SUBMIT);
// Функция обрабатывает событие KEYPRESS,
function handlePress(evnt){
alert("Вы нажали клавишу на клавиатуре. Это вызвало событие: "
+ evnt.type);
return true;
)
// Функция обрабатывает событие DBLCLICK.
function handleDblClick(evnt){
alert("Вы выполнили двойной щелчок в точке: " + evnt.pageX
+ "," + evnt.pageY);
return(true) ;
}
// Функция обрабатывает событие SUBMIT,
function handleSubmit(evnt) {
alert("Вы щелкнули на кнопке Submit (Передать данные)");
)
// Приведенные ниже строки регистрируют:
// функцию handlePress в качестве обработчика событий KEYPRESS
// функцию handleDblClick в качестве обработчика событий DBLCLICK
// функцию handleSubmit в качестве обработчика событий SUBMIT
window.onKeyPress = handlePress;
window.onDblClick = handleDblClick;
document.onSubmit = handleSubmit;
// —>
</script>
Этот пример демонстрирует следующее:
<ЬгХЬг>
<11>Как перехватить несколько типов событий</11>
<ЦЖак с помощью обработчиков событий обработать перехваченные
события</11>
<11>Как получить доступ к свойствам объекта <b>event</b></li>
<ЬгХЬгХЬг>
При щелчке на кнопке Submit генерируется событие <b>SUBMIT</b>,
которое выводит на экран окно предупреждения.
<ЬгХЬг>
При выполнении на странице двойного щелчка возникает событие
<b>DBLCLICK</b>, которое выводит на экран окно предупреждения с
координатами точки, где был выполнен двойной щелчок.
47b Часть III. Справочник по JavaScript
<bi><br>
При нажатии клавиши клавиатуры возникает событие <b>KEYPRESS</b>
и на экран выводится окно предупреждения, в котором указывается
тип события.
<ЬгХЬгХЬг>
<form>
<input type="submit" value="nepeflaTb данные" onSubmit='■>
</form>
</body>
</html>
event.data
event.data
Свойство data объекта Event содержит массив строк, используемых для событий перетас-
перетаскиваемых объектов. Каждая строка массива содержит URL объекта. Если сценарий имеет
уровень привилегированности UniversalBrowserRead, свойство data может иметь доступ
только для чтения.
В листинге 8.113 приведен пример использования свойства data для определения URL
перетаскиваемых объектов. В примере перехватываются все события DRAGDROP, кото-
которые передаются в функцию handleDragDrop(). Эта функция выбирает значение свойства
data и отображает его значение на экране.
Листинг 8.113. Пример доступа к свойству event.datB
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
/ / Установка перехвата окном всех событий DRAGDROP.
window.captureEvents(Event.DRAGDROP);
// Функция, которая осуществляет обработку события.
// Параметр evnt представляет собой ссылку на объект Event.
function handleDragDrop(evnt){
// Запросить уровень привилегий UniversalBrowserRead.
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
// Объявить временный массив для хранения ссылок URL
// для свойства event.data.
tmp = new Array () ;
tmp = evnt.data;
//Вывести на экран окно предупреждения с URL перетаскиваемого объекта
alert("URL для объекта dragdrop: " + tmp);
return true ;
}
// Приведенная ниже строка регистрирует функцию handleDragDrop в
// качествеобработчика событий DRAGDROP.
window.onDragDrop = handleDragDrop;
// —>
</script>
Данный пример требует использования уровня
npnBHAei<HH<b>UniversalBrowserRead</b>.
<ЬгХЬг>
Просто перетащите объект, gif-файл, папку, файл и т.п. в окно
браузера и на экране отобразится URL объекта.
</body>
</html>
Глвва 8. Клиентская сторона 4 / 7
event.height JavaScriPj_i.zt
event.height
f Свойство height объекта Event определяет высоту окна или фрейма при возникновении
события RESIZE.
В листинге 8.114 показан пример использования свойства height при возникновении та-
такого события как RESIZE. Возникновение события RESIZE означает, что соответству-
соответствующее окно или фрейм изменили размер, что соответствует изменению свойства height.
Листинг 8.114. Использование свойства height
<html>
<body>
<script type="text/javascript" languages"JavaScript">
<! —
// Установка перехвата окном событий RESIZE.
window.captureEvents(Event.RESIZE);
// Функция изменения размеров окна,
function changeSize(){
window.resizeToC00, 400) ;
}
// Функция обработки события. Параметр evnt представляет собой
// объект Event,
function handle(evnt){
alert("Произошло событие RESIZE. Новая высота окна: "
+ evnt.height);
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий RESIZE,
window.OnResize = handle;
// —>
</script>
<form name="forml">
Для изменения размеров окна щелкните на кнопке:
<input type="button" value="HSMeHHTb размеры"
onClick = 'changeSize() '>
</form>
</body>
</html>
event. layerX JavaScript 1.2+
* Nav4+
event.layerX
| Свойство layerX объекта Event управляет горизонтальным (по координате х) позицио-
' нированием объекта в слое, в котором произошло событие.
В листинге 8.115 приведен пример функции, которая перехватывает события RESIZE. При
возникновении события RESIZE переменная записывает новое значение координаты х
окна в свойстве layerX. В приведенном примере при изменении пользователем размеров
окна на экране появляется окно предупреждения, в котором отображается новое значе-
значение координаты X.
Листинг 8.115. Использование свойства layerX объекта Event
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий RESIZE,
window.captureEvents(Event.RESIZE);
478 Часть III. Справочник по JavaScript
// Функция изменения размеров окна.
function changeSize() {
window.resizeToC00,400);
}
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt) {
alert("Новая ширина (размер по координате х) окна после
wизменения размеров: " + evnt.layerX) ;
return true;
)
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий RESIZE,
window.OnResize = handle;
// ~>
</script>
<form name="forml">
Для изменения размеров окна щелкните на кнопке:
<input type="Button" уа1ие="Изменить размеры"
onClick='changeSize()'>
</form>
</body>
</html>
event. layerY JavaScriPU2+
event.layerY
^p& Свойство layerY объекта Event управляет вертикальным (по координате у) позициони-
»> рованием объекта в слое, в котором произошло событие. При изменении размеров окна
или фрейма новое значение вертикальной координаты позиции окна присваивается свой-
свойству layerY.
В листинге 8.116 приведен пример использования свойства layerY. При возникновении
события RESIZE вызывается обработчик событий, выводящий на экран окно предуп-
предупреждения, в котором выводится новое значение координаты Y. Значение координаты Y
берется из свойства layerY объекта Event.
Листинг 8.116. ПРимер изменения свойства layerY
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Установка перехвата окном событий RESIZE,
window.captureEvents(Event■RESIZE);
// Функция изменения размеров окна.
function changeSize(){
window.resizeToB00 , 350) ;
)
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Новая высота (размер по координате Y) окна после
wизменения размеров: " + evnt.layerY) ;
return true ;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий RESIZE,
window.OnResize = handle;
// —>
</script>
Глава 8. Клиентская сторона 4 / У
<form name="forml">
Для изменения размеров окна щелкните на кнопке:
<input type="Button" value="HsMeHHTb размеры"
onClick='changeSize()'>
</form>
</body>
</html>
event.modifiers JavaScript^
event. modifiers
f Свойство modifiers объекта Event ссылается на любые клавиши модификаторов, которые
могут быть нажаты при возникновении события. Клавиши модификаторов представляются
в виде разрядных масок, которые могут иметь следующие значения: ALT_MASK,
CONTROLJV1ASK, META_MASK и SHIFT_MASK.
В листинге 8.117 демонстрируется, каким образом осуществляется доступ к свойству
modifiers при генерировании какого-либо события клавиатуры/мыши. При этом перехва-
перехватывается србытие KEYPRESS, а проверка свойства modifiers проверяется с целью выяс-
выяснения типа нажатой клавиши. При нахождении соответствия посылается сообщение
пользователю.
Листинг 8.117. Демонстрация возможностей свойства modifiers
<html>
<body>
<script type="text/javascript" languages"JavaScript">
<! —
// Установка перехвата окном событий KEYPRESS,
document.captureEvents(Event.KEYPRESS);
// Функция обработки события KEYPRESS.
// Она проверяет значение свойства modifiers и таким образом
// определяет какая клавиша была нажата.
//
// Возможны следующие значения:
// META_MASK = О
// CONTROLJMASK = 2
// ALT_MASK = 3
// SHIFTJMASK = 4
function handlePress(evnt){
if(evnt.modifiers == "){
alert("Нажата клавиша Meta");
}
if(evnt.modifiers == "){
alert("Нажата клавиша Ctrl");
}
if(evnt.modifiers == "){
alert("Нажата клавиша Shift");
}
return true;
}
// Приведенная ниже строка кода регистрирует функцию handlePress в
// качестве обработчика событий KEYPRESS -
document.onKeyPress = handlePress;
// -->
</script>
Данный пример демонстрирует свойство modifiers объекта event.
<ЬгХЬг>
Проверяется факт нажатия клавиши <b>Meta</b>.
<ЬгХЬг>
Если нажата клавиша "<b>Ctrl</b>", свойство modifiers сообщит об
этом.
480 Часть III. Справочник по JavaScript
<ЬгХЬг>
Нажав клавишу "<b>Shift</b>" вы инициируете событие, которое
проверяет значение SHIFT_MASK модификатора.
<ЬгХЬг>
</body>
</html>
Для определения того, была ли нажата определенная клавиша модификатора, можно
просто выполнить обращение к этой клавише с помощью объекта Event. В листинге 8.118
приведен пример обращения к клавише модификатора ALT_MASK.
Листинг 8.118. Доступ к определенной клавише модификатора
Event.ALT_MASK
event.pageX
event.pageX
Свойство pageX объекта Event управляет горизонтальным (по координате х) позициони-
позиционированием объекта на Web-странице, на которой произошло событие.
В листинге 8.119 приведен пример определения координаты х после возникновения в
браузере события dick. При щелчке мышью в окне браузера на экране появляется окно
предупреждения, в котором приводится координата х указателя мыши во время щелчка
мышью.
Листинг 8.119. Использование свойства радеХ
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном событий CLICK,
window.captureEvents(Event.CLICK) ;
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert (" Координата X, где произошло событие click: " + evnt.pageX);
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий CLICK,
window.onClick = handle;
// —>
</script>
<form>
Данный пример демонстрирует использование свойства <Ь>радеХ</Ь>
объекта <i>event</i>. При выполнении в окне браузера щелчка мышью
на экран выводится окно предупреждения, в котором указывается
значение координаты X точки щелчка.
</form>
</body>
</html>
event.pageY ~~ ~ JauaScripJa1v24I
event.pageY
;& Свойство pageY объекта Event управляет вертикальным (по координате у) позициони-
» рованием объекта на Web-странице, в которой произошло событие.
В листинге 8.120 приведен пример определения координаты у курсора с помощью свой-
свойства pageY. Код перехватывает событие СЫСК. При возникновении этого события вызы-
Глава 8. Клиентская сторона 4Ы
вается функция handle(), которая обрабатывает все события CLICK. Функция trandle()
выводит на экран окно предупреждения, в котором отображается координата у указате-
указателя мыши в точке выполнения щелчка мышью.
Листинг 8.120. Пример использования свойства pageY объекта Event
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий CLICK.
window.captureEvents(Event.CLICK);
// Функция обработхи события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert ("Координата Y, где произошло событие click: " + evnt.pageY) ,-
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий СЫСК,
window.onclick = handle;
// —>
</script>
Данный пример демонстрирует использование свойства <b>pageY</b>
объекта <i>event</i>. При выполнении в окне браузере щелчка мышью
на зкран выводится окно предупреждения, в котором указывается
значение координаты Y точки щелчка.
</body>
</html>
event.SCreenX JavaScript 1.2+. JScrijrt 3.0+
event.screenX
C& Свойство screenX объекта Event управляет горизонтальным (по координате х) позицио-
нированием объекта на экране компьютера, где произошло событие.
В листинге 8.121 приведен пример определения координаты х области возникновения на
экране события CLICK. Код перехватывает событие CLICK. При возникновении события
управление передается функции handle(), которая с помощью свойства screenX опреде-
определяет координату х указателя мыши.
Листинг 8.121. Использование свойства screenX.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий CLICK,
window.captureEvents(Event.CLICK);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Координата X экрана, где произошло событие click: "
+ evnt.screenX);
return true ;
)
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий CLICK,
window.onClick = handle;
// —>
</script>
482 Часть III. Справочник по JavaScript
В данном примере приведен пример использования свойства
<b>screenX</b> объекта <i>event</i>. При выполнении в окне браузера
щелчка на экран выводится окно предупреждения, в котором
указывается значение координаты X (относительно экрана компьютера)
точки выполнения щелчка.
</body>
</html>
event.SCreenY JavaScript 1.2+. JScript 3.0+
event.screen!
# Свойство screenY объекта Event управляет вертикальным (по координате у) позициони-
позиционированием объекта на экране компьютера, где произошло событие.
В листинге 8.122 приведен пример определения координаты у области возникновения на
экране события CLICK. Код перехватывает событие CLICK. При возникновении события
управление передается функции handle(), которая с помощью свойства screenY опреде-
определяет координату у указателя мыши.
Листинг 8.122. Использование свойства screenY объекта Event
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий CLICK,
window.captureEvents(Event.CLICK);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Координата Y экрана, где произошло событие click: "
+ evnt.screenY);
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий CLICK,
window.onClick = handle;
// —>
</script>
В данном примере приведен пример использования свойства
<b>screenX</b> объекта <i>event</i>. При выполнении в окне браузера
щелчка на экран выводится окно предупреждения, в котором указывается
значение координаты Y (относительно экрана компьютера) щелчка.
</body>
</html>
~event.target JauaScripJa1vj;
event.target
Свойство target объекта Event ссылается на объект, в котором происходит событие.
В листинге 8.123 приведен пример использования свойства target для определения объек-
объекта, в котором произошло событие. HTML-код документа включает три кнопки. При щел-
щелчке на кнопке функция JavaScript перехватывает событие click, и с помощью свойства
target сообщает пользователю о том, на какой кнопке был произведен щелчок.
Листинг 8.123. Использование свойства target
<html>
<body>
<script type="text/javascript" language="JavaScript">
Глава 8. Клиентская сторона 4Ьи
// Определение того, на какой кнопке был произведен щелчок,
function whichButton(evnt){
window.captureEvents(evnt.CLICK);
alert("Вы щелкнули на кнопке:" + evnt.target.value);
</script>
<£orm name="forml">
Щелкните на кнопке.
<br><br>
<input type="button" value="KHonKal" name="Buttonl"
onclick = whichButton(event)>
<input type="button" value="KHonKa2" name="Button2"
onclick = whichButton(event)>
<input type="button" value="KHonKa3" name="Button3"
onclick = whichButton(event)>
</form>
</body>
</html>
pupnt tvnp JavaScript 1.2+, JScript 3.0+
event.type
Свойство type объекта Event ссылается на тип произошедшего события. Значение свой-
свойства type является строкой, которая соответствует имени события. Возможные типы со-
событий приведены в табл. 8.12.
В листинге 8.124 приведен пример использования свойства type для определения типа
возникшего события. В приведенном примере определяются несколько типов событий. При
перехвате события на экране появляется сообщение о типе возникшего события. Этот
пример может быть расширен для обнаружения и других типов событий.
Листинг 8.124. Использование свойства type
<html>
<body>
<form>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном нескольких типов событий.
document.captureEvents(Event.CLICK|Event.KEYPRESS|Event.MOUSEDOWN);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
//alert(evnt.type)
if(evnt.type == "click"){
document.forml.msg.value += "Произошло событие click.\n"
}
if(evnt.type == "mousedown"){
document.forml.msg.value += "Произошло событие mousedown.\n"
)
if(evnt.type == "keypress"){
document.forml.msg.value += "Произошло событие keypress.\n"
)
return true;
}
// Приведенная ниже строка регистрирует обработчики
// нескольких типов событий.
document.onKeyPress = handle;
document.onClick = handle;
document.onMouseDown = handle;
// — >
</script>
484
Часть III. Справочник по JavaScript
<form name="forml">
Данная страница демонстрирует использование нескольких типов
событий. При возникновении
событий на зкран выводится текстовая область, в которой
указывается тип произошедшего события.
<ЬгХЬгХЬг>
<li><input type="Button" уа1ие="Щелкни на мне"Х/И>
<ЬгХЬг>
Текстовая область.
<input type="text" size=0">
<br>
Щелкните мышью в текстовом поле.
<ЬгХЬг>
<ЬгХЬг>
<Ь>Сообщение:
<textarea name="msg" rows=0" cols=0"X/textarea>
<ЬгХЬг>
<input type="reset" value="Очистить">
</form>
</body>
</html>
event. Unwatch() JavaScript^
event.unwatch (prop)
fe Метод unwatch() объекта Event используется для прекращения отслеживания свойства,
^ установленного с помощью метода watch(). Он принимает один параметр, prop, пред-
представляющий собой свойство, отслеживание которого прекращается.
В листинге 8.125 метод unwatch() используется для прекращения отслеживания свойства
height объекта Event. При щелчке на кнопке "Изменить размеры" происходит событие
RESIZE. При этом обработчик этого события выводит на экран окно предупреждения
с сообщением об изменении размеров окна и устанавливает отслеживание. После этого
свойству height присваивается новое значение, отслеживание свойства отключается, а
результат выводится в окне браузера.
Листинг 8.125. Использование метода unwatch()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий RESIZE,
window.captureEvents(Event.RESIZE);
// Функция изменения размеров окна,
function changeSize(){
window.resizeToC00,400);
)
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>" + " на " + "<Ь>" + newValue + "</ЬХЬг>")
return newValue;
)
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Произошло событие RESIZE. Новая высота окна: "+ evnt.height) ;
function setWatchO {
myProp = evnt.height;
Глава 8. Клиентская сторона
watch("myProp",alertme);
myProp = 200;
unwatch("myProp");
myProp = 100;
}
setWatch();
return true ;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий RESIZE,
window.OnResize = handle;
// -->
</script>
<form name="forml">
Для изменения размеров окна щелкните на кнопке:
<input type="button" ¥а1ие="Ивмеии>гь разиеры"
onClick = 'changeSize ()•>
</form>
</body>
</html>
event.watch() JavaScript^
event.watch{prop,обработчик)
Метод watch() объекта Event используется для установки отслеживания свойства объек-
объекта Event. Когда одному из параметров, prop, присваивается новое значение, вызывает-
вызывается функция, указанная в параметре обработчик.
В листинге 8.126 приведен пример использования метода watch() для отслеживания свой-
свойства height объекта Event. После щелчка на кнопке Resize (Изменить размеры) генериру-
генерируется событие RESIZE. При этом обработчик этого события выводит на экран окно пре-
предупреждение с сообщением об изменении размеров окна и устанавливает отслеживание.
После этого свойству height присваивается новое значение, которое затем выводится в
окне браузера.
Листинг 8.126. Использование метода watch() объекта Event
<html>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий RESIZE,
window.captureEvents(Event.RESIZE);
// Функция изменения размеров окна,
function changeSize(){
window.resizeToC00,400) ;
}
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</ЬХЬг>")
return newValue;
}
// Функция обработки события. Параметр evnt представляет собой
// объект Event,
function handle(evnt){
alert ("Произошло событие RESIZE. Новая высота окна: " + evnt. height.) ;
function setWatch(){
myProp = evnt.height;
watch("myProp",alertme);
myProp = 200;
486 Часть III. Справочник по JavaScript
setWatch();
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий RESIZE,
window.OnResize = handle;
// —>
</script>
<form name="forml">
Для изменения размеров окна щелкните на кнопке:
<input type="button" value="Изменить размеры"
onclick = 'changeSize()'>
</form>
</body>
</html>
event.which
event.which
Свойство which объекта Event определяет, какая клавиша клавиатуры или кнопка мыши
была нажата. В случае событий мыши возвращается числовое значение 1, 2 или 3, ко-
которое соответствует левой, средней или правой кнопке. Для событий клавиатуры свой-
свойство which содержит символьное представление нажатой клавиши.
В листинге 8.127 приведен пример использования свойства which для определения на-
нажатой кнопки мыши. При щелчке на переключателе выводится окно предупреждения, в
котором отображается номер нажатой кнопки.
Листинг 8.127. Использование свойстве which объекта Event
<html>
<body>
<form>
В данном примере для определения того, какая клавиши мыши была
нажата используется свойство which объекта event.
<brxbr>
<input type="radio" onclick = 'alert("Номер нажатой клавиши мыши: "
+ event.whi ch)'>
</form>
</body>
</html>
event.width JavaScripJa2
event.width
lj Свойство width объекта Event определяет ширину окна или фрейма. При возникновении
события RESIZE значение свойства устанавливается равным новой ширине окна или
фрейма.
В листинге 8.128 показан пример использования свойства width. Событие RESIZE пере-
перехватывается и передается в функцию handle(). Эта функция сообщает пользователю, что
произошло событие RESIZE и выводит на экран новую ширину окна.
Листинг 8.128. Использование свойства width
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном событий RESIZE,
window.captureEvents(Event.RESIZE);
// Функция изиенения размеров окна,
function changeSize(){
window.resizeToC00,400) ;
Глава 8. Клиентская сторона 4 О /
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt)i
alert("Произошло событие RESIZE. Новая ширина окна: "+evnt.height};
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий RESIZE,
window.OnResize = handle;
// —>
</script>
<form name="forml">
Для изменения размеров окна щелкните на кнопке:
<input type="Button" value="Изменить размеры">
</form>
</body>
</html>
Eupnt ABORT JavaScript 1.0+, JScript 1.0+
cvenx-HDun i Nay2+j )B+ 0 a3+
Event.ABORT
f Свойство ABORT объекта Event используется при обработке изображений и соответствует
событию, при котором передача данных прерывается или прекращается пользователем.
В листинге 8.129 приведен пример, в котором HTML-документ содержит большой GIF-
файл, но в процессе загрузки документа загрузка GIF-файла отменяется (в результате
щелчка в окне браузера на кнопке Stop (Остановить)). Метод captureEvents() перехва-
перехватывает событие ABORT и передает его методу handleAbort(), который обрабатывает со-
событие.
Листинг 8.129. Использование свойства ABORT
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий ABORT.
document.captureEvents(Event.ABORT);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event. В данном случав функция обрабатывает
// все события ABORT,
function handleAbort(evnt) {
alert("Произошло событие ABORT.");
return true;
}
// Приведенная ниже строка кода регистрирует функцию handleAbort в
// качестве обработчика событий ABORT,
document.onAbort = handleAbort;
// —>
</script>
Рассматриваемая Web-страница загружает файл sample.gif. Данный файл
имеет достаточно большой размер, и его загрузка займет некоторое
время. Если во время загрузки пользователь щелкнет на кнопке Stop
в окне браузера, будет перехвачено событие <b>abort</b>.
<br><br><br>
<img src="sample.gif" width=50" height=00" onAbort=''>
</body>
</html>
Event BLUR JavaScript 1.0+, JScript 1.0+
cveiu.Di.un №v2+ |B+ 0 3+
Event.BLUR
4 О О Часть III. Спрааочник по JavaScript
# Свойство BLUR объекта Event используется всеми окнами, фреймами и элементами форм
и соответствует событию, в результате которого объект теряет фокус.
В листинге 8.130 приведен пример, в котором пользователь хочет получать сообщения
при потере фокуса полем ввода текста. Создается функция, которая перехватывает событие
BLUR, происходящее при потере объектом фокуса. При перехвате события функция
handlerBlur() выводит на экран соответствующее сообщение.
Листинг 8.130. Использование свойства BLUR.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий BLUR,
document.captureEvents(Event.BLUR);
// функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handleBlur(evnt) {
document.forml.msg.value += "Произошло событие BLUR.\n";
return true;
}
// Приведенная ниже строка регистрирует функцию handleBlur в
// качестве обработчика событий BLUR,
document.onBlur = handleBlur;
// — >
</script>
<form>
Установите фокус ввода в первое поле ввода текста. Затем, чтобы
снять фокус с первого поля ввода текста, щелкните во втором пола.
<ЬгХЬг>
Тескт l:<input type="text" size=0" onBlur=''>
<brxbr>
Текст 2:<input type="text" size=0">
<br><br>
<Ь>Сообщение:</Ь>
<textarea name="msg" rows=" cols=0"X/textarea>
</form>
</body>
</html>
Event CHANGE JavaScript 1.0+, JScript 1.0+
tveni.oriAiMUt Nav2+ |E3+ 0 3+
Event.CHANGE
& Свойство CHANGE объекта Event используется элементами, работающими с текстом, и
' окнами выбора и указывает об изменении параметров элемента.
В листинге 8.131 приведен пример, в котором функция контролирует возникновение
события CHANGE. После генерации это событие перехватывается объектом Document, a
затем передается в функцию handleChange(), которая выводит на экран соответствующее
сообщение.
Листинг 8.131. Использование свойства CHANGE
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окнои событий CHANGE,
document.captureEvents(Event.CHANGE);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event.
Глава 8. Клиентскея сторона Q О У
function handleChange(evnt){
alert("Текст в первом окне ввода текста изменился ") ;
return true;
}
// Приведенная ниже строка регистрирует функцию handleChange в
// качестве обработчика событий CHANGE,
document.onChange = handleChange;
// —>
</script>
В примере демонстрируется использование события change. Сначала
первое поле ввода текста пустое. При вводе текста в поле
генерируется событие <b>CHANGE</b>. Оно приводит к появлению на
экране окна предупреждения, которое сообщает, что текст в первом
поле ввода текста изменился.
<Ьг><Ьг>
<form name="forml">
Первое окно ввода текста:
<input type="text" size=0" name="textl" onChange='■>
<br><br>
Второе окно ввода текста:
<input type="text" size=0" name="text2">
</form>
</body>
</html>
Event.CLICK ££%£
Event.CLICK
f Свойство COCK объекта Event используется всеми кнопками, документами и ссылка-
ссылками и соответствует однократному щелчку кнопкой мыши.
1/$В листинге 8.132 приведен пример, в котором событие СЫСК используется для опре-
W деления того, был ли выполнен щелчок кнопкой мыши. При щелчке в окне браузера
метод captureEvents() перехватывает событие CLICK. После этого обработчик событий
выводит на экран сообщение о том, что был выполнен щелчок мышью.
Листинг 8.132. Использование свойства CLICK
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном событий CLICK,
window.captureEvents(Event.CLICK);
// функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handleClick(evnt) {
alert("В этом окне произошло событие CLICK.");
return true;
}
// Приведенная ниже строка регистрирует функцию handledick в
// качестве обработчика событий CLICK,
window.onclick = handleClick;
// -->
</script>
<form>
<input type="button" value="Щелкни на мне"
onclick = "handleClick(event)'>
</form>
</body>
</html>
490 Часть III. Справочник по JavaScript
Event.DBLCLICK JavaScript 1.2+, JScript 3.0+
Event.DBLCLICK
^& Свойство DBLCLICK объекта Event используется документами и ссылками и соответствует
«двойному щелчку кнопкой мыши.
В листинге 8.133 приведен пример использования обработчика событий onDbldick для
обработки события DBLCLICK. При выполнении двойного нажатия клавиши мыши в окне
на экран выводится сообщение о том, что был выполнен двойной щелчок.
Листинг 8.133. Использование свойства DBLCLICK
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий DBLCLICK.
window.captureEvents(Event.DBLCLICK);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("В этом окне произошло событие DBLCLICK.");
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий DBLCLICK.
window.onDblClick = handle;
// — >
</script>
Этот пример демонстрирует использование события dblclick. Выполните
двойной щелчок в окне браузера и на экране появится окно
предупреждения, в котором указывается, что произошло событие
<b>DBLCLICK</b>.
<Ьг><Ьг>
<form>
<input type="button" value="Double-click me" onDblClick='•>
</form>
</body>
</html>
"Event. DRAGDROP JavaScriPt_r2+
Event.DRAGDROP
& Свойство DRAGDROP объекта Event используется окном и соответствует событию, про-
' исходящему в результате перетаскивания объекта.
jB листинге 8.134 приведен пример использования события DRAGDROP для поиска объек-
* тов, перетащенных в окно браузера. Если такое событие происходит, на экран выводится
сообщение о том, что произошло событие DRAGDROP.
Листинг 8.134. Использование обработчика событий DRAGDROP
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий DRAGDROP.
window.captureEvents(Event.DRAGDROP);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event.
Глава 8. Клиентская стороне
491
function handleDragDrop(eynt){
alert("Объект был перетащен.");
return true;
}
// Приведенная ниже строка регистрирует функцию handleDragDrop в
// качестве обработчика событий DRAGDROP.
window.onDragDrop = handleDragDrop;
// —>
</script>
Данный пример демонстрирует использование события dragdrop.
Перетащите объект в окно браузера и на экране появится окно
предупреждения, в котором указывается, что произошло событие
<b>DRAGDROP</b>.
<br><br>
</body>
</html>
Event ERROR JavaScript 1.1+, JScript 3.0+
cveiu.cnnun Nav3+ |E4+ Opera3+
Event.ERROR
f Свойство ERROR объекта Event используется окнами и изображениями для индикации
ошибки, возникшей при загрузке Web-странипы.
j/*B листинге 8.135 приведен пример обработки события ERROR. При перехвате события
tr ERROR оно передается функции handle(), которая выдает пользователю сообщение о
возникновении ошибки.
Листинг 8.135. Использование свойства ERROR.
<html>
<body>
<script type="text/javascript" language="JavaScript">
^i
// Установка перехвата окном событий ERROR,
window.captureEvents(Event.ERROR);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt)(
alert("ОШИБКА: изображение не может быть загружено.");
return true ;
)
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий ERROR,
window.onerror = handle;
// —>
</script>
На этой странице находится только один рисунок в формате gif.
Однако, поскольку указанного файла не существует, при загрузке
страницы возникнет ошибка.
Эта ошибка будет перехвачена и на экран будет выведено окно
предупреждения.
<Ьг><Ьг>
<img src="nothing.gif" onerror='■>
</body>
</html>
Cwont РПГИЧ JavaScript 1.0+, JScript 1.0+
Event, focus teH |E3+ ojera3+
Event.FOCUS
f Свойство FOCUS объекта Event используется окнами, фреймами и элементами форм для
индикации получения объектом фокуса.
492 Часть III. Справочник по JavaScrip
В листинге 8.136 приведен пример использования свойства FOCUS для индикации по-
лучения фокуса определенным объектом. При выборе объекта на экране появляется окно
сообщения, в котором указывается, какой объект получил фокус. По умолчанию все со-
события Event-FOCUS обрабатываются с помощью обработчика onFocus.
Листинг В.136. Использование свойства FOCUS
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
function showMsgl(){
document.forml.msg.value +=
"фокус установлен на поле ввода текста 1.\п";
}
function showMsg2(){
document.forml.msg.value +=
"фокус установлен на поле ввода текста 2.\п";
}
function showMsg3(){
document.forml.msg.value += "фокус установлен на кнопку l.\n";
}
function showMsg4(){
document.forml.msg.value+= "Фокус установлен на текстовую область.\п";
>
// — >
</script>
<form name="forml">
Переместите фокус на любой объект.
<brxbr>
Окно ввода текста l:<input type="text" size=0" onFocus='showMsgl () '>
<ЬгХЬг>
Окно ввода текста 2:<input type="text" size=0" onFocus= • showMsg2 () '>
<br><br>
Кнопка l:<input type="button" value="Ha5ieMH меня" onfocus='showMsg3()'>
<br><br>
<Ь>Текстовая область:</Ь>
<textarea name="msg" rows=" cols=0" onfocus=' showMsg4 () 'X/textarea>
</form>
</body>
</html>
Event.KEYDOWN iavaScrlPNalS
Event.KEYDOWN
# Свойство KEYDOWN объекта Event используется документами, ссылками и текстовыми
областями для индикации нажатия клавиши на клавиатуре.
В листинге 8.137 приведен пример использования события KEYDOWN в JavaScript для
определения того, была ли нажата клавиша При перехвате события KEYDOWN оно об-
обрабатывается функцией handle(), которая сообщает пользователю о том, что клавиша была
нажата.
Листинг 8.137. Использование свойства KEYDOWN
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Установка перехвата окном событий KEYDOWN.
window.captureEvents(Event.KEYDOWN);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
Глава 8. Клиентская сторона
document.forml.msg.value += " Была нажата клавиша.\n";
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий KEYDOWN.
window.onKeyDown = handle;
// —>
</script>
<form name="forml">
Бажмите клавишу на клавиатуре. При нажатии клавиши на клавиатуре в
■секстовой области выводится сообщение, указывающее, что произошло
событие <b>KEYDOWN</b>.
<br><br>
<Ь>Текстовая область:</Ь>
<textarea name="msg" rows=" cols=0"X/textarea>
<br><br>
<input type="reset" value="Очистить текстовую область">
</form>
</body>
</html>
Event. KEYPRESS
Event.KEYPRESS
Свойство KEYPRESS объекта Event используется документами, ссылками и текстовыми
областями для индикации нажатия и удержания клавиши клавиатуры.
|В листинге 8.138 приведен пример использования события KEYPRESS для индикации
нажатия клавиши. При перехвате события KEYPRESS оно обрабатывается функцией
handle(), которая сообщает пользователю, что клавиша была нажата.
Листинг 8.138. Использование объекта KEYPRESS
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Установка перехвата окном событий KEYPRESS,
window.captureEvents(Event.KEYPRESS);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
document.forml.msg.value += " Нажата клавиша.\n";
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий KEYPRESS.
window.onKeyPress = handle;
// — >
</script>
<form name="forml">
Нажмите клавишу на клавиатуре. При нажатии клавиши на клавиатуре в
текстовой области
выводится сообщение, указывающее, что была нажата клавиша.
<ЬгХЬг>
<Ь>Текстовая область:</Ь>
<textarea name="msg" rows=" cols=0"X/textarea>
</form>
</body>
</html>
494 Часть III. Справочник по JavaScript
Event. KEYUP JavaScript 12+
Nav4+
Event.KEYUP
j\ Свойство KEYUP объекта Event используется документами, ссылками и текстовыми об-
областями для индикации отпускания ранее нажатой клавиши на клавиатуре.
-$ В листинге 8.139 приведен пример использования события KEYUP для индикации от-
' пускания клавиши. При перехвате события KEYUP оно обрабатывается функцией
handle(), которая сообщает пользователю, что нажатая клавиша была отпущена.
Листинг 8.139. Использование свойства KEYUP
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном событий KEYUP.
window.captureEvents(Event.KEYUP);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt) {
document.forml.msg.value += " Клавиша была нажата и отпущена.\n";
re turn true ;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий KEYUP.
window.onKeyUp = handle;
II -->
</script>
<form name="forml">
Нажмите клавишу на клавиатуре. При нажатии и отпускании клавиши на
клавиатуре в текстовой области выводится сообщение, указывающее,
что произошло событие <b>KEYUP</b>. При удержании нажатой клавиши
сообщение не появляется. Сообщение появляется только при отпускании
клавиши.
<Ьг><Ьг>
<Ь>Текстовая область:</Ь>
<textarea name="msg" rows=" cols=0"X/textarea>
<br><br>
<input type="reset" value="O4HCTHTb текстовую область">
</form>
</body>
</html>
Evpnt LOAD JavaScript 1.0+, JScript 1.0+
Kvem.LUHu Nav2+ |£3+
Event.LOAD
& Свойство LOAD объекта Event используется объектом Document для индикации завершения
браузером загрузки страницы.
В листинге 8.140 приведен пример вывода пользователю сообщения об окончании заг-
загрузки Web-страницы. Перехватывается событие LOAD. При этом вызывается функция
1тш11е(), которая сообщает пользователю о том, что загрузка страницы завершена.
Листинг 8.140. Пример использования свойства LOAD
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Установка перехвата окном событий LOAD,
window.captureEvents(Event.LOAD);
Главв 8. Клиентская сторона
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Загрузка страницы завершена.");
return true;
}
// Приведенная ниже строка регистрируем функцию handle в качестве
// обработчика событий LOAD.
window.onload = handle;
// —>
</script>
На странице находится один рисунок в формате gif. Когда загрузка
страницы завершается, на экран выводится соответствующее сообщение.
<ЬгХЬг>
<img src="mypic.gif" onload=''>
</body>
</html>
Event.MOUSEDOWN JavaScript 1.2+, Kcript 3.0+
Event.MOUSEDOWN
Свойство MOUSEDOWN объекта Event используется кнопками, документами и ссылками
для индикации нажатия кнопки мыши.
В листинге 8.141 приведен пример использования события MOUSEDOWN для индика-
индикации нажатия кнопки мыши. Для перехвата события MOUSEDOWN вызывается обработчик
onMouseDown. При перехвате события на экран выводится окно предупреждения, кото-
которое информирует пользователя о возникновении события.
Листинг 8.141. Использоввнмв свойстве MOUSEDOWN
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном событий MOUSEDOWN,
window.captureEvents(Event.MOUSEDOWN);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Нажата кнопка мыши.");
return true;
}
// Приведенная ииже строка регистрирует функцию handle в качестве
// обработчика событий MOUSEDOWN,
window.onMouseDown = handle;
// —>
</script>
В данном примере используется событие <b>MOUSEDOWN</b>. При нажаяии
кнопки мыши на экран выводится окно предупреждения.
</body>
</html>
Event.MOUSEMOVE JavaScript 1.2+, JScript 3.0+
Even t.MOUSEMOVE
& Свойство MOUSEMOVE объекта Event указывает на то, что пользователь переместил
" указатель мыши.
Часть III. Справочник по JavaScript
В листинге 8.142 приведен пример использования события MOUSEMOVE для индика-
индикации перемещения пользователем указателя мыши. При перемещении указателя в текстовых
полях выводятся координаты его положения.
Листинг 8.142. Использование свойства MOUSEMOVE
<html>
<body>
<script type="text/javascript" language^"JavaScript">
<! —
// Установка перехвата окном событий MOUSEMOVE.
window.captureEvents(Event.MOUSEMOVE);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event. Функция записывает координаты х и у
// указателя мыши в текстовые области,
function handle(evnt){
document.forml.x.value=evnfc.pageX;
document.forml.у.value=evnt.pageY;
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий MOUSEMOVE.
window.onMouseMove = handle;
// —>
</script>
<form name="forml">
В данном примере используется событие <b>MOUSEMOVE</b>. При
перемещении указателя мыши изменяются координаты.
<ЬгХЬг>
Координата X указателя мыши:<±приЬ type="text" name="x"
size="Xbr><br>
Координата Y указателя Mbmm:<input type="text" name="y" size=">
</form>
</body>
</html>
Event.MOUSEOUT
Even t.MOUSEOUT
Свойство MOUSEOUT объекта Event используется ссылками и слоями документов для
индикации перемещения указателя мыши за пределы объекта.
В листинге 8.143 приведен пример использования обработчика событий onMouseOut для
перехвата события MOUSEOUT, которое происходит при перемещении указателя мыши
за пределы HTML-ссылки.
Листинг 8.143. Использование свойстве MOUSEOUT
<html>
<body>
<а href="http://www.microsoft.com" onMouseout =
'alert("Указатель мыши вышел за пределы этой ссылки")'>
Web-сайт компании Microsoft</a>
</body>
</html>
Event.MOUSEOVER
Event.MOUSEOVER
j Свойство MOUSEOVER объекта Event используется ссылками и слоями документов для
индикации перемещения указателя мыши над объектом.
Глава 8. Клиентская сторона 4 У /
В листинге 8.144 приведен пример использования события MOUSEOVER для изменения
значений элементов форм. При перемещении указателя мыши нал. ссылкой перехваты-
перехватывается событие MOUSEOVER, а пользователь получает сообщение о возникновении со-
события.
Листинг 8.144. Использование свойства MOUSEOVER
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном событий MOUSEOVER,
window.captureEvents(Event.MOUSEOVER);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Указатель мыши находится над ссылкой на Web-сайт Netscape.");
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий MOUSEOVER,
window.onMouseOver = handle;
// —>
</script>
<f orm names:" f orml" >
Переместите указатель мыши на ссылку Netscape. Это вызовет
возникновение события <b>MOUSEOVER</b>. Это событие перехватывается
и на экран выводится окно предупреждения, указывающее на то, что
указатель мыши находится над ссылкой.
<brXbrXbr>
<а href="http://www.netscape.com" onMouseOver = '•>
Ссылка на Web-сайт Netscape</a>
<br>
<br<br<br</form>
</body>
</html>
Event.MOUSEUP JavaScripTi.2+, JScript 3 0+
IMav4+, IE4+
Event.MOUSEUP
f Свойство MOUSEUP объекта Event используется кнопками, документами и ссылками
для индикации отпускания кнопки мыши.
■лВ листинге 8.145 приведен пример использования обработчика событий onMonseUp для
W индикации отпускания нажатой кнопки мыши. Пользователь нажимает кнопку мыши и
при ее отпускании на экран выводится сообщение о возникновении соответствующего
события.
Листинг 8.145. Использование свойства MOUSEUP
<html>
<body>
<form>
В данном примере используется событие MOUSEUP. При нажатии и
отпускании кнопки мыши на экран выводится окно предупреждения,
указывающее на то, что произошло соответствующее событие.
<input type="button" уа1че="Щелкии на мне"
onMouseup = 'alert("Кнопка мыши отпущена") '>
</form>
</body>
</html>
498 Часть III. Справочник по JavaScript
Event.MOVE JavaScriPNa$
Event.MOVE
# Свойство MOVE объекта Event используется окнами и фреймами для индикации пере-
перемещения окна или фрейма.
В листинге 8.146 приведен пример синтаксиса, используемого при организации доступа
к свойству MOVE. При перемещении окна браузера перехватывается событие MOVE, и
на экран выводятся координаты верхнего левого угла окна.
Листинг 8.146. Использование свойства MOVE
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Установка перехвата окном событий MOVE,
window.captureEvents(Event.MOVE);
// Функция обработки события. Параметр evnt представляет собой
// ссылку иа объект Event, функция присваивает текстовым полям
// координаты х и у.
function handleMove(evnt){
document.forml.msg,value=KHO перемещено в точку с координатами: "
+ evnt.screenX + "," + screen?;
document.forml.x.value=evnt.screenX;
document.forml.у.value=evnt.screenY;
return true ;
}
// Приведенная ниже строка регистрирует функцию handleMove в
// качестве обработчика событий MOVE,
window.onMove = handleMove;
// —>
</script>
<form name="forml">
В данном примере демонстрируется использование события <b>MOVE</b>.
При перемещении окна браузера в текстовых полях выводятся
координаты.
<Ьг><Ьг>
Координата X верхнего левого угла окна:
<input type="text" name="x" size="Xbr><br>
Координата У верхнего левого угла окна:
<input type="text" name="y" size=">
<ЬгХЬгХЬг>
Текстовая область:
<br>
•Ctextarea name="msg" rows=" cols=0"X/textarea>
<br>
<input type="reset" value=4Hc<rHirb">
</form>
</body>
</html>
Event RESET JavaScript 1.1+, JScript 1.0+
cveni. ncoci Nav3+ ,E3+ Qpera3+
Event.RESET
k Свойство RESET объекта Event используется только формами с целью индикации щелчка
на кнопке Reset (Сброс).
В листинге 8.147 приведен пример определения факта щелчка на кнопке Reset. При пе-
перехвате события RESET функция handleQ сообщает пользователю о щелчке на кнопке.
Глава 8. Клиентская сторона 499
Листинг 8.147. Использование свойства RESET
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// установка перехвата окном событий RESET.
window.captureEvents(Event.RESET);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event.
function handle(evnt){
alert ("Вы щелкнули иа кнопке Reset (Сброс)")."
return true;
}
// Приведенная ниже строка кода регистрирует функцию handle в
// качестве обработчика событий RESET,
window.onReset = handle;
// —>
</script>
В данном примере демонстрируется использование события
<b>Reset</b>.
Щелкните на отображаемых ниже кнопках. Только кнопка Reset (Сброс)
вызовет возникновение события Reset.
<br><br>
<form>
<br><br>
Текст в окне ввода текста:<input type="text" size=0">
<br><br>
<input type="button" value-"Кнопка 1">
<br><br>
<input type="button" value="Кнопка 2">
<br><br>
<input type="reset" value="C6poc" onReset=''>
</form>
</body>
</html>
Event.RESIZE JavaScript 1.2+, JScrJrt 3.0+
Event.RESIZE
f Свойство RESIZE объекта Event используется при работе с окнами и фреймами для
индикации изменения размеров окна или фрейма.
В листинге 8.148 приведен пример определения момента изменения размеров окна с по-
помощью события RESIZE. При перехвате события RESIZE функция handle() выводи на
экран свойства height и width окна.
Листинг 8.148. Использование свойства RESIZE
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// установка перехвата окном событий RESIZE,
window.captureEvents(Event.RESIZE);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Вы изменили размеры окна до размеров: " + evnt.height
+ "х" + evnt.width);
return true ;
500 Часть III. Справочник по JavaScript
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий RESIZE,
window.OnResize = handle;
// —>
</script>
<form name="forml">
Для изменения размеров окна щелкните на кнопке:
<input type="Button" уа1ие="Изменишь размеры"
onClick=window.resizeToB50,400)>
</form>
</body>
</html>
Event.SELECT
Event.SELECT
Свойство SELECT объекта Event используется текстовыми объектами и окнами выбора
для индикации выбора элемента пользователем.
В листинге 8.149 приведен пример использования события SELECT для определения
того, кокой объект формы был выбран. При выборе текста в объекте textarea возникает
событие SELECT. После этого документ перехватывает событие и вызывает функцию
handIeSelect(), которая сообщает пользователю о возникновении события SELECT.
Листинг 8.149. Использование свойства SELECT
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий SELECT,
document.captureEvents(Event.SELECT);
// Обработчик события SELECT,
function handleSelect(evnt){
alert("Вы выбрали текст в текстовой области");
}
// Приведенная ниже строка регистрирует функцию handleSelect в
// качестве обработчика событий SELECT,
document.onSelect = handleSelect;
// — >
</script>
<form name="forml">
Сообщение:
<input type="text" size=5" name="txtbox" value="" onSelect=''>
<br><br><br>
Вывести текст:<br>
<textarea name="msg" rows=" cols=0" onSelect=''>
В данном примере перехватывается событие SELECT.
Оно происходит в том случае, когда в текстовой области или окне
ввода текста выделяется текст. Для этого выделите в часть этого
текста и на экране появится окно предупреждения,
в котором указывается, что произошло событие SELECT.
</textarea>
<br><br>
</form>
</body>
</html>
Event SUBMIT JavaScript 1.0+, JScript 1.0+
cveiii.ouDivin Nav2+ |E3+j Opera3+
Event.SUBMIT
Глава 8. Клиентская сторона UU ;
f Свойство SUBMIT объекта Event используется только формами для индикации щелчка
на кнопке Submit (Передать данные).
^Влистинге 8.150 приведен пример обработки формы кодом JavaScript при щелчке на
У кнопке Submit (Передать данные). Объект Window ожидает события SUBMIT. При его
перехвате вызывается функция handle(). Эта функция сообщает пользователю о щелчке
на кнопке.
Листинг 8.150. Использование саойства SUBMIT
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Установка перехвата окном событий SUBMIT.
window.captureEvents(Event.SUBMIT);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("Вы щелкнули на кнопке Отправить");
return true;
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий SUBMIT.
window.onSubmit = handle;
// —>
</script>
В данном примере демонстрируется событие SUBMIT. Щелкните на
расположенных ниже кнопках.
Только кнопка Отправить генерирует событие SUBMIT.
<ЬгХЬг>
<form>
<input type="button" value="Щелкни на мне">
<brXbr>
<input type="Submit" value="Отправить" onsubmit=''>
<brXbr>
<input type="button" уа1ие="Щелкни и на мне">
</form>
</body>
</html>
Event. UNLOAD JavaScript 1.0+JScript 1.0+
Nav2+, IE3+. Opera3+
Event.UNLOAD
^Свойство UNLOAD объекта Event используется документами для индикации загрузки в
браузер нового документа или закрытия окна браузера.
В листинге 8.151 приведен пример использования свойства UNLOAD для определения
момента окончания выгрузки Web-страницы. При перехвате события UNLOAD вызыва-
вызывается функция handle(), которая сообщает пользователю о том, что выгрузка страницы
завершена.
Листинг 8.151. Пример использования свойства UNLOAD
<html>
<body>
<script type="text/javascript" language="JavaScript">
// установка перехвата окном событий UNLOAD
window.captureEvents(Event.UNLOAD);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event.
502 Часть III. Справочник по JavaScript
function handle(evnt) {
alert("Страница выгружена.");
return true;
>
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий UNLOAD.
window.onunload = handle;
// —>
</script>
На данной странице находится только рисунок в формате gif • При
выгрузке страницы из браузера на экран выводится соответствующее
сообщение.<i> (Для выгрузки страницы загрузите другую страницу или
щелкните в окне браузера на кнопке Назад)</i>
<ЬгХЬг>
<img src="star.gif" onunload=''>
</body>
</html>
JavaScript 1.0+, JScript 3.0+
Nav2+ |E4+ Opera3+
Основной объект клиентской части языка JavaScript.
6& Объект FileUpload представляет собой окно загрузки файлов внутри HTML-формы. Окно
загрузки файлов создается с помощью HTML-дескриптора <input>, значение атрибута
type которого установлено, равным file. Объект FileUpload имеет свои свойства и мето-
методы, которые перечислены в табл. 8.13.
Тип
Свойство
Метод
Таблица 8.13. Свойства и методы объекта FileUpload
Элемент
form
name
onBlur
onChange
onFocus
type
value
blur()
focus()
Описание
Содержит форму, в которой находится объект FileUpload
HTML-атрибут name объекта FileUpload
Обработчик событий Blur
Обработчик событий Change
Обработчик событий Focus
HTML-атрибут type объекта FileUpload
Строка, содержащая путь к выбранному файлу
Убирает фокус из объекта FileUpload
Перемещает фокус на объект FileUpload
handleEvent() Обрабатывает указанное событие
select()
unwatch()
watch()
Выбирает область ввода объекта FileUpload
Прекращает отслеживание свойства объекта FileUpload
Устанавливает отслеживание свойства объекта FileUpload
В листинге 8.152 приведен пример создания окна загрузки файлов и использования его
свойства name.
Объект FileUpload на HTML-странице содержит кнопку Browse (Обзор), которая дает
возможность пользователю выбрать файл для загрузки. После выбора файла, как прави-
правило, он передается на сервер, но в приведенном примере показано, каким образом можно
получить полный путь к выгружаемому файлу.
Глава 8. Клиентская сторона OUu
Листинг 8.152. Пример использования объекта FileUpload.
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Эта функция служит примером получения значений свойств
// объекта FileUpload.
function showname(){
// Объявить переменную, в которую будет записываться имя окна
// загрузки файлов.
var file = document.forml.uploadBox.value ;
document.forml.filename.value = file ;
}
// -->
</script>
<form name="forml">
Для выбора загружаемого файла щелкните на кнопке Browse (Обзор).
<br>
Для получения полного пути к выбранному файлу щелкните на кнопке
Send (Передать).
<br><br>
Загрузить файл: <input type="file" name="uploadBox">
<brXbr>
<input type="button" value="Передать" name="get"
onClick=■showname()'>
<br><br>
<input type="text" name="filename" size=0">
</form>
</body>
</html>
FileUpload.blurO
fileupload.blur()
Метод Ыиг() объекта FileUpload используется для переноса фокуса с объекта FileUpload.
В листинге 8.153 приведен пример использования метода Ыиг() для перемещения фо-
фокуса с окна загрузки файлов. При щелчке на кнопке ОК окно загрузки файлов теряет
фокус и на экран выводится сообщение.
Листинг 8.153. Пример использования метода blur()
<html>
<body>
<script type="text/javascript" language^"JavaScript">
<! —
function showMessage(){
// Перемещает фокус из окна загрузки файлов и записывает
// сообщение в текстовую область.
document.forml.uploadbox.blur();
document.forml.textbox.value = "Файл передан";
}
// —>
</script>
<form name="forml">
Введите имя файла:
<input type="file" name="uploadbox">
<input type="button" value="Okay" onClick=showMessage()>
<br><br>
Подтверждение:
<input type="text" name="textbox">
</form>
</body>
</html>
504 Часть III. Справочник по JavaScript
FileUpl0ad.f0CUS() JavaScript 1.1+ JScript З.Ш
r w Nav3+, IE4+, ОрегаЗ*
fileupload.focus()
& Метод focus() используется для переноса фокуса на объект FileUpload.
В листинге 8Л54 приведен пример переноса фокуса на объект FileUpload. При щелчке на
кнопке (Ж вызывается функция checkFUe(), которая переносит фокус на окно загрузи
файлов и выводит сообщение на экран.
Листинг 8.154. Перемещение фокуса на окно загрузки файлов
<html>
<body>
<script type="text/javascript" languages"JavaScript">
^1
function checkFxle(){
/ / Переносит фокус на окно загрузки файлов.
document.forml.uploadbox.focus();
document, forml. textbox. value = "Проверьте правильность имени файла";
}
// —>
</script>
<form name="forml">
Введите имя файла:
<input type="file" name="uploadbox">
<input type="button" value="Okay" onClick=checkFile()>
<br><br>
Подтверждение:
<input type="text" name="textbox" size=5">
</form>
</body>
</html>
FileUpload.form
fileupload.form
Свойство fonn объекта FileUpload используется для обращения к объекту Form, в ко-
тором содержится данный объект FileUpload.
В листинге 8.155 приведен пример использования свойства form для выборки атрибутов
формы, в которой содержится объект FileUpload. На странице находится два окна загрузки
файлов. Функция checkFiles() проверяет, выбран ли в каждом из окон файл для загрузки,
Если файл не выбран, сценарий выводит пользователю соответствующее сообщение.
Листинг 8.155. Использование свойства form объекта FileUpload
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Эта функция проверяет, выбран ли файл в каждом из окон
// загрузки файлов,
function checkFiles(){
if (document.secret.filel.value == ""){
alert ("Вы не выбрали файл 1") ,-
}
if (document.secret.file2.value == ""){
alert("Вы не выбрали файл 2");
}
else {
alert("Выбраны нужные файлы, которые были выгружены");
Глава 8. Клиентская сторона
//
</script>
<form name="secret">
Пожалуйста, выберите два файла для загрузки.
<br><br>
Файл l:<input type="file" name="filel">
<br><br>
Файл 2:<input type="file" name="file2">
<brxbr>
<input type="button" уа1ие="ПроБерить" onClick='checkFiles() '>
</form>
</body>
</html>
Приведенный пример демонстрирует один метод ссылки на окно загрузки файлов, од-
однако существует и еще один метод. Доступ к окну загрузки файлов можно получить с
помощью массива elements формы. Пример использования этого метода показан в лис-
листинге 8.156.
Листинг 8.156. Второй метод получения доступа к объекту FileUpIoad с помощью
массива элементов формы
<html>
<body>
<script type="text/javascript" language="JavaScript">
function showUploadName(){
alert("HMH окна загрузки файлов: "+document.secret.elements[0].name);
}
// —>
</script>
<form name="secret">
Пожалуйста, выберите загружаемый файл.
<br><br>
<input type="file" name="mybox" >
<brxbr>
Для определения имени формы, в которой находится окно загрузки
файлов, щелкните на эфой кнопке.
<ЬгХЬг>
<input type="button" уа1ие="Определи>гь имя формы"
onClick='showUploadName()•>
</form>
</body>
</html>
FileUpIoad.handleEvent()
fileupload.handleEvent{событие)
Метод handleEventO объекта FileUpIoad вызывает обработчик указанного событая.
В листинге 8.157 приведен пример использования метода handleEventO для обработки всех
событий CHANGE. Когда пользователь выбирает или вводит имя файла в окне загруз-
загрузки, а затем изменяет сведенные данные, генерируется событие CHANGE, которое пе-
перехватывается кодом сценария. Функция handleChange обрабатывает событие CHANGE и
передает его методу handleEventO окна загрузки. Таким образом, этот обработчик обра-
обрабатывает все события CHANGE.
Листинг 8.157. Использование метода handleEventO
<html>
<body>
<script type="text/javascript" language="JavaScript">
506 Часть III. Справочник по JavaScript
// Установка перехвата окном событий CHANGE,
window.captureEvents(Event.CHANGE);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handleChange(evnt){
window.document.uploadbox.handleEvent(evnt);
}
function displayText()(
document.forml.msg.value += "Объект иэменен\п";
}
// Приведенная ниже строка регистрирует функцию handleChange в
// качестве обработчика событий CHANGE,
window.onChange = handleChange;
// -->
</script>
Выберите файл:
<br>
<form name="forml">
<input type="file" size=0" name="uploadbox"
onChange='displayText()'>
<br><br>
<teKtarea name="msg" rows=0" cols=0"X/textarea>
</form>
</body>
</html>
FileUpload.name
file-upload, name
Свойство name объекта FileUpIoad содержит значение атрибута name HTML-дескриптора
<input>, который создает данный объект FileUpIoad. Это позволяет обращаться к объек-
объекту FileUpIoad по имени.
|В листинге 8.158 приведен пример использования имени окна загрузки файлов для по-
лучения доступа к его свойствам. Функция getname() для получения доступа к свойству
name использует имя объекта form и имя окна загрузки файлов.
Листинг 8.158. Обращение к объекту FileUpIoad по имени
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Эта функция сообщает пользователю имя окна загрузки файлов.
function getname(){
var boxname = document.forml.myUploadbox.name;
alert("Имя окна загрузки файлов: " + boxname);
}
// — >
</script>
<form name="forml">
Для определения имени окна загрузки файлов щелкните на этой
кнопке.
<ЬгХЬг>
<input type="file" name="myUploadbox">
<br><br>
<input type="button" уа1ие="Получи!Гь имя" onClick='getname()'>
</form>
</form>
</html>
FileUpload.onBlur
onBlur="команда"
Глава 8. Клиентская сторона bU/
f Обработчик событий onBlur является обработчиком события объекта FileUpIoad, который
вызывается при потере фокуса окном загрузки.
В листинге 8.159 приведен пример использования обработчика событий onBlur для оп-
определения момента, когда указанное окно загрузки файлов теряет фокус. Пользователь
выбирает файл в объекте FileUpIoad, а затем выбирает текстовое поле. При этом фокус
с объекта FileUpIoad перемещается и генерируется событие Blur.
Листинг 8.159. Пример использования метода onBlur объекта FileUpIoad
<html>
<body>
<script type="text/javascript" language="JavaScript">
function inform(){
document.forml.msg.value=
"Файл загружен и объект FileUpIoad потерял фокус";
</script>
<form name="forml">
Пожалуйста, выберите файл для загрузки на сервер.
<ЬгХЬг>
<input type="file" onBlur= 'inform()'>
<br><br>
Щелкните на поле ввода текста.
<ЬгХЬг>
Сообщение:
<input type="text" name="msg" size=0">
</form>
</body>
</html>
FlleUpload.onChange
onChange="команда"
| Обработчик событий onChange объекта FileUpIoad представляет собой обработчик собы-
событий, который вызывается при изменении информации в окне загрузки файлов.
% В листинге 8.160 обработчик событий onChange используется для проверки ввода пользо-
' вателем данных в окно загрузки файлов. При изменении имени файла вызывается об-
обработчик событий onChange и в текстовое поле выводится соответствующее сообщение.
Листинг 8.160. Пример использования обработчика событий onChange
<html>
<body>
<script type="text/javascript" language="JavaScript">
// функция, которая выдает пользователю сообщение об изменении
// имени файла в объекте FileUpIoad.
function inform(){
document.forml.msg.value = "Имя файла изменено";
]
// —>
</script>
<form name="forml">
Выберите файл.
<input type="file" name="uploadbox" size=5" onChange='inform()'>
<br><br>
Сообщение:
<input type="text" name="msg" size=0">
</form>
</body>
</html>
О U О Часть III. Справочник по JavaScript
or.Focus= " команда "
Обработчик со
пом загрузки.
'К-Ъ'* Обработчик событий onFocus объекта FileUpload вызывается при получении фокуса ок-
(/ ф В листинге 8.161 обработчик событий onFocus используется для вывода пользователю
&~ сообщения при получении фокуса окном загрузки. Когда пользователь перемещает фо-
фокус на объект FileUpload, на экране появляется соответствующее сообщение.
Листинг 8.161. Пример использования обработчика событий onFocus
<html>
<body>
<script type="text/javascript" languages"JavaScript">
// Эта функция выводит сообщение при перемещении фокуса
// на объект FileUpload.
function showMsgl(){
document.forml.msg.value = "Фокус на объекте FileUpload\n";
>
//Эта функция выводит сообщение при потере фокуса объектом FileUpload
function showMsg2(){
document.forml.msg.value = "Объект FileUpload потерял фокус\п";
>
// — >
</script>
<form name="forml">
Для перемещения фокуса на объект FileUpload щелкните на нем мышью.
<ЬгХЬг>
<input type="file" name="uploadbox" onFocus = 'showMsgl()'>
<br><br>
Для удаления фокуса с объекта FileUpload щелкните на этой кнопке.
<Ьг>
<input type="button" уа1ие="Щелкни на мне" onClick='showMsg2()•>
<brxbr>
<textarea name="msg" rows=" cols=0"x/textarea>
</form>
</body>
</html>
FileUpload.selectO
fileupload.select()
Метод sdect() объекта FileUpload используется для выбора области ввода окна загрузки
файлов.
% В листинге 8.162 приведен пример использования метода select() для выбора области
ввода объекта FileUpload.
Листинг 8.162. Использование метода select() объекта FileUpload
<html>
<body>
<script type="text/javascript" language="javaScript">
function enterName(){
// При щелчке на кнопке выбирается область ввода
// объекта FileUpload.
document.forml.uploadbox.select();
}
// — >
</script>
Глава 8. Клиентская сторона
<form name="forml">
<input type="file" name="uploadbox">
<br><br>
<input type="button" value="Перейти в окно загрузки файлов"
onClick=enterName()>
</body>
</html>
FileUpload.type
fileupload.type
Свойство type объекта FileUpIoad содержит значение атрибута type HTML-дескриптора
<input>, который использовался для создания данного окна загрузки файлов.
В листинге 8.163 приведен пример использования свойства type. При щелчке на кнопке
Get Type (Определить тип) на экран выводится окно предупреждения, содержащее зна-
значение свойства type.
Листинг 8.163. Использование свойства type объекта FileUpIoad
<html>
<body>
<script type="text/javascript" language^"JavaScript">
// Эо<а функция выводит на экран сообщение о типе первого элемента.
function getTypeO {
var mytype = document.forml.uploadbox.type;
alert("Тип объекта: " + mytype);
}
// — >
</script>
<form name="forml">
<input type="file" name="webfile">
<br><br>
Хотите узнать тип расположенного выше объекта?
Щелкните на этой кнопке.
<Ьг>
<input type="button" уа1ие="Определить тип" onClick='getType()'>
</form>
</body>
</html>
FileUpIoad.iinwatch()
fileupload.unwatch{prop)
Метод unwatch() объекта FOeUpIoad используется для прекращения отслеживания свой-
свойства, установленного с помощью метода watch(). В качестве аргумента он принимает один
параметр, prop, указывающий свойство, отслеживание которого прекращается.
В листинге 8.164 приведен пример использования метода unwatch() для прекращения
отслеживания свойства name.
Листинг 8.164. Использование метода unwatchO объекта FileUpIoad
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</b><br>")
return newValue;
510 Часть III. Справочник по JavaScript
function setWatch(){
myProp = document.forml.uploadbox.name;
watch("myProp",alertme);
myProp = "yahoo";
unwatch("myProp");
myProp = "ebay" ;
}
// —>
</script>
<body>
<form name="forml">
Выберите файл.
<input type="file" name="uploadbox">
<br><br>
Щелкните на кнопке для изменения свойства name объекта FileUpload
<Ьг>
<input type="button" уа1ие="Щелкни на мне" onClick='setWatchQ '>
</form>
</body>
</html>
FileUpload.value
fileupload.value
Свойство value объекта FileUpload содержит либо имя выбранного файла, либо данные,
введенные пользователем.
В листинге 8.165 приведен пример использования свойства value. Для определения зна-
значения атрибута value объекта FileUpload совместно используются объект form и имя окна
загрузки файлов.
Листинг 8.165. Использование свойства value объекта FileUpload
<html>
<body>
<script type=text/javascript" language="JavaScript">
function showFile(){
var input = document.forml.uploadbox.value;
alert("Имя файла: " + input);
>
// —>
</script>
<form name="forml">
Выберите файл.
<input type="file" name="uploadbox">
<brxbr>
Щелкните на кнопке для вывода значения объекта FileUpload.
<Ьг>
<input type="button" уа1ие="О'Гправи'гь" onClick=showFile () >
</form>
</body>
</html>
FileUpload.watCh() JavaScript^
fileupload.watch (prop, обработчик)
h Метод watch() объекта FileUpload используется для установки слежения за изменения-
изменениями свойств объекта FileUpload. При изменении значения свойства prop вызывается об-
обработчик, указанный параметром обработчик.
В листинге 8.166 приведен пример использования метода watch() с целью отслеживания
свойства name. При изменении имени окна загрузки вызывается функция alertme, ко-
которая выводит на экран соответствующее сообщение.
Глава 8. Клиентская сторона
511
Листинг 8.166. Использование метода watchl) объекта FileUpload.
<html>
<script type="text/javascript" language="JavaScript">
<!--
function alertme(id,oldValue,newValue)
document.writeln(id +
+ "</Ь>"+ " на
return newValue;
изменилось с " + "<Ь>" + oldValue
+ "<Ь>" + newValue + "</Ь><Ьг>")
function setwatch(){
myProp = document.forml.uploadbox.name;
watch("myProp",alertme);
myProp = "yahoo";
myProp = "ebay";
</script>
<body>
<form name="forml">
Выберите файл.
<input type="file" name="uploadbox">
<br><br>
Щелкните на кнопке для изменения значения свойства name объекта
FileUpload
<br>
<input type="button" уа1ие="Щелкни на мне" onClick='setWatch()'>
</form>
</body>
</html>
cnrm JavaScript 1.0+, JScript 1.0+
u Nav2+, IE3+. Opera3+
Основной объект клиентской части языка JavaScript.
| Объект Form соответствует HTML-свойству, созданному дескриптором <form>. Объект
< Form можно использовать для получения доступа ко всем свойствам указанной формы.
Обращаться к формам можно либо через массив forms, либо по их именам. Свойства и
методы объекта Form описаны в табл. 8.14.
Тип
Свойство
Метод
Таблица
Элемент
action
elements
elements.length
encoding
length
method
name
onReset
onSubmit
target
handleEvent()
8.14. Свойства и методы объекта Form
Описание
HTML-атрибут action объекта Form
Массив объектов, содержащихся на форме
Размер массива элементов
HTML-атрибут enctype объекта Form
Количество элементов на форме
HTML-атрибут method объекта Form
HTML-атрибут name объекта Form
Обработчик щелчка на кнопке Reset
Обработчик щелчка на кнопке Submit
HTML-атрибут target объекта Form
Обрабатывает определенное событие
512
Тип
Элемент
reset()
submit()
unwatch()
watch()
Часть III. Справочник по JavaScript
Описание
Сбрасывает элементы формы в исходное состояние
Передает данные формы
Прекращает отслеживание свойства
Устанавливает отслеживание свойства
В листинге 8.167 доступ к объекту Form осуществляется по его имени.
Листинг 8.167. Получение доступа к объекту Form по его имени
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция для проверки правильности введенной информации
// отображает на экране имя, введенное пользователем,
function checkName(){
var firstName = document.formEx.first.value;
var lastName = document.formEx.last.value;
alert ("Вы ввели имя: " + firstName + " " + lastName);
</script>
<form name="formEx"> Имя:
<input type="text" name="first" size=0">
фамилия:
<input type="text" name="last" size=5">
<br><br>
Для проверки правильности введенной информации щелкните на этой
кнопке.
<Ьг>
<input type="button" value="Проверить" name="check"
onClick='checkN'ame () '>
</form>
</body>
</html>
В листинге 8.168 доступ к объекту Form осуществляется с помощью массива forms. Форма
содержит только текстовое поле. При щелчке на кнопке на экране появляется окно пре-
предупреждения, в котором указано имя формы. Поскольку это первая форма в докумен-
документе, значение ее индекса в массиве forms равно 0.
Листинг 8.168. Использование массива forms
<html>
<body>
<script type="text/javascript" language="JavaScript">
function showFormName(){
var name = document.forms[0] .name;
alert("Имя формы: " + name);
</script>
<form name="forml">
Это текстовое поле принадлежит форме.
<input type="text" name="street">
<br><br>
Для определения имени формы щелкните на этой кнопке.
<Ьг>
<input type="button" value="Определить имя формы"
onClick='showFormName()'>
</form>
Глава 8. Клиентская сторона U I О
<form name="form2">
Это вторая форма в документе. Она содержит объект FileUpload.
<input type="file" name="uploadbox" size=5">
</body>
</html>
Form.action JavaScript^O^JScript.0.
form.action
f Свойство action содержит значение атрибута action HTML-дескриптора <form>. Как пра-
правило, это ссылка URL, по которой будут передаваться данные формы.
и* В листинге 8.169 приведен пример одного из методов использования объекта Form для
W получения доступа к свойству action HTML-формы. Свойство action указывает сервер и
программу, которой будут передаваться данные формы.
Листинг 8.169. Использование значения свойства action объекта Form
<html>
<body>
<script type="text/javascript" language="JavaScript">
function getAction(){
var actionValue = document.forml.action;
document.forml.msg.value = "Данные формы были переданы по
wследующей URL-ссылке: \n " + actionValue;
>
// —>
</script>
<form name="forml" action="http://www.test.org/cgi-bin/process.pl">
Введите ваш адрес:
<input type="text" name="address" size=0">
<brXbr>
<input type="button" value="nepeflaTb данные" onClick='getAction()'>
<br><br><br>
<textarea name="msg" rows=" cols=2"X/textarea>
</form>
■</body>
</html>
Form.elements
form.elements
Свойство elements объекта Form содержит массив elements, который используется для
получения доступа к любому элементу формы. Порядок следования элементов в масси-
массиве elements соответствует порядку их появления в HTML-коде.
В листинге 8.170 приведен пример получения доступа к элементам формы с помощью
массива elements. Поскольку в примере используется первый элемент формы, индекс
массива равен 0. Доступ ко второму элементу формы можно получить, указав elements[l].
Листинг 8.170. Доступ к элементам формы
<html>
<body>
<script type="text/javascript" language="JavaScript">
function getName(){
var textName = document.forml.elements[0].name;
alert("Имя текстового поля: " + textName);
</script>
О I 4 Часть III. Справочник no JavaScript
<form name="forml">
Это пустое текстовое поле. Для определения его имени
щелкните на кнопке.
<Ьг>
<input type="text" name="textboxl" size=25>
<br><br>
<input type="button" value="Определить имя" onClick = 'getName()'>
</form>
</body>
</html>
T
form.elements.length
Свойство efements.length объекта Form определяет количество элементов в массиве elements.
Каждый элемент этого массива соответствует объекту на HTML-форме.
В листинге 8.171 приведен пример использования свойства elements.length. При щелчке
на кнопке Get Elements (Определить количество элементов) на экране отображается окно
предупреждения, в котором указывается количество элементов на форме.
Листинг 8.171. Использование свойства elements.length
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция использует свойство elements.length для определения
// количества элементов на форме,
function getNum(){
var numOfElements = document.forml.elements.length;
alert("Количество элементов в этом документе:" + numOfElements);
}
// — >
</script>
<£orm name="forml"> Текстовое поле:
<input type="text" name="textboxl" size=5">
<br>
<input type="button" value="KHonKa">
<input type="text" size=0" name="Sample">
<br><br>
Для определения количества элементов на форме щелкните на этой
кнопке.
<input type="button" уа1ие=пределить количество элементов"
onClick='getNum()'>
</form>
</body>
</html>
Form pnroriinn JavaScript 1.0+, JScript 1.0+
югт.encoding Nav2+ (E3+ OpergJ+
form.encoding
3|Свойство encoding объекта Form указывает тип кодировки, используемой данной фор-
формой. Значение этого свойства можно задать в атрибуте enctype HTML-дескриптора <form>.
ПРИМЕЧАНИЕ
Значение свойства encoding имеет более высокий приоритет, чем
значение атрибута enctype.
B листинге 8.172 свойство encoding объекта Form применяется для определения исполь-
зуемого формой типа кодировки.
Гпвва 8. Клиентская сторона 3 I U
Листинг 8.172. Использование свойства encoding объектв Form
<html>
<body>
<script type="text/javascript" language="JavaScript">
^i
// Эта функция возвращает тип кодировки для указанной формы,
function getEncodingO {
var encodingType = document.foiml.encoding;
return encodingType;
1
// ~->
</script>
<form name="forml" action="post"
enctype="application/x-www-form-urlencoded">
<input type="button" value="-Определить тип кодировки"
onClick='getEncodingO'>
</form>
</body>
</html>
Form.handleEvent() "JavaScript 1.2+, JScript 10+
" Nav4+, 1E3+
forni.handleEvent {событие)
Ц Метод handleEvent() свойства Form вызывает обработчик указанного события. В качестве
» аргумента метод принимает один параметр — событие, которое необходимо обработать.
и* В листинге 8.173 метод handleEvent() используется для обработки передаваемого собы-
¥ тия. Сценарий перехватывает событие CLICK. При перехвате этого события функция
handleMyCKck() вызывает метод handleEvent(), который и обрабатывает событие CLICK.
Листинг 8.173. Испопьзование метода handleEventO
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата окном событий CLICK
document.captureEvents(Event.CLICK) ;
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handleMyClick(evnt){
window.document.buttonl.handleEvent(evnt);
)
function displayMsgO {
document.forml.msg.value += "Произошло событие Click.\n";
)
// .Приведенная ниже строка регистрирует функцию handleMyClick в
// качестве обработчика событий CLICK.
document.onclick = handleMyClick;
// —>
</script>
<form name="forml">
<input type="button" Уа1ие="Щелкните иа мне" name="buttonl"
onClick="displayMsgO'>
<br><br>
<textarea name="msg" rows=0" cols=0"
onClick='displayMsg()'></textarea>
</form>
</body>
</html>
5 I D Часть III. Справочник по JavaScript
JavaScript 1.0+, JScript №
N2 l£3 QJ
form.length
Свойство length объекта Form определяет количество элементов на форме.
ПРИМЕЧАНИЕ
Это свойство аналогично свойству elements.length.
В листинге 8.174 приведен пример использования свойства length, предназначенного для
определения количества элементов в документе. Функция showNumElements() выводит на
экран сообщение о значении свойства length формы, которое соответствует количеств)/
элементов на форме.
Листинг 8.174. Использование свойства length
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция выводит на экран окно предупреждения, содержащее
// количество элементов на форме,
function showNumElements(){
alert("В этом документе находится " + document.forml.length
+ " элемент(а, ов)");
</script>
<form name="forml"> Введите имя:
<input type="text" size=5"Xbr>
Введите фамилию:
<input type="text" size=0"Xbr>
Введите адрес:
<input type="text" size=0"XbrXbr>
<input type="button" value="Передать данные"
onClick="showNumElements()'>
</form>
</body>
</html>
Form.method JavaScript1.0+.JScript 1.0+
Nav2+, IE3+, Opera3+
form.method
к Свойство method объекта Form содержит тип передачи данных (GET или POST), исполь-
используемый формой.
В листинге 8.175 свойство method применяется для определения используемого формой
типа передачи данных. Функция informMethod() выводи на экран окно предупреждения
с указанием используемого типа передачи данных — GET или POST.
Листинг 8.175. Использование свойства method
<html>
<body>
<script type="text/javascript" language="JavaScript">
function informMethod(){
alert("Tnn передачи данных формы:" + document.forml.method) ;
</script>
<form name="forml" method="get">
Имя: <input type=text" name="first" size=5">
Фамилия: <input type=text" name="last" size=5">
<br>
Город: <input type=text" name="city" size=0">
Страна: <input type=text" name="state" size=" m*xlength=">
Глава В. Клиентская сторона
517
Почтовый индекс: <input type=text" name="zip" size="
niaxlength="S">
<br><br>
Для определения типа передачи данных формы щелкните на этой
кнопке.
<input type="button" value="Ha*:MH меня" onClick='informMethod()'>
</form>
</body>
</html>
Form.name JavaScript 1.0+.JScript 1.0+
Nav2+, IE3+, Opera3+
form.name
^Свойство name объекта Form содержит имя формы, указанное в HTML-дескрипторе
г <form>.
% В листинге 8.176 приведен пример использования свойства name для определения зна-
* чения HTML-атрибута name формы. Функция showName для получения доступа к свой-
свойству name формы использует объект Form.
Листинг 8.176. Использование свойства пате
<html>
<body>
<script type="text/javascript" languages"JavaScript">
function showName(){
// Окно предупреждения выводит на экран имя формы
alert("Имя формы: " + document.forml.name);
</script>
<form name =" forml" >
Текстовое поле.
<input type= "text" size=5">
<brXbr>
Для определения имени формы щелкните на этой кнопке
<input type="button" value="]HenKtm на мне" onclick='showName()'>
</form>
</body>
</html>
Form.OnReset JavaScript 1.1+, JScript 1.0+
onReset="команда"
| Метод onReset объекта Form выполняет код JavaScript при возникновении события reset.
В листинге 8.177 приведен пример использования обработчика событий onReset. Функ-
Функция JavaScript проверяет, был ли выполнен щелчок на кнопке Reset (Сброс). Если был
произведен щелчок на кнопке, все текстовые значения устанавливаются равными ука-
указанному значению.
Листинг 8.177. Использование обработчике событий onReset
<html>
<body>
<script type="text/javascript" language^"JavaScript">
// Если обработчик событий onReset определил, что был выполнен
// щелчок на кнопке Reset (Сброс),
// эта функция выводит на экран соответствующее сообщение,
function showMsg(){
document.form2.msg.value = "Были сброшены текстовые поля.";
</script>
U I О Часть III. Справочник по JavaScript
<form name="forml" onReset='showMsg()'>
Поле l:<input type= "text" name=" textl" sizesize=0"Xbr>
Поле 2:<input type= "text" name="text2" sizesize=0"Xbr>
Поле 3:<input type= "text" name="text3" sizesize=0"Xbr>
<input type="reset" value="C6pocHTb" name="Reset"
</form>
<form name="form2">
Сообщение:<input type="text" name="msg" size=0">
<br><br>
</form>
</body>
</html>
onSubmit="команда"
Метод on Submit объекта Form выполняет код JavaScript при возникновении события
submit.
В листинге 8.178 приведен пример использования обработчика событий on Submit объек-
объекта Form. Пользователь вводит свои комментарии в имеющуюся на форме текстовую об-
область. После завершения вюда для передачи данных формы он шелкает на кнопке Submit
(Передать данные). Используя обработчик событий on Submit, можно поблагодарить
пользователя за предоставление его комментариев.
Листинг 8.178. Использование метод onSubmit объекта Form
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Эта функция выводит на экран подтверждение передачи данных формы
function confirm(){
alert("Ваши комментарии переданы. Спасибо.");
}
II —>
</script>
<form name="forml" onSubmit = 'confirm()'
<Ъ>Введите комментарии: </b>
<br>
<textarea name="comments" rows=" cols=0"X/textarea>
<br><br>
<input type = "submit" Уа1ие="Передать данные">
</fOrm>
</body>
</html>
Form rp«4Ptf\ JavaScript 1.1+, JScript 1.0+
t-orm. resetu Na>;3+ |E3+ 0£era3+
form.reset ()
\ Метод reset объекта Form сбрасывает значения всех элементов формы в исходные состо-
состояния. Действие этого методу аналогично щелчку на кнопке Reset.
В листинге 8.179 приведен пример использования метода reset для сброса значений эле-
элементов формы. При щелчке на кнопке Reset все значения в форме сбрасываются (содер-
(содержимое текстовых полей очищается).
Листинг 8.179. Использование метода reset()
<html>
<body>
<script type="text/javascript" language="JavaScript">
Гневе В. Клиентская сторона 519
function resetForm(form){
document.forml.reset(form);
}
II—>
</script>
<form name="forml">
Field l:<input type="text" size=0" name=" textl"Xbr>
Field 2:<input type="text" size=0" name="text2"Xbr>
Field 3:<input type="text" size=0" name="text3"Xbr>
<input type="button" name="reset" value="reset"
onClick='resetForm(this.form)'>
</form>
</body>
</html>
Form.submitO
form.submit()
Метод submit объекта Form используется для передачи данных формы. Эффект его дей-
ствия аналогичен эффекту шелчка на кнопке Submit (Передать данные).
В листинге 8.180 приведен пример передачи данных формы с помощью метода submit().
Данные формы передаются в соответствии со значением атрибута action HTML-дескрип-
HTML-дескриптора <form>. В приведенном примере форма передается на обработку фиктивном}' сце-
сценарию.
Листинг 8.180. Использование метода submit()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция передает данные формы серверу, указанному в
// дескрипторе <form>.
function submitForm(form){
document.forml.submit(form);
}
II —>
</script>
<form name= "forml" method="post"
action="http://www.myserver.com/cgi-bin/test.pl">
Это пример формы
<br><br>
HMH:<input type="text" size=0" name="name">
<br>
Возраст:<input type="text" size=" name="age">
<br>
Номер телефона:<input type="text" size=0" name="phone">
<brxbr>
<input type= "button" value="Передать данные" onclick =
'submi tForm(this.form) '>
</form>
</body>
</html>
JavaScript 1.0+, JScript 1.0+
Nav2+ |E3+ Opera3+
form.target
Свойство target объекта Form указывает окно или фрейм, в котором будут выводиться
результаты формы. Это свойство может отражать содержимое атрибута target HTML-дес-
HTML-дескриптора <form>. Допустимые значения свойства target следующие: Jblank, _parent, _self
и _top.
D С. U Часть III. Справочник по JavaScript
В листинге 8.181 создается форма. При щелчке на кнопке Submit (Передать данные) вы-
вызывается функция show(), которая сообщает пользователю о том, задано ли значени
свойства target.
Листинг 8.181. Вывод на экран результатов с помощью свойства target
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
function show(){
var tar = document.forml.target;
if(tar == "_self"){
alert("Местом назначения данных формы является это окно");
}
else{
alert("Место назначения данных формы не указано") ;
</script>
<form name="forml" action="post" target="_self">
Имя: <input type="text" size=5" name="first">
Фамилия: <input type="text" size=0" name="last">
<br>
Улица: <input type="text" size=0" name="street">
<br>
Город: <input type="text" size=5" name="city">
Страна: <input type="text" size=" name="st">
Индекс: <input type="text" size=" name="zip">
<br><br><br>
<input type="button" value="Передать данные" onClick='show()'>
</form>
</body>
</html>
Form.unwatCh() JavaScript^*
form.unwatch(prop)
jj Метод unwatch() объекта Form используется для прекращения отслеживания свойства,
установленного с помощью метода watch(). В качестве аргумента он принимает один па-
параметр, prop, задающий свойство, отслеживание которого прекращается.
В листинге 8.182 приведен пример использования метода unwatch() для прекращения
отслеживания свойства name формы.
Листинг 8.182. Использование метода unwatchO объекта Form
<html>
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue +
return newValue;
}
function setWatch(){
myProp = document.forms[0].name;
watch("myProp",alertme);
myProp = "red_form";
unwatch("myProp");
myProp = "blue_form";
}
II —>
</script>
Глава В. Клиентская сторона ОС. I
<body>
<form name="forml">
<input type="button" value="fflenKHM на мне" onClick='setWatch()'>
</form>
</body>
</html>
Form.watch()
form.watch(prop, обработчик)
Метод watch() объекта Form используется для установки отслеживания изменений
свойств объекта Form. При изменении значения свойства prop вызывается обработчик,
указанный параметром обработчик.
В листинге 8.183 приведен пример использования метода watch() для установки отсле-
отслеживания свойства name формы. При щелчке на кнопке устанавливается отслеживания
свойства и изменяется значение свойства. При каждом изменении свойства вызывается
функция alertme, которая выводит на экран соответствующее сообщение.
Листинг 8.183. Использование метода watchO объекта Form
<html>
<script type="text/javascript" languages"JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</ЬХЬг>")
return newValue;
}
function setWatch(){
myProp = document.forms[0].name;
watch("myProp",alertme);
myProp = "red_form";
myProp = "blue_form";
}
</script>
<body>
<form name="forml">
<input type="button" уа1ие="Щепкни на мне" onClick='setWatch()■>
</form>
</body>
</html>
JavaScript 1.0+, JScript 1.0+
Nav2+, IE3+. Opera3+
Основной объект клиентской части языка JavaScript.
В одном окне могут располагаться несколько независимо просматриваемых фреймов, в
каждом из которых отображается свой URL. Объект Frame, экземпляр которого создает-
создается с помощью дескриптора <frame>, является удобной формой представления объектов,
составляющих эти фреймы.Однако фактически JavaScript для представления фреймов
использует объект Window. Каждый объект Frame является объектом Window и имеет все
методы и свойства объекта Window. Свойства и методы объекта Frame перечислены в табл.
8.15.
ПРИМЕЧАНИЕ
В большинстве примеров использования объекта Frame предполага-
предполагается, что существуют файлы top.html и bottom.html. Кроме того, в некоторых при-
примерах приводится только код документа.
Часть III. Справочник по JavaScript
Таблица 8.15. Свойства и методы объекта Frame.
Тип
Элемент
Описание
Свойство document
Текущий документ, который загружается в фрейм
frames
Массив указателей на дочерние фреймы
length
Размер массива frames
name
HTML-атрибут name объекта Frame
Метод
onBlur
onFocus
onMove
OnResize
parent
self
top
window
blur()
clearlntervalO
clearTimeoutO
Обработчик событий blur
Обработчик событий focus
Обработчик событий move
Обработчик событий resize
Главное окно или фрейм, на базе которого создаются дочерние
фреймы
Текущий объект Frame
Окно браузера, выполняющего сценарий
Текущее окно или фрейм
Убирает фокус из объекта Frame
Отменяет повторное выполнение
Отменяет отложенное выполнение
focus()
Перемещает фокус на объект Frame
Print()
Вызывает диалоговое окно печати
setlntervalQ Устанавливает график повторного вызова функции
setTirneoutO Устанавливает график отложенного вызова функции
unwatchO
Прекращает отслеживание свойства
watch()
Устанавливает отслеживание свойства
В листинге 8.184 приведен пример кода создания HTML-фрейма и использования его
свойств. В данном примере предполагается, что файлы top.html и bottom.html уже суще-
существуют.
Листинг 8.184. Пример объекта Frame.
<html>
<script type="text/javascript" language="JavaScript">
//Эта функция возвращает имя фрейма.
function getNarae(){
var fraraeName = document.window.frame.name;
return frameName;
}
II —>
</script>
<frameset rows=00,*">
<frame src="top.html" name="upper">
<frame src="bottom.html" name="bottom" scrolling="yes">
</frameset>
</html>
ггева В. Клиентская сторона Оси
JavaScript 1.1+, JScript 1.0+
frame.blur ()
Метод blur() объекта Frame используется для перемещения фокуса с фрейма.
В листинге 8.185 приведен пример использования метода blur() для перемещения фо-
фокуса с фрейма.
Листинг 8.185. Пример использования метода blur()
<html>
<script type="text/javascript" language="JavaScript">
<!--
function removeFocus(){
document.upper.blur()
}
II —>
</script>
<frameset rows=00,*">
<frame src="top.html" name="upper" onDblClick='removeFocus()'>
<frame src="bottom.html" name="bottom" scrolling="yes">
</frameset>
</html>
Frame.clearlntervalO " JavaScript 1.2+, «cript"To+
frame.clearInterval()
|j& Метод clearlntervalO объекта Frame используется для отмены повторного выполнения.
i/|B листинге 8.186 приведен синтаксис использования метода dearlnterval(). Более полный
tr пример можно найти в описании метода window.clearlnterval().
Листинг 8.186. Пример использования метода clearlntervalO
<script type="text/javascript" language="JavaScript">
function cancel(){
framename.clearlnterval();
}
II—>
</script>
Frame.clearTimeoutO
frame.clearTimeout()
Метод clearTimeoutO объекта Frame используется для отмены отложенного выполнения.
Более полный пример приводится в описании метода window.dearTimeout().
В листинге 8.187 приведен синтаксис использования метода clearTimeoutO.
Листинг 8.187. Пример использования метода clearTimeoutO
<script type="text/javascript" language="JavaScript">
function stop(){
fraroename.clearTimeout();
II —>
</script>
Frame.document
frame.document
\ Свойство document объекта Frame содержит данные о текущем документе. Свойство
document создается с помощью HTML-дескриптора Kbody> и доступно в любом объек-
D С4 Часть III. Справочник по JavaScript
те Frame или Window. Свойство document используется для получения доступа к другим
элементам HTML-документа.
В листинге 8.188 приведен пример применения свойства document для получения досту-
доступа к элементам документа, находящимся в определенном фрейме. Более подробный при-
пример можно найти в описании свойства window.document.
Листинг 8.188. Использование свойства document
<script type="text/javascript" language="JavaScript">
<! —
function getName(){
var name = framename.document.elements[1].name;
}
II —>
</script>
Frame.focusO
frame.focus()
Метод focus() объекта Frame используется для переноса фокуса на определенный фрейм.
В листинге 8.189 приведен пример синтаксиса метода focus(). При загрузке документа
фокус автоматически перемещается на нижний фрейм.
Листинг 8.189. Использование метода focusO
<html>
<script type="text/javascript" language="JavaScript">
<!--
//Переместить фокус на нижний фрейм.
document.bottom.focus;
//-->
</script>
<frameset rows="80, *">
<frame name=top src=top.html>
<frame name=bottom src=bottom.html>
</frameset>
</html>
Frame.frames JavaScript1.0+- JScript 1.0+
Nav2+, ME3+, Opera3+
frame.frames[число]
& Свойство frames объекта Frame представляет собой массив, в котором хранятся дочер-
ние объекты Frame. Доступ к элементам массива можно получить либо за счет индекса-
индексации в массиве, либо за счет использования имени фрейма, указанного в атрибуте name.
В листинге 8.190 массив frames используется для получения доступа к свойству length
дочернего фрейма.
Листинг 8.190. Пример использования свойства frames.
<script type="text/javascript" language="JavaScript">
<! —
function getFrameLength() {
var childLength = document.frames["firstChild"].length;
}
II —>
</script>
JavaScript 1.0+, ECMAScript 1.0+, JScript 1.0+
Ngv2+ |E3+ Opera3+
frame.length
# Свойство length объекта Frame определяет размер массива frames, что соответствует ко-
количеству дочерних фреймов.
Глава 8. Клиентскея стороне 525
|ДВ листинге 8.191 демонстрируется простой вызов функции, которая использует свойство
tr length для установки значения переменной равным количеству дочерних фреймов.
Листинг 8.191. Пример использования свойства length
<script type="text/javascript" language="JavaScript">
function getLength(){
var numOfChildFrames = window.frameName.length;
1
II —>
</script>
Frame name JavaScript 1.0+, JScript 1.0+
frame, name N£v2+ |E3+ 0£era3+
frame. name
f Свойство name объекта Frame содержит имя фрейма, установленное в атрибуте name
HTML-дескриптора <frame>.
В листинге 8.192 свойство name применяется для вывода на экран информации об ак-
активном фрейме.
Листинг 8.192. Пример использования свойствв name
<script type="text/javascript" languages"JavaScript">
function activeFrame(){
var frameName = window.myframe.name;
alert("Активный фрейм: " + frameName);
1
II—>
</script>
onB1u r="команда"
Обработчик событий onBIur указывает, что будет происходить при потере фреймом фо-
фокуса.
В листинге 8.193 обработчик событий onBInr используется для изменения цвета верхнего
фрейма при получении им фокуса.
Листинг 8.193. Пример использоввния обрвботчика событий onBIur
<html>
<script type="text/javascript" language="JavaScript">
function change(){
frames[0]-onblur=new Function("document.bgColor='green'")
1
</script>
<£rameset rows=0%,*" onload='change()'>
<frame name="topFrame" src="top.html">
<frame name="bottomFrame" src=bottom.html>
</frameset>
</html>
Frame.onFocus
onFocus="команда"
Обработчик событий onFocns указывает, что будет происходить при получении фреймом
фокуса. Пользователь может переместить фокус во фрейм либо с помощью мыши, либо
с помошью клавиши Tab.
5 2 О Часть III. Справочник по JavaScript
В листинге 8.194 приведен пример синтаксиса обработчика событий onFocus. Когда фо-
фокус перемещается в верхний фрейм, на экране появляется окно предупреждения.
Листинг 8.194. Синтаксис обработчика событий onFocus
<html>
<frameset rows="80, *">
<frame src="top.html" name="top"
onFocus='alert("Вы находитесь в верхнем фрейме")">
<frame src="bottom.html" name="bottom">
</frameset>
</html>
JavaScript 1.2+, ECMAScript 1.0+. JScript №
Nav4+,IE3+
onMove="команда"
■ Обработчик событий onMove указывает, что будет происходить в результате генер ции
события move в пределах фрейма.
В листинге 8.195 приведен пример использования обработчика событий onMove для ы-
дачи пользователю сообщения при перемещении фрейма.
Листинг 8.195. Пример использования обработчика событий onMove
<html>
<frameset rows="80, *" onMove='alert ("Вы перемещаете фрейм")■>
<frame src="top.html" name="top" >
<frame src="bottom.html" name="bottom">
frameset>
</html>
Frame.onResize JavaScript 1.2+,
onResize="команда"
Обработчик событий OnResize указывает, что будет происходить при изменени разме-
размеров фрейма.
В листинге 8.196 приведен пример использования обработчика событий OnResize я оп-
определения момента изменения размеров фрейма.
Листинг 8.196. Синтаксис обработчика событий OnResize
<html>
<frameset rows="80, *">
<frame src="top.html" name="top" >
<frame src="bottom.html" name="bottom"
on8esize='alert("Вы изменяете paSMep нижнего фрейма")'>
</frameset>
</html>
Frame Darent JavaScript 1.0+, JScript 1.0+
r-rame.parent Nav2+ ]£3+ Opera3+
frame.parent
$3j> Свойство parent объекта Frame содержит ссылку на фрейм, содержащий данный фрейм.
■ ^В листинге 8.197 приведен пример использования свойства parent объекта Frame.
Листинг 8.197. Пример использования свойства parent
<script type="text/javascript" language="JavaScript">
<!--
function getParent(){
var parentName = parent.frameName.name;
}
II —>
</script>
Глава 8. Клиентскея стороне О а. /
Frame.print()
frame.print(параметры)
Метод print объекта Frame используется для передачи данных документа из определен-
определенного фрейма для вывода на принтер. Эффект применения этого метода аналогичен эф-
эффекту использования команды Print (Печать) в меню браузера.
В листинге 8.198 приведен пример использования метода print. При выполнении щелч-
щелчка мыши в нижнем фрейме обработчик onCHck вызывает метод print().
Листинг 8.198. Пример использования метода print()
<html>
<frameset rows="80, *">
<frame src="top.html" name="top" >
<frame src="bottom.html" name="bottom"
onClick='document.window.bottom.eprint()'>
</frameset>
</html>
JavaScript 1.6+7^Script 1.0+
Nav2+, IE3+, Opera3+
frame.self
> Свойство self объекта Frame используется в качестве ключевого слова для ссылки на те-
текущий фрейм.
В листинге 8.199 приведен пример использования свойства self для определения имени
текущего фрейма.
Листинг 8.199. Синтаксис свойства self
<script type="text/javascript" language="JavaScript">
function getName(){
var name=window.frame.self.name;
</script>
Frame.set!nterval()
frame.setlnterval(выражение,число)
Метод setlntervaK) объекта Frame используется для установки функции с целью ее пе-
периодического вызова. В качестве аргументов метод использует два параметра. Первый па-
параметр, выражение, — это выполняемое выражение. Второй параметр, число, задает время
в миллисекундах, которое должно пройти перед повторным вызовом на выполнение
выражения. Вызываемую функцию можно остановить, обратившись к методу
dearlnterval().
В листинге 8.200 приведен пример вызова метода setlnterval(). Более подробный пример
можно найти в описании метода window.setlnterval.
Листинг 8.200. Пример вызова метода setlntervalf).
<script type="text/javascript" language="JavaScript">
<!--
Frame.setlnterval(document.write('Начать вывод', 50));
II—>
</script>
Frame.setTimeoutO
frame.setTimeout(строка,число)
Метод setTimeout() объекта Frame используется для установки функции, реализующей
отложенный вызов. В качестве аргументов метол использует два параметра. Первый пара-
О 2 О Часть III. Справочник по JavaScript
метр, строка, — это выполняемая функция или выражение. Второй параметр, число,
определяет время в миллисекундах, которое должно пройти перед выполнением функ-
функции или выражения.
В листинге 8.201 приведен пример использования метода setilmeoutO, используемого для
отложенного запуска текста на печать.
Листинг 8.201. Пример использования метода setTimeoutO
<html>
<script type="text/javascript" language^"JavaScript">
document.bottom.setTimeout(document.bottom.print(
"Продолжит выполнение"), 500) ;
</script>
<frameset rows=00, *">
<frame src="top.html" name="upper">
<frame src="bottom.html" name="bottom" scrollxng="yes">
</fraineset>
</html>
Cramp tnn JavaScript 1.0+, JScript 1.0+
ridiiie.iuy Nav2+, IE3+. Opera3+
frame.top
k Свойство top объекта Frame указывает окно браузера верхнего уровня, в котором содер-
содержатся фреймы.
В листинге 8.202 приведен пример использования свойства top для определения имени
окна браузера верхнего уровня.
Листинг 8.202. Пример использования свойства top
<script type="text/javascript" language="JavaScript">
var topBrowserName = myframe.document.top.name;
alert("Имя окна браузера верхнего уровня: " + topBrowser);
II—>
</script>
Frame.UnwatCh() JavaScript^
frame.unwatch(prop)
Метод unwatch() объекта Frame используется для прекращения отслеживания свойства,
установленного с помощью метода watch(). В качестве аргумента он использует один па-
параметр, prop, определяющий свойство, отслеживание которого будет прекращено.
В листинге 8.203 приведен пример использования метода unwatch() для прекращения
отслеживания свойства name фрейма. Метод setWatch устанавливает отслеживание име-
имени фрейма. При изменении имени вызывается функция alertme. После этого с помощью
метода unwatchO отслеживание имени прекращается.
Листинг 8.203. Использование метода unwatchO объекта Frame.
<script type="text/javascript" language="JavaScript">
// Предупреждать пользователя об изменении отслеживаемого свойства,
function alertme(id,oldValue,newValue)
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>" + " на " + "<Ь>" + newValue + "</b><br>")
return newValue;
// установить отслеживание имени фрейма,
function setWatch(){
myProp = document.frameName.name;
Глава 8. Клиентскея сторона Э С. У
watch("myProp",alertme)
myProp = "bugs";
unwatch("myProp");
myProp = "daffy";
1
II—>
</script>
Frame.watch()
frame.watch{prop, обработчик)
I Метод watch() объекта Frame используется для установки отслеживания изменения
' свойств объекта Frame. При изменении значения свойства prop вызывается обработчик,
указанный в параметре обработчик.
3 В листинге 8.204 приведен пример использования метода watchQ для установки отсле-
живания свойства name фрейма. Метод setWatch устанавливает отслеживание имени фрей-
фрейма. При изменении имени вызывается функция alertme.
Листинг 8.204. Использование метода watchO
<script type="text/javascript" language="JavaScript">
<!--
// Предупреждать пользователя об изменении отслеживаемого свойства.
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</b><br>")
return newValue;
}
// Установить отслеживание имени фрейма.
function setWatch(){ *
myProp = document. frarneName.name;
watch("myProp",alertme);
myProp = "bugs";
}
II —>
</script>
Frame.window
frame. window
Свойство window объекта frame ссылается на текущий фрейм. Это свойство аналогично
свойству self.
В листинге 8.205 приведен пример синтаксиса свойства window.
Листинг 8.205. Синтаксис свойства window.
<html>
<script type="text/javascript" language="JavaScript">
//Переместить фокус на верхний фрейм.
document.upper.window.focus();
II —>
</script>
<frameset rows=00 ,*">
<frame src="top.html" name="upper">
<frame src="bottom.html" name="bottom">
</frameset>
</html>
JavaScript 1.0+, JScript 1.0+
Nav2+, IE3+, Opera3+
Основной объекта клиентской части языка JavaScript.
DuU Часть ill. Справочник по JavaScript
# Объект Hidden создается с помощью HTML-дескриптора <input>, указывая значение
hidden в атрибуте type упомянутого дескриптора. Это текстовый объект, который не ви-
виден на HTML-форме. Объект Hidden в основном используется для передачи из формы
пар имя/значение. Свойства объекта Hidden описаны в табл. 8.16.
Таблица 8.16. Свойства и методы объекта Hidden
Тип
Свойство
Метод
Элемент
form
name
type
value
unwatch()
watch ()
Описание
Указывает форму, в которой содержится данный объект Hidden
Содержит имя объекта Hidden
Содержит значение HTML-атрибута type объекта Hidden
Содержит значение HTML-атрибута value объекта Hidden
Прекращает отслеживание свойства
Устанавливает отслеживание свойства
В листинге 8.206 приведен пример создания объекта Hidden и использования его отдель-
отдельных свойств.
Листинг 8.206. Создание объекта Hidden
<html>
<body>
<form name="forml">
<input type="hidden" name="hidel" value="Test">
<input type="button" уа1ие="Определить атрибуты объекта Hidden"
onClick='alert("Имя объекта Hidden: " + forml.hidel.name
+ "Тип объекта Hidden: " + forml.hidel.type
+ "Значение объекта Hidden: " + forml.hidel.value)'>
</form>
</body>
</html>
Hidden.form
hidden.form
Свойство form объекта Hidden используется для получения доступа к форме, в которой
находится данный объект Hidden.
В листинге 8.207 приведен пример использования свойства form для хранения имени
формы.
Листинг 8.207. Пример использования свойства form
<html>
<body>
<form name="forml">
Имя $opMb::<input type="hidden" name="hidel" value="Test">
<input type="button" value="HMH формы"
onClick="this.form.hidel.value=this.form.name">
</form>
</body>
</html>
Hidden.name
hidden.name
& Свойство name объекта Hidden используется для определения имени объекта Hidden. Это
HTML-атрибут name объекта Hidden.
Глава 8. Клиентская стороне
531
В листинге 8.208 приведен пример использования свойства name. Для получения досту-
доступа к свойству name используется объект Form.
Листинг 8.208. Пример использования свойства name
<html>
<body>
<form name="forml">
Имя формы:<input type="hidden" name="hidel" value="Test">
<input type="button" уа1ие="Имя объекта Hidden"
onClick='alert("Имя объекта Hidden: " + forml.hide1.name)'>
</form>
</body>
</html>
JavaScript 1.1+, JScript 3.0+
Nav3+ |£4+ Opera3+
hidden.type
Свойство type объекта Hidden используется для определения типа объекта Hidden. Для всех
объектов Hidden значение этого свойства равно hidden.
В листинге 8.209 приведен пример применения свойства type для определения типа hidden.
Для получения доступа к свойству type используется объект Form.
Листинг 8.209. применения свойства type
<html>
<body>
<form name="f orml">
Form name:<input type="hidden" name="hidel" value="Test">
<input type="button" value="lHn объекта Hidden"
onClick='alert("Тип объекта Hidden: " + forml.hide1.type)'>
</form>
</body>
</html>
Hidden.unwatch() JavaScriP(M.2+
hidden.unwatch{prop)
| Метод umvatch() объекта Hidden используется для прекращения отслеживания свойства,
установленного с помощью метода watch(). В качестве аргумента он принимает один па-
параметр, prop, определяющий свойство, отслеживание которого прекращается.
В листинге 8.210 приведен пример использования метода unwatch() для прекращения
слежения за свойством value объекта Hidden.
Листинг 8.210. Использование метода unwatchQ объекта Hidden
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</ЬХЬг>")
return newValue;
function setWatch(){
myProp = document.forml.hidel.value;
watch("myProp",alertme);
myProp = "joe";
unwatch("myProp");
myProp = "jane";
</script>
532 Часть III. Справочник по JavaScript
<body>
<form name="forml">
Объект Hidden <input type="hidden" name="hidel" value="Teor">
<input type="button" уа1ие="Щелкните здесь" onClick='setWatch()'>
</form>
</body>
</html>
Hidden.value
hidden.value
Свойство value объекта Hidden содержит значение HTML-атрибута value объекта Hidden.
В листинге 8.211 приведен пример использования свойства value объекта Hidden. В при-
примере для вывода на экран окна предупреждения, содержащего значение свойства value
объекта Hidden, используется обработчик событий onClick.
Листинг 8.211. Использование свойства value объекта Hidden
<html>
<body>
<form name="forml">
Form name:<input type="hidden" name="hidel" value="Teci">
<input type="button" уа1ие="Определить значение объекта Hidden"
onClick='alert("Значение объекта Hidden: " + forml.hidel.value)'>
</form>
</body>
</html>
Hidden.watCh() JavaScript^
hidden.watch{prop, обработчик)
k Метод watch() объекта Hidden используется для установки отслеживания изменений
свойств объекта Hidden. При изменении значения свойства prop вызывается обработчик,
заданный с помощью параметра обработчик.
В листинге 8.212 приведен пример использования метода watch() для установки отсле-
отслеживания за свойством value объекта Hidden. При изменении значения свойства вызыва-
вызывается функция alertme, которая выводит на экран соответствующее сообщение.
Листинг 8.212. Использование метода watch() объекта Hidden
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</b>" + " на " + "<b>" + newValue + "</b><br>")
return newValue;
function setWatch(){
myProp = document.forml.hidel.value;
watch("myProp",alertme);
myProp = "joe";
myProp = "j ane";
</script>
<body>
<form name="forml">
Hidden Input<input type="hidden" name="hidel" value="Test">
Глава 8. Клиентская сторона
533
<input type="button" value="Click Here" onClick='setWatch()'>
</form>
</body>
</html>
Hictnru JavaScript 1.0+, ECMAScript 1.0+, JScript 1.0+
n aiu » Nav2+, IE3+, Opera3+
Основной объект клиентской части языка JavaScript.
^Объект History — это стандартный объект языка JavaScript, с помощью которого реали-
' зуется журнал посещенных Web-сайтов. Браузер сохраняет журнал посещенных ссылок
URL в списке, к которому может обращаться объект History. Методы и свойства объек-
объекта History перечислены в табл. 8.17.
Таблица 8.17. Методы и свойства объекта History
Тип
Свойство
Метод
Элемент
current
length
next
previous
back()
forward()
goo
unwatch()
watch()
Описание
Возвращает текущий URL-адрес из журнала посещений
Возвращает количество элементов в журнале посещений
Возвращает следующий URL-адрес из журнала посещений
Возвращает предыдущий URL-адрес из журнала посещений
Загружает URL-адрес предыдущего посещенного Web-сайта
Загружает следующий URL-адрес в журнале посещений
Загружает некоторый URL-адрес из журнала посещений
Прекращает отслеживание свойства
Устанавливает отслеживание свойства
■* В листинге 8.213 приведен пример использования объекта History. Для просмотра жур-
нала посещений и вывода на экран его содержимого организован цикл for.
Листинг 8.213. Пример использования объекта History
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Код выполняет цикл по всем элементам журнала посещений и
// выводит на экран перечень посещенных Web-сайтов,
for (i=0; Khistory.length; i++){
document.writeln(window.history.previous);
//— End Hide>
</script>
</body>
</html>
JavaScript 1.0+, ECMAScript 1.0+, JScript 1.0+
Nav2+, IE3+, Opera3+
History.back()
hi s tory.back()
Метод back() объекта History используется для загрузки URL-адреса предыдущего Web-
сайта.
Влистинге 8.214 приведен пример использования метода back() с помощью JavaScript-
кнопки для имитации функции кнопки Back (Назад) браузера.
Часть III. Справочник по JevaScript
Листинг 8.214. Пример использования метода back()
<html>
<body>
<form name="forml">
Для перехода к предыдущей странице щелкните на этой кнопке.
<input type="button" value="Hasafl" onClick='window.history.back()'>
</form>
</body>
</html>
JavaScript 1.1+, ECMAScript 1.0+, JScript 3.0+
Nav3+, IE4+
history.current
Свойство current объекта History представляет собой строку, которая содержит полный
URL-адрес текущего элемента журнала посещений.
ПРИМЕЧАНИЕ
В Navigator 4 и последующих версиях получение энечения свойства
current требует уровня привилегий UniversalBrowserRead.
В листинге 8.215 приведен пример использования свойства current. Приведенный пример
требует, чтобы был установлен уровень привилегий UniversalBrowserRead. После установки
требуемого уровня привилегий обработчик событий onClick выводит в окне предупреж-
предупреждения значение свойства current объекта History.
Листинг 8.215. Пример использования свойства current
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Запросить уровень привилегий UniversalBrowserRead.
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead") ;
</script>
<form name="forml">
<input type="button" уа1ие="Определить значение свойства current"
onClick='alert(window.history.current)'>
</form>
</body>
</html>
HiStory.forward() JavaScript 1.0+. ECMAScn^i.Oj-.^Scnp^Ш
history.forward()
Метод forward() объекта History используется для загрузки URL-адреса следующего Web-
сайта из журнала посещений.
В листинге 8.216 приведен пример использования метода forward() с помощью
JavaScript-кнопки для имитации функции кнопки Forward (Вперед) браузера.
Листинг 8.214. Пример использования метода forwardO
<html>
<body>
<form name="forml">
Для перехода на следующую страницу щелкните на этой кнопке.
<input type="button" value="Вперед"
onClick='window.history.forwardO'>
</form>
</body>
</html>
Глава 8. Клиентская сторона
Hictnrv ппП JavaScript 1.0+, ECMAScript 1.0+, JScript 1.0+
nisiory.gou Nav2+ |E3+ Opera3+
history.go(число)
\ Метод go() объекта History загружает URL-адрес из журнала посещений.
В листинге 8.217 приведен пример использования метода go() для перехода на другой
Web-сайт из журнала посещений.
Листинг 8.217. Пример использования метода до()
<html>
<body>
<form name="forml">
Для перехода назад на две страницы щелкните на эфой кнопке.
<input type="button" уа1ие="Перейти" onClick='window.history.go(-2)'>
</form>
</body>
</html>
Hictnrv lennth JavaScript 1.0+, ECMAScript 1.0+, JScript 1.0+
nibiuiy.ienym Nav2+ ||£3+ Opera3+
history.length
Ь Свойство length объекта History используется для определения количества URL-адресов
в журнале посещений.
В листинге 8.218 приведен пример использования свойства length для определения ко-
количества URL-адресов в журнале посещений.
Листинг 8.218. Пример использования свойства length
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Вывести на экран количество элементов в журнале посещений.
var numOfURL = window.history.length;
document.write("Количество ссылок URL в журнале посещений: "
+ numOfURL);
II —>
</script>
</body>
</html>
Hictnrv novt JavaScript 1.1+, ECMAScript 1.0+, JScript 3.0+
nibioiy.nexi Nav3+, IE4+
history.next
^Свойство next объекта History используется для получения следующего URL-адреса в
журнале посещений.
В Navigator 4 и последующих версиях получение значения свойства
next требуат уровня приаилегий UniuersalBrowserRead.
В листинге 8.219 приведен пример использования свойства next для получения следую-
следующего URL-адреса из журнала посещений. Если значение переменной nextURL не выво-
выводится на экран, это означает, что достигнут конец журнала.
Листинг 8.219. Пример использования свойства next
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Затребовать уровень привилегий UniversalBrowserRead.
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
D О О Часть III. Справочник по JavaScript
// Получить следующий URL
var nextURL = window.history.next;
document.write("Следующая ссылка URL в журнале посещений: "
+ nextURL);
// -->
</script>
</body>
</html>
History.previous JavaScript 1.1+, ECMAScript 1.0+, JScript 3.0+
history.previous
# Свойство previous объекта History используется для определения предыдущего URL-ад-
URL-адреса в журнале посещений.
ПРИМЕЧАНИЕ
В Navigator 4 и последующих версиях получение значения свойства
previous требуат уровня привилагий UniuersalBrowserRead.
В листинге 8.220 приведен пример использования свойства previous для получения пре-
дыдушего URL-адреса в журнале посещений.
Листинг 8.220. Пример использования свойства previous
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Запросить уровень привилегий UniversalBrowserRead.
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
II —>
</script>
<form name="forml">
<input type="button" уа1ие="Определить предыдущий URL-адрес"
onClick='alert(window.history.previous)'>
</form>
</body>
</html>
History.unwatch()
history.unwatch(prop)
Метод unwatch() объекта History используется для прекращения отслеживания свойства, как
это было установлено с помощью метода watch(). В качестве аргумента он принимает один
параметр, prop, определяющий свойство, отслеживание которого прекращается.
В листинге 8.221 приведен пример использования метода unwatch() для прекращения
отслеживания свойства объекта History.
Листинг 8.221. Использование методв unwatch() объекта History
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln(id + " иэиенилось с " + "<b>" + oldValue
+ "</b>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
function setWatch(){
myRes = window.history.previous;
watch("myRes",alertme);
myRes = "something";
unwatch("myRes");
Глава 8. Клиентская сторона U О /
myRes = "otherthing";
}
II—>
</script>
<body>
<£orm name="forml">
<input type="button"
уа1ие="определи!гь . ссылку URL предыдущей страницы"
onClick='setWatch()•>
</form>
</body>
</html>
JavaScript 1.2+
N4 NK3
history.watch{prop, обработчик)
Метод watch() объекта History используется для установки отслеживания изменений
свойств объекта History- При изменении значения свойства prop вызывается обработчик,
указанный в параметре обработчик.
В листинге 8.222 приведен пример использования метода watch() для установки отсле-
живания свойства объекта History.
Листинг 8.222. Использование метода watch() объекта History
<html>
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</Ь>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
}
function setWatch()(
myRes = window.history.previous;
watch("myRes",alertme);
myRes = "something";
myRes = "otherthing";
}
II—>
</script>
<body>
<form name="forml">
<input type="button" value="Определить URL-адрес предыдущей
страницы" onClick='setWatch()•>
</form></body>
</html>
JavaScript 1.1+, JScript 1.0+
Nav3+, IE3+, Opera3+
Основной объекф клиентской части языка JavaScript.
Объект Image служит для представления изображения, которое было создано с помощью
дескриптора <img>. Изображения можно загружать и кэшировать динамически, исполь-
используя конструктор Image(), однако конструктор не позволяет выводить изображения на
экран. В качестве аргументов конструктор использует два необязательных параметра — width
и height. Аргумент width устанавливает ширину изображения (в пикселах), a height — вы-
высоту изображения (в пикселах). Если значения аргументов больше соответствующих раз-
размеров изображения, изображение будет растянуто до указанных размеров. Наверное, не-
несложно было заметить, что конструктор не имеет аргумента, который бы определял имя
загружаемого изображения. Загружаемое изображение указывается при помощи точечной
нотации, с использованием свойства src после вызова конструктора. Свойства, методы
и события объекта Image перечислены в табл. 8.18.
538
Часть III. Справочник по JavaScript
Таблица 8.18. Свойства, методы и события объекта Image
Тип Элемент
Свойство border
complete
height
hspace
lows re
name
sre
vspace
width
Метод handleEvent()
unwatch()
watch()
Событие onAbort
on Error
onKeyDown
onKeyPress
onKeyUp
onLoad
Описание
Ширина рамки вокруг изображения.
Определяет, завершена ли загрузка изображения.
Высота изображения.
Ширина поля слева и справа изображения.
Альтернативное изображение для экранов с низким разрешением.
Имя изображения.
Ссылка URL для изображения.
Ширина поля сверху и снизу изображения.
Ширина изображения.
Вызывает обработчик событий изображения.
Прекращает отслеживание свойства объекта Image.
Устанавливает отслеживание свойства объекта Image.
Обработчик событий, который вызывается при отмене загрузки
изображения.
Обработчик событий, который вызывается при возникновении
ошибки при загрузке изображения.
Обработчик событий KeyDown изображения.
Обработчик событий KeyPress изображения.
Обработчик событий KeyUp изображения.
Обработчик событий, который вызывается после завершения
загрузки изображений.
| В листинге 8.223 приведен пример использования дескриптора <img> и конструктора
' Image() для смены изображений в документе.
Листинг 8.223. Пример объекта image.
<html>
<script type="text/javascript" language="JavaScript">
<! —
//Флаг смены изображений.
alternated;
//Создать объекф Image и инициализировать изображение.
circle = new Imaged;
circle.sre = "circle.gif";
square = new Image();
square.sre = "square.gif";
function changelmage()
{
if(alternate==O)
document.magic.src=circle.sre;
alternate=l;
}
else
{
document.magic.src=square.sre;
alternated;
Глава 8. Клиентская сторона
II—>
</script>
<center>
<Ь2>Фокус</Ь2>
<form>
<input type="button"
value=aMeHHTb рисунок"
onClick="changeImage()">
</form>
<img name="magic" src="square.gif">
</center>
</html>
Imaae border JavaScript 1.1+, JScript 1.0+
image.ooroer Nav3+ |£3+ Opera3+
image.border
[ Свойство border объекта Image задает ширину рамки в пикселах вокруг изображения. Это
свойство можно установить только через атрибут border дескриптора <img>.
В листинге 8.224 приведен пример использования свойства border.
Листинг 8.224. Пример использования свойства border.
<html>
<img name="circle"
src="circle.gif"
border=10>
<br>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран ширину ранки.
document.write("Ширина рамки вокруг рисунка ") ;
document.write(document.circle.border," пиксел.");
//-->
</script>
</html>
Image.complete
image.complete
tfajk Свойство complete объекта Image представляет собой булево значение, которое указыва-
■ ет, завершена ли загрузка изображения. После полной загрузки изображения, значение
свойства становится равным false. Если загрузка была прервана или при загрузке про-
произошла ошибка, свойство complete будет содержать значение true.
j В листинге 8.225 на экран выводится сообщение, основанное на значении свойство
complete.
Листинг 8.225. Пример использования свойства complete
<html>
<img name="circle" src="circle.gif">
<br>
<script type="text/javascript" language^"JavaScript">
// Вывести на экран сообщение о процессе эагруэки изображения,
if(document.circle.complete == true)
document.write("Загрузка рисунка завершена.");
else
document.write("Загрузка рисунка не завершена.");
II —>
</script>
</html>
540 Часть III. Справочник по JavaScript
Image.handleEventO JavaScriptNS
imsge.handleEvent(событие)
Метод handleEvent() позволяет вызывать обработчик событий изображения, даже если
соответствующее событие не произошло. Аргумент событие может быть любым событи-
событием объекта Image.
B листинге 8.226 приведен пример вызова обработчика событий KEYDOWN.
Листинг 8.22В. Метод handleEventO
<img name="circle" src="circle.gif"
onKeyDOwn="alert('Нажата клавиша на клавиатуре')">
<script type="text/javascript" language="JavaScript">
<! --
document.circle.handleEvent(Event.KEYDOWN);
</script>
image.height
^k Свойство height объекта Image определяет высоту изображения, заданную в пикселах.
*F Значение этого свойства можно установить только с помощью атрибута height дескрип-
дескриптора <img>.
1/:ф Код из листинга 8.227 выводит на экран значение свойства height.
Листинг 8.227. Пример использования свойства height
<html>
<img name="circle" src="circle.gif" height=00">
<br>
<script type="text/javascript" language»"JavaScript">
<! —
// Вывести на экран высоту изображения.
document.write("Высота рисунка ");
document.write(document.circle.height, " пиксел.");
II —>
</script>
</html>
Imanp Ичпягр JavaScript 1.1+, JScript 1.0+
image.nspace Na^3+ |E3+ 0^era3+
image.hspace
t Свойство hspace объекта Image определяет ширину поля в пикселах слева и справа изоб-
изображения. Значение этого свойства можно установить только с помощью атрибута hspace
дескриптора <img>.
i'X5 ^ листинге 8.228 приведен пример использования свойства hspace. При загрузке кода
;>*"" примера, на экран будет выведено значение свойства hspace объекта Image.
Листинг 8.228. Пример использования свойства hspace
<html>
Текст слева от рисунка.
<img name="circle" src="circle.gif" HSPACE=100>
Текст справа от рисунка.<br>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран значение свойства hspace.
document.write("Значение свойства hspace для рисунка ");
document.write(document.circle.hspace);
//-->
</script>
</html>
Глава 8. Клиентская сторона
image.lowsrc
Свойство lowsrc объекта Image содержит ссылку URL альтернативного изображения, ко-
которое будет выводиться на экранах с низким разрешением. Значение этого свойства мож-
можно установить только через атрибут lowsrc дескриптора <img>.
В листинге 8.229 на экран выводится изображение с низким разрешением. При загрузке
кода примера в окно браузера на экран будет выведено значение свойства lowsrc.
Листинг 8.229. Пример использования свойства lowsrc
<html>
<img name="circle" src="circle.gif" LOWsrc="circle_low.gif">
<br>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран изображение с низким разрешением
document.write("URL рисунка с низким разрешением ") ;
document.write("<i><b>",document.circle.lowsrc,"</b></i>");
II —>
</script>
</html>
1тяпр пятр JavaScript 1.1+, JScript 1.0+
image.name Na«;3+ |E3+ 0^era3+
image.name
f Свойство name объекта Image содержит имя изображения. Значение этого свойства можно
установить только с помощью атрибута name дескриптора <img>.
В листинге 8.230 на экран выводится имя изображения. При загрузке кода примера в окно
браузера на экран будет выведено значение свойства name.
Листинг 8.230. Пример использования свойства name
<html>
<img name="circle" src="circle.gif">
<br>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран значение свойства name.
document.write("Имя рисунка <i>");
document.write(document.circle.name,"</i>");
II—>
</script>
</html>
Image.OnAbort JavaScript 1.1+. Kcrfpt 1.0+
onAbort="команда"
Событие onAbort задает обработчик, который будет использоваться при отмене загруз-
загрузки изображения.
В листинге 8.231 при отмене загрузки изображения на экран выводится окно предупреж-
предупреждения.
Листинг 8.231. Пример события onAbort
<img name="circle" src="circle.gif"
onAbort="alert('Загрузка этого рисунка не завершена!')">
linage.ОПЕГГОГ JavaScript 1.1+, JScript 3.0+
onError="команда"
^Обработчик событий onError вызывается при возникновении ошибки во время загруз-
загрузки изображения.
542 Часть III. Справочник по JavaScript
В листинге 8.232 при возникновении ошибки при загрузке изображения на экран вы-
выводится окно предупреждения.
Листинг 8.232. Пример события опЕггог
<img name="circle" src="circle.gif"
onError="alert{'Во время загрузки произошла ошибка'.'У1 ■>
Image.OnKeyDown JavaScript 1.2+. JScript 3.0+
onKeyDown="команда"
^ Обработчик событий onKeyDown вызывается во время нажатия клавиши на клавиатуре
при выбранном изображении.
В листинге 8.233 указывается обработчик событий onKeyDown изображения.
Листинг 8.233. Пример использования события onKeyDown
<input type="image" name="circle"src="circle.gif"
onKeyDown="alert('Произошло событие ONKEYDOWN!')">
Image.OnKeyPreSS JavaScript 1.2+. JSajrt 3.0+
onKeyPress="команда"
Событие onKeyPress возникает в случае удержания клавиши на клавиатуре при выбран-
выбранном изображении.
листинге 8.234 указывается обработчик событий onKeyPress для изображения.
Листинг 8.234. Пример обработчика событий onKeyPress
<input type="image" name="circle" src="circle.gif"
onKeyPress="alert('Произошло событие ONKEYPRESS!')">
Image.OnKeyUp JavaScript 1.2+. JScript 3.0+
onKeyUp= " команда "
Событие onKeyUp возникает при отпускании нажатой клавиши на клавиатуре для выб-
выбранного изображения.
В листинге 8.235 указывается обработчик событий onKeyUp для изображения.
Листинг 8.235. Пример события onKeyUp
<input type="image" name="circle"src="circle.gif"
onKeyOp="alert('Произошло событие ONKEYUP!')">
Image.OnLoad JavaScript 1.1+. ^Script Ш
onLoad="команда"
Обработчик событий onload определяет, что будет происходить после завершения заг-
загрузки изображения.
В листинге 8.236 после завершения загрузки изображения на экран выводится соответ-
ствующее сообщение.
Листинг 8.236. Пример обработчика событий onLoad
<img name="circle" src="circle.gif"
onLoad="alert('Загрузка рисунка завершена!')">
err JavaScript 1.1+, JScript 1.0+
.src Na«v3+ |E3+ Opera3+
image.sre
tfp& Свойство sre объекта Image содержит ссылку URL изображения. Значение этого свойства
"" можно установить только с помощью атрибута sre дескриптора <img>.
Глава 8. Кпиентская сторона О 4-О
В листинге 8.237 на экран выводится ссылка URL изображения.
Листинг 8.237. Пример использования свойства src
<html>
<img name="circle" src="circle.gif"><br>
<script type="text/javascript" language="JavaScript">
<!--
// Отображение на экране ссылки URL изображения.
document.write("URL рисунка ");
document.write("<i><b>",document.circle.src,"</b></i>");
//-->
</script>
</html>
lmage.unwatch() S
image.unwatch(prop)
Метод unwateh() объекта Image используется для прекращения отслеживания свойства,
установленного с помощью метода watch(). В качестве аргумента он использует один па-
параметр, prop, который определяет ранее отслеживаемое свойство.
В листинге 8.238 приведен пример использования метода unwatch() для прекращения
отслеживания свойства mylmg.
Листинг 8.238. Использование метода unwatch() объекта image
<html>
<img src="myhome.jpg" name="myhome">
<br><br>
<script type="text/javascript" language="JavaScript">
<! —
// Эта функция вызывается при изменении значения mylmg.
// Она сообщает пользователю об изменении.
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</b>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
}
mylmg = document.myhome.name;
watch("mylmg",alertme);
my Img = " Yourhome " ;
unwatch("mylmg");
mylmg = "theirhome";
II—>
</script>
</html>
I mane учпягр JavaScript 1.1+, JScript 1.0+
image.vspace N£j;3+ |E3+ 0^era3+
image.vspace
f Свойство vspace объекта Image определяет ширину поля в пикселах над и под изобра-
изображением. Значение этого свойства можно установить только через атрибут vspace дескрип-
дескриптора <img>.
В листинге 8.239 приведен пример использования свойства hspace. При загрузке кода
примера на экран выводитчся значение свойства hspace объекта Image.
Листинг 8.239. Пример использования свойства vspace
<html>
Текст над рисунком.<br>
<img name="circle" src="circle.gif" VSPACE=100Xbr>
Текст под рисунком.<br>
<script type="text/javascript" languages"JavaScript">
Часть III. Справочник no JavaScript
// Вывести на экран значение свойства vspace.
document.write("Значение свойства vspace рисунка ");
document.write(document.circle.vspace);
//-->
</script>
</html>
image.watcHJ ?
image.watch (prop, обработчик)
Метод watch() объекта Image используется для установки отслеживания изменений
свойств объекта Image. При изменении значения свойства prop вызывается обработчик,
указанный с помощью параметра обработчик.
В листинге 8.240 приведен пример использования метода watch() для установки отсле-
отслеживания свойства name объекта Image.
Листинг 8.240. Использование метода watch() объекта image
<html>
<img src="myhome.jpg" name="myhome">
<br><br>
<script type="text/javascript" language^"JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</b>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
}
mylmg = document.myhome.name;
watch("myImg",alertme);
mylmg = "Yourhome";
mylmg = "theirhome";
II —>
</script>
</html>
width ~ JavaScript 1.1+. JScript 1.0+
.wiaxn Nav3+ |B+ Opera3t
image.width
^ Свойство width объекта linage определяет ширину изображения в пикселах. Значение этого
свойства можно установить только с помощью атрибута width дескриптора <img>.
jB листинге 8.241 на экран выводится значение свойства width.
Листинг 8.241. Пример использования свойства width
<html>
<img name="circle"
sic="circle.gif"
width=150>
<br>
<script type="text/javascript" language="JavaScript">
<!--
// Вывести на экран ширину изображения,
document.write("Ширина рисунка равна ");
document.write(document.circle.width, " пиксел.");
//-->
</script>
</html>
Глава В. Клиентская сторона
545
Layer
JavaScript 1.2+
Nav4+
Основной объекта клиентской части языка JavaScript.
\ Объект Layer служит для представления объекта, который содержит один документ. До-
Документ может содержать несколько слоев и, следовательно, несколько документов. Слои
используются для отображения в окне браузера перекрывающихся графических изобра-
изображений. Свойства и методы объекта Layer перечислены в табл. 8.19.
Таблица 8.19. Свойства и методы объект Layer
Тип Элемент
Свойство above
background
below
bgColor
clip.bottom
clip.height
clip.left
clip.right
clip.top
clip.width
document
left
name
onBlur
onFocus
onLoad
onMouseOut
onMouseOver
pageX
pageY
parentLayer
siblingAbove
siblingBelow
src
top
visibility
zlndex
Описание
Слой, расположенный над данным слоем
Фоновый рисунок слоя
Слой, расположенный под данным слоем
Цвет фона слоя
Соответствует нижней части области отсечения
Соответствует высоте области отсечения
Соответствует левой части области отсечения
Соответствует правой части области отсечения
соответствует верхней части области отсечения
Соответствует ширине области отсечения
Объект Document, в котором содержится данный слой
Координата х слоя
Содержит имя слоя
Обработчик событий, который вызывается при потере слоем фокуса
Обработчик событий, который вызывается при получении слоем
фокуса
Обработчик событий, который вызывается по завершении загрузки
документа в слой
Обработчик событий, который вызывается при перемещении
указателя мыши за границу области слоя
Обработчик событий, который вызывается при перемещении
указателя мыши в области слоя
Координата х относительно документа
Координата у относительно документа
Слой, в котором содержится данный слой
Слой, находящийся над данным в z-порядке (zlndex)
Слой, находящийся под данным в z-порядке (zlndex)
URL-адрес слоя
Координата у слоя
Устанавливает состояние видимости слоя
Относительный z-порядок данного слоя по отношению к слоям
этого же уровня
Ь46
Тип
Метод
Элемент
captureEvents()
handleEvent()
load()
moveAbove()
moveBelowO
moveByO
moveTo()
moveToAbsolute()
releaseEvents()
resIzeBy()
resizeTo()
routeEvent()
unwatch()
watch ()
Часть III. Справочник по JavaScript
Описание
Устанавливает тип перехватываемого события
Вызывает обработчик указанного события
Загружает новый URL-адрес
Помещает слой над другим слоем
Помещает слой под другим слоем
Помещает слой на указанную позицию
Перемещает верхний левый угол окна в указанное положение
Перемещает слой в указанное положение на странице
Снимает перехват слоем событий указанного типа
Изменяет размеры слоя, используя указанные значения
Устанавливает указанные размеры слоя
Передает перехваченное событие на обработку стандартному
обработчику
Прекращает отслеживание свойства объекта Layer
Устанавливает отслеживание свойства объекта Layer
В листинге 8.242 создается слой. При перемещении указателя мыши над объектом Layer
на экране появляется окно предупреждения, сообщающее пользователю о том, что ука-
указатель мыши был перемещен над слоем.
Листинг 8.242. Пример объекта Layer.
<html>
<body>
<layer id="layerl" width=50" height=00" bgcolor="yellow" top=70"
left=00" visibility="show" onMouseOut=Ialert("Это слой 1")'>
<сепЪег>Слой K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show" onMouseOut='alert("Это слой 2">'>
<сепЪег>Слой 2</center>
</layer>
</body>
</html>
Layer.abOVe JavaScript^
layer.above
^Свойство above объекта Layer указывает на слой, который в z-индексации находится
непосредственно над данным слоем. Если такой слой отсутствует, свойству above присва-
присваивается значение null.
В листинге 8.243 приведен пример использования свойства above. В примере создаются два
слоя. После щелчка на кнопке Get Above (Определить слой, расположенный над данным
слоем) на экране появляется окно предупреждения, в котором выводится значение ат-
атрибута above.
Листинг 8.243. Пример использования свойства above
<html>
<body>
Глава В. Клиентская сторона
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<сепЬег>Слой K/center>
</layer>
<layer ID="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<сепЪег>Слой 2</center>
</layer>
<form name="forml">
<input type="button" value="Определишь слой, расположенный над
данным слоем" onClick='alert(document.layers.above)'>
</form>
</body>
</html>
Layer.background JavaScriPi5a1v4+
layer, background
Свойство background объекта Layer определяет значение атрибута background дескриптора
<1ауег>. Фоновый рисунок слоя можно изменить с помощью свойства background.src.
В листинге 8.244 приведен пример изменения фонового рисунка слоя. В примере созда-
создаются два слоя. После щелчка на кнопке Change Background (Изменить фоновый рисунок)
вызывается функция change(). Эта функция устанавливает значение свойства background
слоя layerl равным water.gif.
Листинг 8.244. Пример использования свойства background
<html>
<body>
<script type="text/javascript" languages"JavaScript">
function change(){
document.layerl.background.src = "water.gif";
}
II —>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>CnoS K/center>
</layer>
<layer id="iayer2" width=50" height=60" bgcolor="green"
top=00"
left=0" visibility="show">
<center>Cлoй 2</center>
</layer>
<form name="forml">
<input type="button" value="IlsMeHHTb фоновый рисунок"
onClick='change (> ' >
</form>
</body>
</html>
Layer.below JavaScript 1.2+
* Nav4+
layer.below
^Свойство below объекта Layer указывает на слой, который в z-индексации находится
' непосредственно под данным слоем. Если такой слой отсутствует, свойству below назна-
назначается значение null.
548 Часть III. Справочник по JavaScript
В листинге 8.245 приведен пример использования свойства below. С помощью дескрип-
дескриптора <1ауег> создаются два слоя. После щелчка на кнопке Get Below (Определить слой,
расположенный под данным слоем) на экране отображается окно предупреждения, в
котором выводится значение атрибута below.
Листинг 8.245. Пример использования свойства below
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Oioii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<оепЬег>Слой 2</oenter>
</layer>
<form name="£orml">
<input type="button" value="Определить слой, расположенный под
данным слоем" onClick='alert(document.layers.below)'>
</form>
</body>
</html>
Layer.bgColor JavaScriP*a1vj;
layer.bgColor
h Свойство bgColor объекта Layer содержит значение атрибута bgcolor дескриптора <1ауег>.
Цвет фона объекта Layer можно изменить с помощью свойства bgCoIor.src. Эту опера-
операцию можно выполнить лишь в случае, если свойство background не установлено.
В листинге 8.246 приведен пример использования свойства bgColor для изменения цвета
фона объекта Layer.
Листинг 8.246. Пример использования свойства bgColor
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция изменяет цвет фона слоя layer1.
function changel(> {
document.layer1.bgColor = "#FF00FA";
}
// функция изменяет цвет фона слоя layer2.
function change2(){
document.layer2.bgColor="orange";
}
II—>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Oiou K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green"
top=00"
left=0" visibility="show">
<centerX:noii 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="Изменить фон Слоя 1"
onClick=•changel(>'>
<br><br>
Глава В. Клиентская сторона
<input type="button" Уа1ие="Иэменить фон Слоя 2" onClick='change2()'>
</form>
</body>
</html>
Layer.captureEvents()
layer.captureEvents(событие.тип)
\ Метод captureEvents() объекта Layer используется для обработки событий определенного
типа.
В листинге 8.247 приведен пример использования метода captureEvents(). Метод
captureEventsO используется для перехвата события RESIZE слоя 1ауег2. При возникно-
возникновении такого события вызывается функция resize2(), которая выводит на экран соответ-
соответствующее сообщение.
Листинг 8.247. Пример использования метода captureEventsO
<html>
<body>
<script type="text/javascript" languages"JavaScript">
document.Iayer2.captureEvents(Event.RESIZE);
// Функция изменяет размеры слоя layer2 и при возникновении
// события RESIZE предупреждает пользователя об
/ / изменении размеров слоя.
function resize2(){
document.Iayer2.resizeToC00,100);
onResize=alert("Размер слоя 2 изменен.");
II —>
</script>
<layer id="layerl11 width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cno»i K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor=green" top=00"
left=0" visibility="show">
<center>Oioii 2</center>
</layer>
<form>
Для изменения размеров слоя 2 щелкните на зтой кнопке
<Ьг>
<input type="button" уа1ие="Иэменитъ размеры слоя 2"
onClick='resize2()'>
</form>
</body>
</html>
Layer.clip.bottom
layer.clip.bottom
Свойство clip.bottom объекта Layer ссылается на нижнюю часть области отсечения.
В листинге 8.248 приведен пример использования свойства clip.bottom. С помощью дес-
дескриптора <1ауег> создаются два слоя. При щелчке на кнопке вызывается функция clipl,
которая отсекает нижнюю часть слоя layerl до 100 пикселов.
Листинг 8.248. Пример использования свойства clip.bottom
<html>
<body>
<script type="text/javascript" languages"JavaScript">
550 Часть III. Справочник по JavaScript
// Функция отсекает нижнюю часть слоя layerl до 100 пикселов
function clipl(){
document.layerl.clip.bottom = 100;
>
//-->
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Oioii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<centei>Cxoii 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие=тсечь нижнюю часть слоя 1"
onClick=•clipl(>'>
</form>
</body>
</html>
Layer.clip.height JavaScript^
layer.clip.height
$С& Свойство clip.height объекта Layer соответствует высоте области отсечения слоя.
В листинге 8.249 приведен пример использования свойства clip.height. С помощью деск-
дескриптора <1ауег> создаются два слоя. При щелчке на кнопке вызывается функция clipl()
которая отсекает высоту слоя layerl до 75 пикселов.
Листинг 8.249. Пример использования свойства clip.height
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// функция отсекает высоту слоя layerl до 75 пикселов.
function clipl(){
document.layerl.clip.height = 75;
>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cлoй K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green"
top=00"
left=0" visibility="show">
<center>Oioii 2</center>
</layer>
<form name="forml">
<input type="button" value=Tce4b высоту слоя 1" onClick='clipl()'>
</form>
</body>
</html>
Layer.Clip.left JavaScript^
layer.clip.left
|j Свойство dip.left объекта Layer соответствует левой части области отсечения.
Глава В. Клиентская сторона U U I
В листинге 8.250 приведен пример использования свойства dip.left. С помощью дескрип-
дескриптора <1ауег> создаются два слоя. При щелчке на кнопке вызывается функция clipl(),
которая отсекает левую часть слоя layerl до 90 пикселов.
Листинг 8.250. Пример использования свойства dip.left
<html>
<body>
<script type="text/javascript" language^"JavaScript">
// Функция отсекает левую часть слоя layerl до 90 пикселов,
function clipl(){
document.layerl.clip.left = 90;
}
II—>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cлoй K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<ceпter>Cлoй 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие=тсечь левую часть Слоя 1"
onClick='clipl(> •>
</form>
</body>
</html>
Layer.clip.right
layer.clip.right
Свойство dip.right объекта Layer соответствует правой части области отсечения.
В листинге 8.251 приведен пример использования свойства clipjight для отсечения правой
части слоя. С помощью дескриптора <1ауег> создаются два слоя. При щелчке на кнопке вы-
вызывается функция clipl(), которая отсекает правую часть слоя layerl до 110 пикселов.
Листинг 8.251. Пример использования свойства dip.right
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция отсекает правую часть слоя layerl до 110 пикселов
function clipl(){
document.layerl.clip.right = 110;
}
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<сеп!ег>Слой K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Oioii 2</center>
</layer>
<form name="forml">
<input type="button" value=Tce4b правую часть Слоя 1" onClick=' clipl (> ' >
</form>
</body> </html>
и и tz. Часть III. Справочник по JavaScript
JavaScript 1.2+
Nav4+
layer.clip.top
Свойство clip.top объекта Layer соответствует верхней части области отсечения.
В листинге 8.252 приведен пример использования свойства clip Лор для отсечения верх-
верхней части слоя. С помощью дескриптора <1ауег> создаются два слоя. При нажатии на
кнопку вызывается функция clipl(), которая отсекает верхнюю часть слоя layerl до №
пикселов.
Листинг 8.252. Пример использования свойства clip.top.
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция отсекает верхнюю часть слоя layerl до 88 пикселов
function clipl(){
document.layerl.clip.top = 88;
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<centerX:noii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<centerX;noii 2</center>
</layer>
<form name="forml">
<input type="button" value="Отсечение верхней части слоя 1"
onClick='clipl(> ' >
</form>
</body>
</html>
"Layer.Clip. Width JavaScript^
layer.clip.width
&• Свойство clip.width объекта Layer представляет ширину области отсечения.
В листинге 8.253 приведен пример использования свойства clip.width для уменьшения
ширины слоя. С помощью дескриптора <1ауег> создаются два слоя. При щелчке на кнопке
вызывается функция clipl (), которая уменьшает ширину слоя layerl до 60 пикселов.
Листинг 8.253. Пример использования свойства clip.width
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция изменяет ширину слоя layerl.
function clipl(){
document.layerl.clip.width = 60;
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnoii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
Глава В. Клиентская сторона О Do
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="Отсечение слоя 1 по ширине"
onClick='clipl(>■>
</form>
</body>
</html>
Layer.document Javascript^
layer.document
|fe Свойство document объекта Layer содержит объект Document, который содержится в дан-
• ном слое.
B листинге 8.254 приведен пример использования свойства document. При щелчке на
кнопке вызывается функция getlnfo(), которая выводи на экран имя документа в слое
layerl.
Листинг 8.254. Пример использования свойства document
<html>
<body>
<script type="text/javascript" languages"JavaScript">
<!--
// Функция выводит на экран окно предупреждения, в котором указано
// имя документа в слое layerl.
function getlnfo(){
alert("Имя документа в слое 1: " + document.layerl.document.name);
}
II —>
</script>
•Clayer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>CnoE K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" value="Получить имя документа в слое 1"
onClick='getInfo(> ■>
</form>
</body>
</html>
Layer.handleEvent() JavaScripJav4l
layer.handleEvent(событие)
f Метод handleEvent объекта Layer определяет, какого типа событие произошло, после чего
передает событие в соответствующий обработчик.
jB листинге 8.255 приведен пример использования метода handleEvent. Документ перехва-
тывает события FOCUS. После генерирования такое событие передается в функцию
handle(), которая, в свою очередь, передает его стандартному обработчику объекта 1ауег2.
Стандартный обработчик для всех событий FOCUS вызывает функцию disp!ayMsg().
Листинг 8.255. Пример использования метода handleEventO
<html>
<body>
<script type="text/javascript" language="JavaScript">
Часть III. Справочник по JavaScript
// Установка перехвата окном событий FOCUS
document.captureEvents(Event.FOCUS);
// Функция обработки события. Параметр evnt ссылается на
// объект Event,
function handle(evnt){
window.document.Iayer2.handleEvent(evnt);
}
function displayMsgO {
alert("Произошло событие Focus.");
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий FOCUS,
document.onFocus = handle;
II —>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnoii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=100
left=0" visibility="show" onFocus='displayMsg()'>
<center>Oiou 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="Получевие данных о документе в слое 1"
onClick='getlnfо()'>
</form>
</body>
</html>
Layer.ieft JavaScript 1.2+
' Nav4+
layer.left
Свойство left объекта Layer содержит координату х положения слоя в документе. Из-
Изменение этого свойства приводит к перемещению слоя влево или вправо.
В листинге 8.256 приведен пример использования свойства left для перемещения слоя
с левой на правую часть экрана. При щелчке на кнопке вызывается функция moveO,
которая перемещает слой layerl на 60 пикселов вправо.
Листинг 8.256. Пример использования свойства left
<html>
<body>
<script type="text/javascript" language="JavaScript">
< !--
// Функция перемещает слой layerl на 60 пикселов вправо,
function move(){
document.layerl.left = document.layerl.left + 60 ;
}
//-->
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnoii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<сепЬег>Слой 2</center>
</layer>
Глава 8. Клиентская сторона 555
<form name="forml">
<input type="button" value="Переместить слой 1" onClick='move()'>
</form>
</body>
</html>
Layer.loadO
layer, load (src, width)
Метод load() объекта Layer используется для загрузки на слой нового документа. Как
видно из синтаксиса использования метода, метод Ioad() в качестве аргументов прини-
принимает URL источника слоя и ширину.
В листинге 8.257 приведен пример использования метода load(). При щелчке на кнопке
обработчик событий onCIick загружает файл tmp.html.
Листинг 8.257. Пример использования мвтода load()
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Oioft K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoft 2</center>
</layer>
<form name="forml">
<input type="button" value=arpysKTb слой 2"
onClick='document.Iayer2.load("tmp.html", 400) '>
</form>
</body>
</html>
Layer, move Above () JavaScriPNa1V4+
layer.moveAbove(имя_слоя)
к Метод raoveAbove() объекта Layer используется для помещения текущего слоя над ука-
■ занным слоем. Параметр имя_слоя определяет объект Layer, который перемешается вниз.
В листинге 8.258 приведен пример использования метода raoveAbove(). После щелчка на
кнопке обработчик событий onCIick обрабатывает событие CLICK и помещает Layerl над
слоем Layer2.
Листинг 8.258. Пример использования метода moveAboveO
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=50" visibility="show">
<center>Oioti K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" value="Понесхить слой 1 над слоем 2"
onClick='document.layerl.moveAbove(document.Iayer2)'>
</form>
</body>
</html>
Часть III. Справочник по JavaScript
Layer.moveBelow() " " JavaScripila1v£
layer.moveBelow {имя_слоя)
Метод raoveBeIow() объекта Layer используется для помещения текущего слоя под ука-
указанным слоем. Параметр имя_слоя определяет объект Layer, который перемещается вверх.
В листинге 8.259 приведен пример использования метода raoveBetow() для помещения
слоя Layer2 под слоем Layerl.
Листинг 8.259. Пример использования метода moveBelowO
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=50" visibility="show">
<сепЬег>Слой l</center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<сепЬег>Слой 2</center>
</layer>
<form name="forml">
<input type="button" value="IloMec'rH'rb слой 2 ниже слоя 1"
onClick='document.layer2.moveBelow(document.layerl)•>
</form>
</body>
</html>
Layer.moveBy() JavaScrip,*a1vj;
layer .moveBy (x,y)
fe Метод moveBy() объекта Layer перемещает слой вправо и вниз. Метод в качестве аргу-
аргументов использует два параметра, х и у. Параметр х соответствует количеству пикселов,
на которое слой перемещается вправо. Параметр у соответствует количеству пикселов, на
которое слой перемещается вниз.
В листинге 8.260 приведен пример использования метода raoveBy(). После щелчка на
кнопке обработчик событий onClick использует метод moveByO для перемещения слоя
на 250 пикселов вправо и на 30 пикселов вниз.
Листинг 8.260. Пример использования метода moveByO
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=50" visibility="show">
<center>Cjioii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" value="nepeMec<m!Pb слой 2"
onClick='document.layer2.moveByE0,30) ' >
</form>
</body>
</html>
Layer.moveTo() JavaScripti.2+
layer .move's о (х, у)
Глава 8. Клиентская сторона О 3 /
f Метод raoveTo() объекта Layer перемещает верхний левый угол слоя в указанное поло-
положение на экране. Параметр х соответствует координате верхнего края окна на экране. Па-
Параметр у соответствует координате левого края окна на экране.
В листинге 8.261 приведен пример использования метода moveToQ. С помошью дескрип-
дескриптора <1ауег> создаются два слоя. При щелчке на кнопке обработчик событий onCIick слоя
1ауег2 вызывает метод moveTo, который помещает верхний левый угол слоя в точку с
экранными координатами 100, 200.
Листинг 8.261. Пример использования метода moveToO
<html>
<body>
<layer id="layerl" width=00" height=00" BGCOLOR="yellow" top=70"
left=50" visibility="show">
<center>Cnoii K/center>
</layer>
<layer id="layer2" width=50" height=60" BGCOLOR="green" top=00"
left=0" visibility="show">
<center>Cnou 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="ПереиестиФь Слой 2"
onClick='document.layer2.moveToA00,200)' >
</form>
</body>
</html>
Layer. moveToAbsolute() JavaScriP*a1y2+
layer.moveToAbsolute (x,y)
& Метод raoveToAbsoluteO объекта Layer перемещает верхний левый угол слоя в указан-
' ное положение. Это положение задается относительно документа верхнего уровня. Метод
в качестве аргументов принимает два параметра, хну. Параметр х соответствует коли-
количеству пикселов, на которое слой перемещается вправо. Параметр у соответствует коли-
количеству пикселов, на которое слой перемещается вниз.
В листинге 8.262 приведен пример использования метода raoveToAbsoluteO. При щелчке
на кнопке верхний левый угол второго слоя перемешается в точку с координатами 350х
400у.
Листинг 8.262. Пример использования метода moveToAbsolute()
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=50" visibility="show">
<сепЬег>Слой K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="ПереиесФить слой 2"
onClick='document.layer2.moveToAbsoluteC50,400)'>
</form>
</body>
</html>
Layer.name
layer.name
U □ О Часть III. Справочник по JavaScript
$3>| Свойство name объекта Layer содержит значение атрибута пате или ID дескриптора
>* <1ауег>.
В листинге 8.263 приведен пример использования имени слоя.
Листинг 8.263. Пример использования свойства name
<html>
<body>
<layer id="Tarzan" width=00" height=00" bgcolor="yellow" top=70"
left=50" visibility="show">
<сепЬег>Слой K/center>
</layer>
<layer id="Jane" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="Определить имя слоя 1"
onClick='alert("Имя этого слоя: " + document.layerl.name)f>
<br><br><br>
<input type="button" value="Определить имя слоя 2"
onclick='alert("Имя этого слоя: " + document.layer2.name)'>
</form>
</body>
</html>
Layer.onBlur
onBlur=" команда."
Обработчик событий onBIur объекта Layer вызывается при потере фокуса объектом Layer.
В листинге 8.264 приведен пример использования обработчика событий onBIur. При по-
потере объектом layerl фокуса обработчик событий onBIur вызывает функцию showMsg().
Листинг 8.264. Пример использования обработчика событий onBIur
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
function showMsg(){
document.forml.textl.value = "Слой 1 потерял фокус",-
>
II—>
</script>
<layer id="layerl" width=200 height=200 bgcolor="yellow" top=70"
left=00" visibility="show"onBlur='showMsgO'>
<center>Cnoii K/center>
</layer>
<layer id="layer2" width=150 height=160 bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
Щелкните мышью на слое 1, а затем на слое 2.
<ЫХЬг>
<input type="text" name="textl" size=0">
</form>
</body>
</html>
Layer.onFocus
onFocus="команда"
"лава 8. Клиентская сторона О О У
f Обработчик событий onFocus объекта Layer вызывается при получении объектом Layer
фокуса.
.дВ листинге 8.265 приведен пример использования обработчика событий onFocus для оп-
W ределения момента получения фокуса объектом Layerl.
Листинг 8.265. Пример использования обработчика событий onFocus
<html>
<body>
<script type="text/javascript" language="JavaScript">
function showMsgО{
document.forml.textl.value = "Фокус перемещен на слой 1";
II—>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show"onFocus='showMsgO '>
<center>Cnou K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
Щелкните мышью на слое 2, а затем на слое 1.
<ЬгХЬг>
<input type="text" name="textl" size=0">
</form>
</body>
</html>
Layer.OnLoad JavaScript 1.2+
* Nav4+
onLoad="команда"
$Ж Обработчик событий onLoad объекта Layer вызывается при загрузке содержимого слоя.
В листинге 8.266 приведен пример использования обработчика событий onLoad.
Листинг 8.266. Пример использования обработчика событий onLoad
<html>
<body>
<script type="text/javascript" language="JavaScript">
function showMsgO {
document.forml.textl.value = "Загружается содержимое слоя";
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show"onLoad='showMsgO'>
<center>Cnoti K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
lef t=0"visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml ">
<input type="text" name="textl" size=0">
<br><br>
<input type="button" value=arpy3H"rb слой 1"
onclick»'document.layerl.load("tmp.html",300)'>
</ f ormX /bodyx /html>
UOU Часть III. Справочник по JavaScript
Layer. onMoilSeOllt JavaScript 1.2+
1 Nav4+
onMouseOut="команда"
# Обработчик событий onMouseOut объекта Layer вызывается при перемещении указате-
указателя мыши за пределы слоя.
В листинге 8.267 приведен пример использования обработчика событий onMouseOut. При
перемещении указателя мыши за пределы слоя Layerl обработчик событий вызывает фун-
функцию showMsgl(), которая выводит на экран соответствующее сообщение.
Листинг 8.267. Пример использования обработчика событий onMouseOut
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
function showMsgl(){
document.forml.textl.value =
"Указатель мыши вышел sa пределы слоя 1.";
}
II —>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show"onMouseOut='showMsgl()'>
<center>Cnoti l</center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="text" name="textl" size=0">
<brXbr>
</form>
</body>
</html>
Layer.OnMoilSeOver JavaScript^
onMouseOver="команда"
& Обработчик событий onMouseOver объекта Layer вызывается при перемещении указате-
указателя мыши над областью слоя.
В листинге 8.268 приведен пример использования обработчика событий onMouseOver. При
перемещении указателя мыши за пределы слоя Layer2 обработчик событий вызывает фун-
функцию showMsgl(), которая выводит на экран соответствующее сообщение.
Листинг 8.268. Пример использования обработчика событий onMouseOver
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция выводит на экран сообщение при перемещении указателя
// мыши над областью слоя 2.
function showMsgl(){
document.forml.textl.value =
"Указатель мыши переместился над областью слоя 2. ";
}
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnoii K/center>
</layer>
Глава 8. Клиентская сторона UD I
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show" onMouseOver='showMsgl()'>
<сепЬег>Слой 2</center>
</layer>
<form name="forml">
<input type="text" name="textl" size=0">
<br><br>
</form>
</body>
</html>
Layer.pageX JavaScrip*a1vJ++
layer.pageX
Ц| Свойство pageX объекта Layer содержит координату х слоя относительно документа вер-
■ хне го уровня.
В листинге 8.269 приведен пример использования свойства pageX. После щелчка на кноп-
кнопке вызывается функция size, которая добавляет 20 пикселов к значению атрибута pageX
слоя layerl.
Листинг 8.269. Пример использования свойства радеХ
<html>
<body>
<script type="text/javascript" language="JavaSeript">
// Функция увеличивает значение свойства радеХ слоя 1.
function size (){
document.layerl.pageX = document.layerl.pageX +20;
}
//-->
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnoti K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="Изменить координату X слоя 1"
onClick=size()>
</form>
</body>
</html>
Layer.pageY
layer.pageY
Свойство pageY объекта Layer содержит координату у слоя относительно документа вер-
верхнего уровня.
В листинге 8.270 приведен пример использования свойства pageY. При щелчке на кноп-
кнопке вызывается функция size, которая добавляет 20 пикселов к значению атрибута pageY
слоя layerl.
Листинг 8.270. Пример использования свойства pageY
<html>
<body>
<script type="text/javascript" language="JavaScript">
!
5 О С Часть III. Справочник no JavaScript
// Функция изменяет значение атрибута pageY.
function size (){
document.layer1.pageY = document.layer1.pageY +20;
>
II—>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnoti K/center>
</layer>
<layer id="layer2" width=150 height=160 bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoti 2</center>
</layer>
<form name="forml">
<input type="button" value="Изменишь координату Y слоя 1"
onClick='size()'>
</form>
</body>
</html>
Layer.parentLayer JavaScript^
layer.parentLayer
$£& Свойство parentLayer объекта Layer содержит окно или слой, в котором содержится дан-
«* ный объект Layer.
В листинге 8.271 приведен пример использования свойства parentLayer. Функция
getname() определяет и возвращает имя родительского слоя.
Листинг 8.271. Пример использования свойства parentLayer
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция определяет имя родительского слоя
function getname(){
document.forml.textl.value = document.layer1.parentLayer.name;
>
II—>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnoti K/center>
</layer>
<layer id="layer2" width=150 height=160 bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoti 2</center>
</layer>
<form name="forml">
<input type="button" value="OnpeflenHTb имя родительского объекта
для слоя 1" onClick=' getname () ' >
<br><br>
<input type="text" name="textl" size=0">
</form>
</body>
</html>
Глава 8. Клиентская сторона
Layer. releaseEvents()
layer.releaseEvents(событие)
Метод releaseEvents() объекта Layer указывает, что объект Layer больше не должен пе-
перехватывать события указанного типа.
% В листинге 8.272 приведен пример использования метода re!easeEvents(). При перехвате
события FOCUS оно обрабатывается методом handle(). После этого за счет использова-
использования метода releaseEvents() перехват события прекращается.
Листинг 8.272. Пример использования метода releaseEventsl)
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Установка перехвата окном событий FOCUS.
document.captureEvents(Event.FOCUS);
// Функция обработки события. Параметр evnt ссылается
// на объект Event,
function handle(evnt){
alert("В слое возникло событие FOCUS и был вызван
^-метод releaseEvents");
return true ;
}
function releaseFocus(){
document.Iayer2.releaseEvents(Event.FOCUS);
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий FOCUS,
document.onFocus = handle;
// —>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow"
top=70" left=00" visibility="show">
<center>Gnou K/center>
</layer>
<layer id="layerl" width=50" height=60" bgcolor=green"
top=00" left=0" visibility="show">
<center>Cnou 2</center>
</layer>
</body>
</html>
Layer.res«zeBy() JavaScriPja1vj;
layer. resizeBy {x,y)
Метод resizeBy() объекта Layer изменяет размеры слоя относительно исходного разме-
размера. Параметр х соответствует количеству пикселов, на которое увеличивается ширина слоя.
Параметр у соответствует количеству пикселов, на которое увеличивается высота слоя.
В листинге 8.273 приведен пример изменения размеров объекта Layer. При щелчке на
кнопке обработчик событий onOick вызывает метод resizeByQ, который изменяет размеры
слоя 1ауег2.
Листинг 8.273. Пример использования метода resizeByO
<htrnl>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnou K/center>
</layer>
5 О 4 Часть III. Справочник по JavaScript
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<сепЬег>Слой 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="Изменить размеры слоя 2"
onClick='document.Iayer2.resizeByC0, 50)'>
<br>
</form>
</body>
</html>
Layer.resizeT0() JavaScript^
layer. resizeTo (x,y)
t Метод resizeToO объекта Layer устанавливает указанные размеры слоя. Параметр х соот-
соответствует количеству пикселов, до которого увеличивается ширина слоя. Параметр у со-
соответствует количеству пикселов, до которого увеличивается высота слоя.
В листинге 8.274 приведен пример изменения размеров слоя. При щелчке на кнопке об-
обработчик событий onClick вызывает метод resizeTo(), который изменяет размеры слоя
1ауег2.
Листинг 8.274. Пример использования метода resizeTo ()
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<сепЬег>Слой K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" value="PlSMeHH'rb размеры слоя 2"
onClick='document.Iayer2.resizeToA00, 300)'>
<br>
</form>
</body>
</html>
Layer.rOUteEvent() JavaScript^*
layer.routeEvent(событие)
fe Метод routeEvent() объекта Layer передает перехваченное событие для обработки другому
обработчику событий. Метод использует один параметр — тип передаваемого события.
В листинге 8.275 приведен пример использования метода routeEvent(). При возникнове-
возникновении события FOCUS оно перехватывается и переренаправляется.
Листинг 8.275. Пример использования метода routeEvent().
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Установка перехвата окном событий FOCUS,
document.captureEvents(Event.FOCUS);
Глава 8. Клиентская сторона 565
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
alert("В слое произошло событие FOCUS и был вызван
^иетод routeEvent");
document.routeEveht(evnt);
alert("Событие перенаправлено");
return true ;
»
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий FOCUS.
document.onFocus = handle;
II —>
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Oiou K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnou 2</center>
</layer>
</body>
</html>
Layer.siblingAbove JavaScript^
layer.siblingAbove
f Свойство siblingAbove объекта Layer соответствует равноправному слою, который нахо-
находится непосредственно над данным слоем в смысле z-индексации. Если такой слой от-
отсутствует, свойство возвращает значение null.
Равноправным словм считввтся любой дочврний слой родительского
слоя данного слоя.
В листинге 8.276 приведен пример определения значения свойства siblingAbove. При на-
нажатии на кнопку на экран выводится значение свойства.
Листинг 8.276. Пример использования свойства siblingAbove
<html>
<body>
<layer id="layer-l" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnou K/center>
</layer>
<layer id="layerl" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnou 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="Определить равноправный слой выше слоя 1"
onClick='alert(document.layerl.siblingAbove)'>
<br>
</form>
</body>
</html>
566 Часть III. Справочник по JavaScript
Layer.siblingBelow JavaScriP№vi++
layer.siblingBelow
Свойство siblingBelow объекта Layer соответствует равноправному слою, который нахо-
находится непосредственно под данным слоем в рамках z-индексации. Если такой слой от-
отсутствует, свойство возвращает значение null.
В листинге 8.277 приведен пример определения значения свойства siblingBelow. При щел-
щелчке на кнопке на экран выводится значение свойства.
Листинг 8.277. Пример использования свойстве siblingBelow
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<сепЬег>Слой K/center>
</layer>
<layer id="layerl" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnou 2</center>
</layer>
<form name="forml">
<input type="button" value="Определить равноправный слой ниже слоя 1"
onClick='alert(document.layerl.siblingBelow)'>
<br>
</form>
</body>
</html>
Layer.src JavaScrip,M£
layer.src
& Свойство src объекта Layer содержит ссылку URL данного слоя.
В листинге 8.278 приведен пример использования свойства src. При щелчке на кнопке
на экран выводится значение свойства.
Листинг 8.278. Пример использования свойства src
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow" top=70"
left=00" visibility="show">
<center>Cnou K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green"
top=0 0"
left=0" visibility="show">
<center>Cnou 2</center>
</layer>
<form name="forml">
<input type="button"
value="Определить значение свойства src для слоя 1"
onClick='alert(document.layerl.src)'>
</form>
</body>
</html>
______ _____
layer.top
Глава 8. Клиентская сторона ЭО/
f Свойство top объекта Layer содержит координату у положения слоя в документе верх-
верхнего уровня. Изменение этого свойства приводит к перемещению слоя вверх или вниз.
В листинге 8.279 приведен пример использования свойства top для перемещения слоя
вверх. При щелчке на кнопке вызывается функция move(), которая перемещает слой на
10 пикселов вверх.
Листинг 8.279. Пример использования свойства top
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
function move(){
document.layerl.top = document.layerl.top - 10;
}
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow"
top=70"
left=00" visibility="show">
<center>Cnofi K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green"
top=00"
left=0" visibility="show">
<center>Cnoii 2</center>
</layer>
<form name="forml">
<input type="button" уа1ие="ПереиесФи<1ь Слой 1 вверх"
onClick='move()'>
</form>
</body>
</html>
Layer.unwatch()
layer.unwatch(prop)
Метод unwatch() объекта Layer используется для прекращения отслеживания свойства,
установленного при помощи метода watch(). В качестве аргумента он использует один
параметр, prop, указывающий свойство, отслеживание которого прекращается.
В листинге 8.280 приведен пример использования метода unwatchO для прекращения
отслеживания свойства name слоя.
Листинг 8.280. Использование метода unwatchO объекта Layer
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</Ь>"+ " на " + "<b>" + newvalue + "</ЬХЬг>")
return newValue;
}
function setWatch(){
myProp = document.layers.name;
watch("myProp",alertme);
myProp = "red_layer";
unwatch("myProp");
myProp = "blue_layer";
}
</script>
Э Ь О Часть III. Справочник по JavaScript
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow"
top=7 0"
left=00" visibility="show">
<center>Cnofi K/center>
</layer>
<layer ID="layer2" width=50" height=60" bgcolor="green"
top=00"
left=0" visibility="show">
<сепЪег>Слой 2</center>
</layer>
<form name="forml">
<input type="button" value="УсФановихь/прекратить слежение"
onClick=•setWatch()'>
</form>
</body>
</html>
Layer.visibility JavaScript^
layer.visibility
# Свойство visibility объекта Layer управляет видимостью слоя. Это свойство может иметь
следующие значения: hide, show или inherit. Кроме того, это свойство соответствует ат-
атрибуту visibility дескриптора <1ауег>.
В листинге 8.281 приведен пример использования свойства visibility с целью сокрытия
объекта Layer.
Листинг 8.281. Пример использования свойства visibility
<html>
<body>
<script type="text/javascript" language="JavaScript">
function hide(){
document.Iayer2.visibility =" hide";
}
</script>
<layer id="layerl" width=00" height=00" bgcolor="yellow"
top=7 0"
left=00" visibility="show">
<center>Cnoii K/center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green"
top=00"
left=0" visibility="show">
<center>Ci!oii 2</center>
</layer>
<form name="forml">
<input type="button" value="CKpbnrb слой 2" onClick='hide()•>
</form>
</body>
</html>
Layer.watch()
layer.watch(prop, обработчик)
Метод watch() объекта Layer используется для установки отслеживания за изменения-
изменениями свойств объекта Layer. При изменении значения свойства prop вызывается обработ-
обработчик, заданный параметром обработчик.
Глава 8. Кливнтская сторона 569
В листинге 8.282 приведен пример использования метода watch() для установки отсле-
отслеживания свойства name объекта Layer. При изменении имени слоя вызывается функция
alertme. которая выводит на экран сообщение об изменении.
Листинг 8.282. Использование метода watch() объекта Layer
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue +
"</Ь>"+ " на " + "<Ь>" + newValue + "</bXbr>")
return newValue;
}
function setwatch(){
myProp = document.layers.name;
watch("myProp",alertme);
myProp = "red_layer";
myProp = "blue_layer";
</script>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow"
top=70"
left=00" visibility="show">
<center>Cnofi K/center>
</layer>
<layer ID="layer2" width=50" height=60" bgcolor="green" top=00"
left=0" visibility="show">
<center>Cnofi 2</center>
</layer>
<form name="forml">
<input type="button" value="yc"raHOBH'rb отслеживание"
onClick='setWatch()■>
</form>
</body>
</html>
Layer.Zlndex JavaScript 1.2+
Nav4+
layer.zlndex
й Свойство zlndex объекта Layer определяет порядок расположения слоев.
В листинге 8.283 приведен пример использования свойства zlndex. При щелчке на кнопке
на экране появляется окно предупреждения, в котором выводится значение свойства
zlndex.
Листинг 8.283. Пример использования свойства zlndex
<html>
<body>
<layer id="layerl" width=00" height=00" bgcolor="yellow"
top=70" left=00" visibility="show">
<center>Cnofi l</center>
</layer>
<layer id="layer2" width=50" height=60" bgcolor="green"
top=00" left=0" visibility="show">
<center>Cnou 2</center>
</layer>
570
Часть III. Справочник по JavaScript
<form
'forml">
<input type="button"
уа1ие="Определить значение свойства zIndex для слоя 2"
onClick=•alert, (document.Iayer2.zlndex) '>
</form>
</body></html>
■ :пь JavaScript 1.0+, JScript 1.0+
Nav2+. IE3+, Opera3+
Основной объект клиентской части языка JavaScript..
& Объект Link представляет собой HTML-ссылку. Это может быть изображение, текст или
предопределенная область на Web-странице. Все HTML-ссылки хранятся в массиве links[].
Объект Link имеет свои свойства и методы, которые перечислены в табл. 8.20.
Тип
Свойство
Метод
Таблица
Элемент
handleEvent
hash
host
hostname
href
onClick
onDbOck
onKeyDown
onKeyPress
onKeyUp
onMouseDown
onMouseOut
onMouseOver
onMouseUp
pathname
port
protocol
search
target
text
unwatch()
watch()
8.20. Свойства и методы объекта Link
Описание
Обработчик событий
Имя точки привязки в URL-адресе, которое начинается с
символа #
Имя хоста и порт, содержащиеся в URL-адресе
Имя хоста, содержащееся в URL-адресе
Содержит полный URL-адрес
Обработчик событий одинарного щелчка мышью
Обработчик событий двойного щелчка мышью
Обработчик событий нажатия клавиши клавиатуры на
объекте Link
Обработчик событий нажатия клавиши клавиатуры на
объекте Link
Обработчик событий отпускания нажатой клавиши
клавиатуры на объекте Link
Обработчик событий щелчка мышью на объекте Link
Обработчик событий перемещения указателя мыши за
пределы объекта объекте Link
Обработчик событий перемещения указателя мыши над
объектом Link
Обработчик событий отпускания кнопки мыши на объекте
Link
Часть URL, описывающая путь
Часть URL, описывающая порт
Часть URL, описывающая протокол
Часть URL, описывающая строку поиска
Имя объекта Window, в котором будет выводиться ссылка
Текст, который использовался для создания ссылки
Прекращает отслеживание свойства объекта Link
Устанавливает отслеживание свойства объекта Link
Глава 8. Клиентская сторона 5/1
В листинге 8.284 приведен пример использования объекта Link. При щелчке мышью на
ссылке на экран выводится текст ссылки.
Листинг 8.284. Пример использования объекта Link
<html>
<body>
Для перехода на Web-сайт щелкните на ссылке.
<Ьг><Ьг>
<а href="http://www.samspublishing.com"
опС11ск='а1егЪ("Перей"Ги на:" + document.links[0].text)'>
Издательство Sams Publishing</a>
</body>
</html>
Link.handleEvent() JavaScripJa1v£
link.handleEvent(событие)
& Метод hand!eEvent() вызывает обработчик событий объекта Link.
В листинге 8.285 приведен пример использования метода handleEvent(). Все события CLICK
обрабатываются первой ссылкой документа.
Листинг 8.285. Пример использования матода handleEventO
<html>
<body>
<script type="text/javascript" languages"JavaScript">
// Установка перехвата окном событий CLICK,
document.captureEvents(Event.CLICK);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handle(evnt){
document.forml.links[0].handleEvent(Event.CLICK);
»
function displayMsgO {
alert("Произошло событие Click.");
}
// Приведенная ниже строка регистрирует функцию handle в качестве
// обработчика событий CLICK,
document.onClick = handle;
II—>
</script>
<form name="forml">
<a href="http://www.samspublishing.com:BO/foo?something#foobar"
onClick='displayMsgO •>
http://www.samspublishing.com:80/foo?something#foobar</a>
<br>
</form>
</body>
</html>
Link.hash JavaScript 1.0+
Nav2+, Opera3+
link.hash
к Свойство hash содержит часть текущего URL.
В листинге 8.286 приведен пример использования свойства hash. После щелчка на кнопке
функция showHash() выводит на экран значение свойства hash ссылки.
U / С. Часть III. Справочник по JavaScript
Листинг 8.286. Пример использования свойства hash.
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция выводит на экран значение свойства hash ссылки,
function showHash(){
document.forml.textl.value = document.links[0].hash;
}
II —>
</script>
Для определения содержащегося в URL имени точки привязки щелкните
на кнопке
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
Имя точки привязки: <input type="text" name="textl" size=0">
<br>
<input type="button" name="hash"
value="OnpeflenHTb имя точки привязки" onClick='showHash()'>
<br><br>
</form>
</body>
</html>
Link hn«st JavaScript 1.0+, JScript 1.0+
LinK.nosi Nav2+ |E3+ OperaJ+
link.host
$3k Свойство host представляет собой часть URL, содержащую имя хоста и номер порта.
В листинге 8.287 приведен пример использования свойства host. При щелчке на кнопке
вызывается функция showHost(), которая выводит на экран значение свойства host ссыл-
ссылки.
Листинг 8.287. Пример использования свойства host
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция выводит на экран значение свойства host,
function showHost(){
document.forml.textl.value = document.links[0].host;
}
II—>
</script>
Для определения содержащихся в URL имени хоста и номера порта
щелкните на кнопке
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
Имя хоста и номер порта: <input type="text" name="textl"
size=0">
<br><br>
<input type="button" name="host"
value="определить имя хоста и номер порта" onClick='showHost()'>
<br>
</form>
</body>
</html>
Глава 8. Клиентская сторона О / lj
Link-hostname
link.hostname
Свойство hostname объекта Link представляет собой часть URL, содержащую имя хоста
ссылки.
В листинге 8.288 приведен пример использования свойства hostname. При щелчке на
кнопке вызывается функция showHostname(), которая выводит на экран значение свой-
свойства hostname ссылки.
Листинг 8.288. Пример использования свойства hostname
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция выводит на экран значение свойства hostname,
function showHostname(){
document.forml.textl.value = document.links[0].hostname;
J
</script>
Для определения содержащегося в URL имени хоста щелкните на кнопке
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
Имя хоста: <input type="text" name="textl" size=0">
<br><br>
<input type="button" name="host" уа1ие="Определить имя хоста"
onClick='showHostname()'>
<br>
</form>
</body>
</html>
I ink hrpf JavaScript 1.0+, JScript 1.0+
LIPK.nreT Nav2+ |E3+ 0 +
linJt.href
| Свойство href объекта Link представляет собой полный URL-адрес ссылки.
В листинге 8.289 приведен пример использования свойства href. При нажатии на кноп-
кнопку вызывается функция showhref(), которая выводит на экран значение свойства href
ссылки.
Листинг 8.289. Пример использования свойства href
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция выводит в текстовом поле значение свойства href.
function showhref(){
document.forml.textl.value = document.links[0].href;
}
II —>
</script>
Для определения содержащегося в URL значения свойства href
щелкните на кнопке
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
574 Часть III. Справочник по JavaScript
Значение свойства href: <input type="text" name="textl" size=S">
<br><br>
<input type="button" name="href"
value="Определить значение свойства href" onClick='showhref()•>
<br>
</form>
</body>
</html>
I ink nnPlirk JavaScript 1.0+, JScript 1.0+
onClick="команда"
# Обработчик событий onClick объекта Link используется для обработки событий одинар-
одинарного щелчка кнопкой мыши в то время, когда указатель мыши находится над ссылкой.
В листинге 8.290 приведен пример использования обработчика событий onClick для оп-
определения момента щелчка кнопкой мыши.
Листинг 8.290. Пример использования обработчика событий onClick
<html>
<body>
Щелкните на ссылке.
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar"
onClick='alert("Вы щелкнули на ссылке")'>
http://www.samspublishing.com:BO/foo?something#foobar</a>
<br><br>
</form>
</body>
</html>
Link.onDblClick JavaScript 1.2+. JScrjrt Ш
onDblClick="команда"
Обработчик событий onDbldick объекта Link используется для обработки событий двой-
двойного щелчка кнопкой мыши в то время, когда указатель мыши находится над ссылкой.
В листинге 8.291 приведен пример использования обработчика событий onDblCIick. При
выполнении на ссылке двойного щелчка обработчик событий выводит на экран сообщение
о возникновении события DblCIick.
Листинг 8.291. Примвр использования обработчика событий onDblCIick
<html>
<body>
Выполните двойной щелчок на ссылке.
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar"
onDblClick='alert("Вы выполнили двойной щелчок на ссылке")'>
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
</form>
</body>
</html>
Link.onKeyDown JavaScript 1.2+, JScript Ш
onKeyD о wn= " команда "
к Обработчик событий onKeyDown объекта link используется для обработки событий нажатия
клавиши на клавиатуре в то время, когда фокус находится на ссылке.
Глава 8. Клиентскея сторона U / U
В листинге 8.292 приведен пример использования обработчика событий onKeyDown. При
нажатии клавиши обработчик событий выводит на экран сообщение о возникновении
события KeyDown.
Листинг 8.292. Пример использования обработчика событий onKeyDown
<html>
<body>
Щелкните на ссылке.
<form name="forml">
<а href="http://www.samspublishing.coin:BO/foo?something#foobar"
onKeyDown='alert("Вы нажали на ссылке клавишу на клавиатуре")'>
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
</form>
</body>
</html>
Link.OnKeyPreSS JavaScript 1.2+, JScnpt 10+
onKeyPress="команда"
h Обработчик событий onKeyPress объекта link используется для обработки событий нажатия
клавиши на клавиатуре в то время, когда фокус находится на ссылке.
В листинге 8.293 приведен пример использования обработчика событий onKeyPress. Об-
Обработчик событий onKeyPress вызывается при каждом нажатии клавиши.
Листинг 8.293. Пример использования обработчика событий onKeyPress
<html>
<body>
Щелкните на ссылке.
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar"
onKeyPress='alert("Вы нажали иа ссылке клавишу на клавиатуре")'>
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
</form>
</body>
</html>
Link.OllKeyUp JavaScript 1.2+. JScnpt 1.0+
or»KeyUp=" команда"
k Обработчик событий onKeyUp объекта Link используется для обработки событий отпус-
отпускания нажатой клавиши на клавиатуре в то время, когда фокус находится на ссылке.
В листинге 8.294 приведен пример использования обработчика событий onKeyUp. Обра-
Обработчик событий onKeyUp вызывается при каждом отпускании нажатой клавиши.
Листинг 8.294. Пример использования обработчика событий onKeyUp
<html>
<body>
Переместите фокус на ссылку, нажните и отпустите клавишу на
клавиатуре.
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar"
onKeyUp='alert("Вы отпустили клавишу")'>
http://www.samspublishing.com:BO/foo?something#foobar</a>
<br><br>
</form>
</body>
</html>
О / Ь Часть III. Справочник по JavaScript
Link.0nM0USeD0Wn JavaScript 1.2+, JScript W
onMouseDown-"команда"
# Обработчик событий onMouseDown объекта Link используется для обработки событий
нажатия кнопки мыши в то время, когда указатель мыши находится над ссылкой.
B листинге 8.295 приведен пример использования обработчика событий onMouseDown.
Обработчик onMouseDown вызывается при нажатии кнопки мыши в то время, когда
указатель мыши находится над ссылкой.
Листинг 8.295. Пример использовения обработчика событий onMouseDown.
<html>
<body>
Нажмите кнопку мыши в то время, когда указатель мыши находится над
ссылкой.
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?somefching#foobar"
onMouseDown='alert("Была нажата кнопка мыши.")'>
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
</form>
</body>
</html>
Link.onMouseOut
onMouseOut="команда"
Обработчик событий onMouseOut объекта Link используется для обработки событий, ге-
генерируемых в случае, когда указатель мыши перемещается за пределы ссылки.
В листинге 8.296 приведен пример использования обработчика событий onMouseOut.
Листинг 8.296. Пример использования обработчика событий onMouseOut
<html>
<body>
<script type="text/javascript" language="JavaScript">
<i —
// При возникновении события MouseOut вывести на экран сообщение,
function showMsgO{
document.forml.textl.value="Указатель мыши вышел sa пределы ссылки";
}
II —>
</script>
Нажмите кнопку мыши в то время, когда указатель мыши находится нал
ссылкой.
<form name~"£orml">
<а href="http://www.samspublishing.com:80/foo?something#foobar"
onMouseOut='showMsg()'>
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
<input type="text" name="textl" size=0">
</form>
</body>
</html>
Unk.OnMouseOver JavaScript10+. JScript 1.0+
Nav2+, IE3+, Opera3+
onMouseOver="команда"
5| Обработчик событий onMouseOver объекта Link используется для обработки событий,
генерируемых во время перемещения указателя мыши над ссылкой.
Глава 8. Клиентская сторона 5 / /
uj В листинге 8.297 приведен пример использования обработчика событий onMouseOver для
А вывода на экран сообщения при перемещении указателя мыши над ссылкой.
Листинг 8.297. Пример использования обработчика событий onMouseOver.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// При возникновении события MouseOut вывести в текстовой
// поле сообщение,
function showMsg(){
document.forml.textl.value =
"Указатель мыши переместился над ссылкой";
}
II —>
</script>
Переместите курсор над ссылкой.
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar"
onMouseOver='showMsg()'>
http://www.samspublishing.com:8 0/foo?something#foobar</a>
<br><br>
<input type="text" name="textl" size=0">
rm>
</body>
</html>
Link.OnMouseUp JavaScript 1.2+. JScript 1.0+
r Nav4+, IE3+
onMouseDp="команда"
Обработчик событий onMouseUp объекта Link используется для обработки событий от-
отпускания нажатой кнопки мыши в то время, когда указатель мыши находится над ссыл-
ссылкой.
В листинге 8.298 приведен пример использования обработчика событий onMouseUp.
Листинг 8.298. Пример использования обработчика событий onMouseUp
<html>
<body>
Нажмите кнопку мыши в то время, когда указатель мыши находится над
ссылкой.
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar"
onMouseUp='alert("Клавиша мыши отпущена")'>
http://www.samspublishing.com:8 0/foo?something#foobar</a>
<br><br>
<input type="text" name="textl" size=50>
rm>
</body>
</html>
Link, pathname JavaScript 1.0+ JScrfpt 1.0+
r Nav2+, IE3+, Opera3+
link.pathname
Свойство pathname объекта Link представляет собой часть URL-адреса ссылки, которая
содержит путь.
В листинге 8.299 приведен пример использования свойства pathname. После щелчка на
кнопке выполняется функция showpathname, которая вводит па экран значение свойства
pathname.
О / О Часть III. Справочник по JavaScript
Листинг 8.299. Пример использования свойства pathname.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция выводит на экран путь, содержащийся в указанном URL.
function showpathname(){
document.forml.textl.value = document.links[0].pathname;
}
//-->
</script>
Для определения содержащегося в URL-адресе пути щелкните на кнопке.
<£orm name="forml">
<а href="http://www.samspublishing.com:80/tmp/
foo.html?something#foobar">
http://www.a.com:80/tmp/fоо.html?something#foobar</a>
<br><br>
Значение свойства pathname:<input type="text" name="textl" size=0">
<br><br>
<input type="button" name="path"
value="Определить значение свойства pathname"
onClick='showpathname()'>
<br>
</form>
</body>
</html>
JavaScript 1.0+, JScript 1.0+
2 3
link.port
Свойство port объекта Link представляет собой часть URL-адреса ссылки, которая содержит
номер порта. Эта часть присутствует не во всех URL.
В листинге 8.300 приведен пример использования свойства port для определения номе-
номера порта, используемого в том случае, если в URL присутствуют данные о номере порта.
При нажатии на кнопку на экран вводится номер порта ссылки.
Листинг 8.300. Пример использования свойства port
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция выводит на экран номер порта, содержащийся в URL.
function showportO{
document.forml.textl.value = document.links[0].port;
}
II—>
</script>
Для определения содержащегося в URL-адресе номера порта щелкните
на кнопке
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
Номер порта: <input type="text" name="textl" size=0">
<br><br>
<input type="button" name="port" value="Определить номер порта"
onClick='showportO'>
<br>
</form>
</body>
</html>
Глава 8. Клиентская сторона
579
link.protocol
Свойство protocol объекта Link представляет собой протокол, используемый текущим Web-
браузером. Это начальная часть строки URL.
В листинге 8.301 приведен пример определения типа используемого протокола. При щел-
щелчке на кнопке на экран вводится тип протокола.
Листинг 8.301. Пример использования свойства port
<html>
<body>
<script type="text/javascript" language^"JavaScript">
<! —
// Функция выводах на экран тип используемого протокола,
function showproto(){
document.forml.textl.value = document.links[0].protocol;
}
II —>
</script>
Для определения содержащегося в URL-адресе типа используемого
протокола щелкните на кнопке
<form name="forml">
<а href="http;//www.samspublishing.com:80/foo?something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
Тип протокола: <input type="text" name="textl" size=0">
<br><br>
<input type="button" name="proto" value="Определить тип протокола"
onClick='showproto()'>
<br>
</form>
</body>
</html>
I ink Qparrh JavaScript 1.0+, JScript 1.0+
LinK.searcn N|>v2+ |E3+ 0^era3+
link.search
Й& Свойство search объекта Link представляет собой содержащуюся в URL строку поиска
» (если она присутствует). Свойство search включает начальный знак вопроса (?).
В листинге 8.302 приведен пример определения значения свойства search. При щелчке на
кнопке функция showsearch() выводит на экран значение свойства.
Листинг 8.302. Пример использования свойства search
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран строку поиска.
function showsearch(){
document.forml.textl.value = document.links[0].search;
}
</script>
Для определения содержащейся в URL строки поиска щелкните на кнопке
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
Строка поиска: <input type="text" name="textl" size=0">
UOU Часть III. Справочник по JavaScript
<br><br>
<input type="button" name="search" уа1ие="Определить строку поиска"
onClick='showsearch()■>
<br>
</form>
</body>
</htffil>
JavaScript 1.0+, JScript 1.0+
link.target
Свойство target объекта Link представляет собой имя окна, в котором должен выводит-
ся URL.
В листинге 8.303 приведен пример использования свойства target При щелчке на кнопке
функция showtarget() выводит на экран значение свойства target.
Листинг 8.303. Пример использования свойства target
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Вывести на экран имя окна, в котором должна выводится ссылка,
function showtargetO{
document.forml.text1.value = document.links[0].target;
}
</script>
Для определения содержащегося в URL-адресе имени окна щелкните на
кнопке
<form name="forml">
<а href="http://www.samspubli shing.com:8 0/foo? something#foobar">
http://www.samspublishing.com:80/foo?something#foobar</a>
<br><br>
Имя окна: <input type="text" name="textl" size=0">
<br><br>
<input type="button" name="tar" Уа1ие="Определить имя окна"
onClick= ■ showtargetO ">
<br>
</form>
</body>
</html>
рГ5
Nav4+
link.text
| Свойство text об1>екта Link используется для получения текстового значения ссылки.
В листинге 8.304 приведен пример использования свойства text. При щелчке на кнопке
функция showtext выводит на экран текстовое значение ссылки.
Листинг 8.304. Пример использования свойства text
<body>
<script type="text/javascript" language="JavaScript">
-< i ——
// Вывести на экран текстовое значение ссылки,
function showtext(){
document.forml.textl.value = document.links[0].text;
}
II —>
</script>
Глава 8. Клиентская сторона
Для определения текстового значения ссылки нажмите кнопку
<form name="forml">
<а href="http://www.samspublishing.com:80/foo?something#foobar">
Ссылка куда-то</а>
<br><br>
Текстовое значение ссылки: <input type="text" name="textl" size=0">
<ЬгХЬг>
<input type="button" name="txt"
value="Определить текстовое значение" onClick='showtext() ' >
<br>
</form>
</body>
</html>
Link.unwatch()
link.unwatch(prop)
p& Метод unwatch() объекта Link используется для прекращения отслеживания свойства,
«заданного параметром prop. Это отслеживание ранее было установлено с помощью ме-
метода watch().
дВ листинге 8.305 приведен пример использования метода unwatch() для прекращения
^ отслеживания свойства href ссылки.
Листинг 8.305. Использование метода unwatchO объекта Link
<html>
<script type="text/javascript" a language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</Ь>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
myLink = document.links.href;
watch("myLink",alertme);
myLink = "http://www.bmw.com";
unwatch("myLink") ;
myLink = "http://www.amazon.com";
watch("myLink",alertme);
myLink = "http://www.buy.com";
</script>
<body>
<form name="forml">
<a href="http://www.samspublishing.com:80/foo?something#foobar">
Ссылка куда-то</а>
</form>
</body>
</html>
watch(prop, обработчик)
Метод watch() объекта Link используется для установки отслеживания изменений свойств
объекта Link. При изменении значения свойства prop вызывается обработчик, определен-
определенный параметром обработчик.
В листинге 8.306 приведен пример использования метода watch() для установки отсле-
отслеживания свойства href объекта Link.
Листинг 8.306. Использование метода watch() объекта Link
<html>
<script type="text/javascript" language^"JavaScript">
582
Часть III. Справочник по JavaScript
function alertme(id,oldValue,newValue)
document.writeln(id +
+ "</b>"+ " на
return newValue;
изменилось с " + "<Ь>" + oldValue
+ "<Ь>" + newValue + "</ЬХЬг>")
myLink = document.links.href;
watch("myLink",alertme);
myLink = "http://www.bmw.com";
myLink = "http://www.amazon.com";
</script>
<body>
<form name="forml">
<a href="http://www.samspublishing.com:80/foo?something#foobar">
Ссылка куда-то</а>
</form>
</body>
</html>
JavaScript 1.0+, JScriptTO+
Nav2+, IE3+,
Основной объект клиентской части языка JavaScript.
c?jj Объект Location служит для представления текущего Web-адреса, отображаемого в окне
браузера. Свойства и методы объекта Location перечислены в табл. 8.21.
Таблица 8.21. Свойства и методы объект Location
I nratinn
Location
Тип
Свойство
Метод
Элемент
hash
host
hostname
href
pathname
port
protocol
search
reload()
replace()
unwatch()
watch ()
Описание
Служит для представления содержащегося в URL имени привязки,
которое начинается с символа #
Служит для представления содержащихся в URL имени хоста и
номера порта
Служит для представления содержащегося в URL имени хоста
Служит для представления полного URL
Служит для представления содержащегося в URL пути
Служит для представления содержащегося в URL номера порта
Служит для представления содержащегося в URL типа протокола
Служит для представления содержащейся в URL строки поиска,
включая символ ?
Выполняет повторную загрузку текущего URL
Загружает в текущий браузер новую страницу
Прекращает отслеживание свойства объекта Location
Устанавливает отслеживание свойства объекта Location
В листинге 8.307 приведен пример использования объекта Location.
Листинг 8.307. Пример использования объекта Location
<html>
<body>
<form name="forml">
Для определения текущего значения объекта location щелкните на
кнопке.
<ЬгХЬгХЬг>
Глава 8. Клиентская сторона Зои
<input type="button" name="getLoc"
value="Определить значение объекта Location"
onClick='alert("Текущее значение объекта location: "
+ document.location)'>
<br>
</form>
</body>
</html>
Location.hash
location.hash
Свойство hash объекта Location служит для представления содержащегося в URL име-
имени точки привязки, которое начинается с символа #.
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства hash равно #foobar.
В листинге 8.308 приведен пример определения значения свойства hash.
Листинг 8.308. Пример использования свойства hash.
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Вывести на экран содержащееся в URL имя точки привязки.
function show(){
document.forml.textl.value=document.location.hash;
}
II —>
</script>
<form name="forml">
Для определения значения свойства location.hash щелкните на кнопке
<Ьг>
http://www.samspublishing.com:80/£oo?something#foobar
<br><br>
Значение свойства location.hash: <input type="text" name="textl"
size=0">
<br>
<input type="button" name="getLoc"
value="Определить значение свойства hash" onClick='show()'>
<br>
</form>
</body>
</html>
Location.host
location.host
Свойство host объекта Location служит для представления содержащихся в URL имени
хоста и номера порта (если последний присутствует).
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства host равно www.samspublishing.com:80.
В листинге 8.309 приведен пример использования свойства host.
Листинг 8.309. Пример использования свойства host
<html>
<body>
<script type="text/javascript" language="JavaScript">
584 Часть III. Справочник по JavaScript
// Вывести на экран содержащиеся в URL имя хоста и номер порта,
function show(){
document.forml.textl.value=document.location.host
}
II —>
</script>
<form name="forml">
Для определения значения свойства location.host для адреса:
<br>
http://www.samspublishing.com:8 0/foo?something#foobar
щелкните на кнопке
<br><br>
Значение свойства location.host: <input type="text" name="textl"
size=20>
<br>
<input type="button" name="getLoc"
уа1ие="Определить значение свойства host" onClick='show()'>
<br>
</form>
</body>
</html>
Lo^ation.hostname
location.hostname
& Свойство hostname объекта Location служит для представления содержащегося в URL
имени хоста.
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства hostname равно www.samspublishing.com.
|B листинге 8.310 приведен пример использования свойства hostname. При щелчке на
кнопке вызывается функция show(), которая в текстовом поле выводит на экран зна-
значение свойства hostname.
Листинг 8.310. Пример использования свойства hostname
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Вывести на экран содержащееся в URL-адресе имя хоста.
function show()(
document.forml.textl.value=document.location.hostname;
}
//-->
</script>
<form name="forml">
Для определения значения свойства location.hostname для адреса:
<br>
http://www.samspublishing.com:80/foo?something#foobar
щелкните на кнопке
<ЫХЬг>
Значение свойства location.hostname: <input type="text"
name="textl" size=0">
<br>
<input type="button" name="gethost"
valuer"Определить значение свойства hostname" onClick='show()•>
<br>
</form>
</body>
</html>
Глава 8. Клиентская сторона 585
Inratinn hrpf ~ JavaScriptTo+, JScrTp7T6+
Location.пгет Nav2+ |E3+ Opera3+
location.href
& Свойство href объекта Location служит для представления всей строки URL для текущей
» страницы, выводимой в окне браузера.
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства href равно всему URL-адресу.
В листинге 8.311 приведен пример определения значения свойства href.
Листинг 8.311. Пример использования свойства href
<html>
<body>
<script type="text/javascript" language="JavaScript">
<\ —
function show()f
document.location.href =
"http://www.samspublishing.com:80/foo?something#foobar";
}
</script>
•cform name="forml">
Для определения гначешя свойства location.href для адреса:
<:br>
http://www.Samspublishing.com:80/foo?something#foobar
щелкните на кнопке
<br><br>
Значение свойства location.href: <input type="text" name="textl"
size=0">
<input type="button" name="sethref"
value="Определить значение свойства href" onClicJc='show()'>
<br>
<r/form>
<:/body>
</html>
Location.pathname JavaScript 1.0+. JScript 1.0+
r Nav2+, IE3+, Opera3+
location.pathname
Ё& Свойство pathname объекта Location служит для представления пути, содержащегося в
v URL-адресе.
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства pathname равно /foo.
uj В листинге 8.312 приведен пример определения значения свойства pathname.
Листинг 8.312. Пример использования свойства pathname
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Функция для вывода на экран содержащегося в ORL пути.
function show(}{ .
document.forml.textl.value=document.location.pathname,
//
</script>
5 О D Часть III. Справочник по JavaScript
<form name="forml">
Для определения значения свойства location.pathname для адреса:
<Ьг>
http://www.samspublishing.com:BO/foo?something#foobar
щелкните на кнопке
<br><br>
Значение свойства location.pathname: <input type="text"
name="textl" size=0">
<br>
<input type="button" name="getLoc"
уа1ие="Определить значение свойства pathname" onClick='show()'>
<br>
</form>
</body>
</html>
Location.port
location.port
# Свойство port объекта Location служит для представления содержащегося в URL номе-
номера порта. Как правило, в LJRL номер порта следует за хост-именем, но иногда он мо-
может отсутствовать.
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства port равно 80.
В листинге 8.313 приведен пример определения значения свойства port.
Листинг 8.313. Пример использования свойства port
<html>
<body>
<script type="text/javascript" language="JavaScript">
^i
//Функция для вывода на экран содержащегося в URL-адресе номера порта
function show(){
document.forml.textl.value=document.location.port;
>
//-->
</script>
<form name="forral">
Для определения значения свойства location.port для адреса:
<br>
http://www.samspublishing.com:BO/foo?something#foobar
щелкните на кнопке
<br><br>
Значение свойства location.port: <input type="text"
name="textl" size=0">
<br>
<input type="button" name="getport"
value="Определить значение свойства port" onClick='show()•>
<br>
</form>
</body>
</html>
LOCation.protOCOl
location.protocol
Свойство protocol объекта Location служит для представления типа протокола, содержа-
содержащегося в URL-адресе. В URL тип протокола находится в самом начале строки (перед //).
Глава 8. Клиентская сторона 587
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства protocol равно http.
В листинге 8.314 приведен пример использования свойства protocol.
Листинг 8.314. Пример использования свойства protocol
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция для вывода на экран типа протокола,
// содержащегося в URL-адресе,
function show(){
document.forml.textl.value=document.location.protocol;
</script>
<form name="forml">
Для определения значения свойства location.protocol для адреса:
<br>
http://www.samspublishing.com:80/foo?something#foobar
щелкните на кнопке
<br><br>
Значение свойства location.protocol: <input type="text"
name="textl" size=0">
<br>
<input type="button" name="getproto"
уа1ие="Определить значение свойства protocol"
onClick='show()'>
<br>
</form>
</body>
</html>
Location.reload() JavaScript 1.1+ JScript 3.0+
w Nav3+, IE4+, Opera3+
location.reload()
& Метод reload() используется для выполнения повторной загрузки текущей страницы,
выведенной в окне браузера.
В листинге 8.315 приведен пример использования метод reload()
Листинг 8.315. Пример использования метод ге1овсЦ]
<html>
<body>
<form name="forml">
Для обновления текущей страницы щелкните на кнопке.
<br><br>
Значение свойства location.hash: <input type="text" naroe="textl"
size=0">
<br>
<input type="button" name="load" уа1ие="Обновии> страницу"
onClick='document.location.reload()'>
<br>
</form>
</body>
</html>
Location.replace()
location.replace(ORL)
Метод replace() используется для выполнения загрузки в текущее окно браузера новой
страницы, заданной URL-адресом.
588 Часть III. Справочник по JavaScript
В листинге 8.316 приведен пример использования метод replace() для загрузки нового
Web-сайта.
Листинг 8.316. Пример использования метод replaced
<html>
<body>
<form name="forml">
Для загрузки страницы http://www.samspublishing.com щелкните на
кнопке
<Ьг>
<Ьг>
<input type="button" name="load" value="Загрузить новую страницу"
onClick='document.location.replace("http://www.samspublishing.com") '>
<br>
</form>
</body>
</html>
Loration чеяггИ JavaScript 1.0+, JScript 1.0+
Location.searcn N£v2+ |E3+ o'era3+
location.search
Свойство search объекта Location служит для представления содержащейся в URL-адре-
URL-адресе строки поиска, включая начальный знак вопроса.
В следующем фиктивном Web-адресе:
http://www.samspublishing.com:80/foo?something#foobar
значение свойства search равно ?something.
B листинге 8.317 приведен пример использования свойства search.
Листинг 8.317. Пример использования свойства search
<html>
<body>
<script type="text/javascript" language="JavaScript">
//Функция для вывода на экран содержащейся в URL-адресе строки поиска
function show()i
document.forml.textl.value=document.location.search;
}
//-->
</script>
<form name="forml">
Для определения значения свойства location.search для адреса:
<br>
http://www.samspublishing.com:80/foo?something#foobar
щелкните на кнопке
<br><br>
Значение свойства location.search: <input type="text" name="textl"
size=0">
<br>
<input type="button" name="getsearch"
7а1ие="Определить значение свойства search" onClick='show()'>
<br>
</form>
</body>
</html>
Location.unwatch() JavaScriP*a^
location.unwatch[prop)
Метод unwatch() объекта Location используется для прекращения отслеживания свойства,
установленного с помощью метода watch(). В качестве аргумента он использует один па-
параметр, prop, определяющий свойство, отслеживание которого прекращается.
Глава 8. Клиентская сторона 589
В листинге 8.318 приведен пример использования метода unwatch() для прекращения
отслеживания свойства host объекта location.
Листинг 8.318. Использование метода unwatchO объекта Location
<html>
<script type="text/javascript" language="JavaScript">
<!--
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</Ь>"+ " на " + "<b>" + newValue + "</bxbr>")
return newValue;
}
function setWatch(){
myProp = document.location.host;
watch("myProp",alertme);
myProp = "amazon";
unwatch("myProp");
myProp = "google";
}
//-->
</script>
<body>
<form name="forml">
Для определения значения свойства location.host для адреса:
<br>
http://www.samspublishing.com:80/foo?something#foobar
щелкните на кнопке
<br><br>
Значение свойства location.host: <input type="text" name="textl"
size=0">
<br>
<input type="button" name="gethost" уа1ие="Установить отслеживание!»"
onClick='setWatch()•>
<br>
</form>
</body>
</html>
Location.watch()
location.watch(prop, обработчик)
Метод watch() объекта Location используется для установки отслеживания изменений
свойств объекта Location. При изменении значения свойства prop вызывается обработ-
обработчик, заданный параметром обработчик.
% В листинге 8.319 приведен пример использования метола watch() для установки отсле-
живания свойства port.
Листинг 8.319. Использование метода watchO объекта Location
<html>
<head>
<ЫЫе>Использование метода watch объекта bocation </title>
<script type="text/javascript" language="JavaScriptl.2">
<! —
// Функция изменения свойстна port объекта Location,
function changeValue(){
origPort = document.location.port;
newPort = document.forml.myNewPort.value;
watch( origPort, informChange(newPort) );
origPort = newPort;
}
// функция, которая выводит на экран окно предупреждения,
function informChange(val){
590
Часть III. Справочник по JavaScript
alert("Значение свойства Port изменилось на: " + val) ;
II —>
</script>
</head>
<body>
<form name="forml">
Для определения значения свойства location.port для адреса:
<br>
http://www.samspublishing.com:BO/foo?something#foobar
щелкните на кнопке
<br><br>
Введите новое значение свойства location.port: <input type="text"
name="myNewPort" size=0">
<br>
<input type="button" name="port" value="Изменить номер порта"
onClick='changeValue()'>
<br>
</form>
</body>
</html>
MimeType JavaScriPNaS
Основной объект клиентской части языка JavaScript.
t Объект MimeType — это стандартный объект языка JavaScript, доступ к которому мож-
можно получить с помощью массива mimeTypes объектов Navigator или Plugin. Аббревиату-
Аббревиатура MIME является сокращением от multipart Internet mail extensions (многоцелевые рас-
расширения электронной почты Internet). Методы и свойства объекта MimeType перечислены
в табл. 8.22.
Таблица 8.22. Свойства и методы объекта MimeType
Тип
Свойство
Метод
Элемент
description
enabledPlugin
suffixes
type
unwatch()
watch()
Описание
Возвращает описание объекта MimeType
Возвращает подключаемый модуль для определенного объекта
MimeType
Возвращает расширение файлов объекта MimeType
Возвращает строковое представление объекта MimeType
Прекращает отслеживания свойства объекта MimeType
Устанавливает отслеживание свойства объекта MimeType
В листинге 8.320 приведен пример получения доступа к объекту MimeType с помощью
массива mimeTypes. В примере в окне браузера выводится несколько элементов массива
mimeTypes.
Листинг 8.320. Пример использования объекта MimeType
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция выводит на экран три первые элемента массива MimeTypes.
for (i=0; i < 3; i++) {
document.writeln(navigator.mimeTypes[i].type);
document.writeln(navigator.mimeTypes[i].description);
document.writeln(navigator.mimeTypes[i].suffixes);
//document.writln("<br>");
Глава 8. Клиентская сторона
II—>
</script>
</body>
</html>
MimeType.description JavaScri'PNav3t
mimetype.description
Свойство description объекта MimeType используется для получения описания типа дан-
данных, задаваемых объектом MimeType.
В листинге 8.321 приведен пример использования свойства description. Цикл for приме-
применяется для вывода на экран описаний трех первых элементов массива MimeTypes.
Листинг 8.321. Использование свойства description
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция выводит на экран описание трех первых элементов
// массива MimeTypes
for (i=0; i < 3; i++) {
document, write ("Описание MimeType " + i + " : ");
document.writeln(navigator.mimeTypes[i].description);
document.write("<br>");
</script>
</body>
</html>
MimeType.enabledPlugin ravaScriPNavK
mimetype.enabledPlugin
S| Свойство enabledPlugin объекта MimeType используется для задания подключаемого мо-
модуля, необходимого для определенного объекта MimeType.
В листинге 8.322 приведен пример использования свойства enabledPlugin. Цикл for при-
применяется для вывода на экран значений свойства enabledPlugin трех первых элементов
массива MimeTypes.
Листинг 8.322. Использование свойства enabledPlugin
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Выполнить цикл и вывести на экран значения свойства enabledPlugin
for (i=0; i < 3; i++) {
document .write ("MimeType enabledPlugin " + i + " : ");
document.writeln(navigator.mimeTypes[i].enabledPlugin);
document.write("<br>");
</script>
</body>
</html>
MimeType.suffixes JavaScriPjaJ^
mimetype.suffixes
& Свойство suffixes объекта MimeType используется для получения строки, содержащей
возможные расширения файлов для данного типа MIME.
О У С. Часть III. Справочник по JavaScript
i/it0 В листинге 8.323 приведен пример использования свойства suffixes. Цикл for применя-
fi* ется для вывода на экран значений свойства suffixes трех первых элементов массива
MimeTypes.
Листинг 8.323. Использование свойства suffixes
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция выводит на экран расширения файлов для трех первых
// элементов массива MimeTypes.
for (i=0; i < 3; i++) {
document .write ("MimeType suffix " + i + " : ") ;
document.writeln(navigator.mimeTypes[i].suffixes);
document.write("<br>");
}
</script>
</body>
</html>
MimeType.type
mimetype.type
Свойство type объекта MimeType используется для получения строки, содержащей имя
данного типа MIME.
В листинге 8.324 приведен пример использования свойства type. Цикл for служит для
вывода на экран типов трех первых элементов массива MimeTypes.
Листинг 8.324. Использование свойства type
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! --
// Функция выводит на экран шипов трех первых элементов
// массива MimeTypes.
for (i=0; i < 3; i++) {
document .write ("MimeType type " + i + " :") ;
document.writeln(navigator.mimeTypes[i].type);
document.write("<br>");
}
</script>
</body>
</html>
j7vaScriptT2+
unwatch(prop)
Метод unwatch() объекта MimeType используется для прекращения отслеживания свой-
свойства, которое было ранее установлено с помощью метода watch(). В качестве аргумента
он принимает один параметр, prop, указывающий свойство, отслеживание которого
прекращается.
Все свойства объекта MimeType доступны только для чтения, поэтому соответствующий
пример не приводится.
MimeType.watch() JavaScript^
watch(prop, обработчик)
Глава 8. Клиентская сторона
593
Метод watch() объекта MimeType используется для установки отслеживания изменений
свойств объекта MimeType. При изменении значения свойства prop вызывается обработ-
обработчик, указанный с помощью параметра обработчик.
Все свойства объекта MimeType доступны только для чтения, поэтому соответствующий
пример не приводится.
JavaScript 1.0+
Nav2+, Opera3+
navigator
Основной объект клиентской части языка JavaScript.
f Объект navigator — это встроенный объект, который используется для получения инфор-
информации о браузере Navigator. Методы и свойства объекта navigator перечислены в табл. 8.23.
Тип
Свойство
Таблица
Элемент
appCodeName
appName
8.23. Свойства
Описание
Содержит
Содержит
и методы объекта navigator
кодовое имя браузера
официальное имя браузера
appVersion
language
Содержит данные о версии браузера
Содержит данные о языке браузера
mimeTypes
platform
plugins
userAgent
Массив объектов MimeType, который содержит все типы
MIME, поддерживаемые браузером
Содержит строку, соответствующую платформе, на которой
выполняется браузер
Массив объектов Plugin, который содержит все
установленные в браузере подключаемые модули
Строка, которая содержит заголовок агента пользователя
Метод
javaEnabled()
Функция, которая определяет, поддерживает ли браузер
язык Java
plugins.refresh() Осуществляет поиск вновь установленных подключаемых
модулей
preference)) Позволяет считывать и устанавливать в браузере различные
пользовательские настройки
taintEnabled() Определяет, разрешено ли маркирование данных
unwatch() Прекращает отслеживание свойства объекта navigator
watch() Устанавливает отслеживание свойства объекта navigator
J В листинге 8.325 приведен пример использования объекта navigator.
Листинг 8.325. Пример использования объекта navigator
<html>
<body>
<script type="text/javascript"
language="JavaScript">
// Виводит на экран значение свойства appName.
document.write(navigator.appName);
</script>
</body>
</html>
594 Часть III. Справочник по JavaScript
navigator.appCodeName
navigator.appCodeName
Свойство appCodeName объекта navigator определяет внутреннее кодовое имя браузера.
В листинге 8.326 приведен пример использования свойства appCodeName.
Листинг 8.326. Пример использования свойства appCodeName
<html>
<body>
<script type="text/javascript" languages"JavaScript">
// Выводит на экран значение свойства appCodeName.
document.write(navigator.appCodeName);
</script>
</body>
</html>
navigator.appName
navigator.appName
fe Свойство appName объекта navigator определяет имя браузера.
В листинге 8.327 приведен пример использования свойства appName.
Листинг 8.327. Пример использования свойства appName
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Отображение на экране значения свойства appName.
document.write(navigator.appName);
</script>
</body>
</html>
navigator.appVersion
navigator.appVersion
Свойство appVersion объекта navigator используется для определения версии браузера.
Возвращаемое значение содержит версию браузера, платформу, на которой выполняет-
выполняется браузер, и страну.
В листинге 8.328 приведен пример использования свойства appVersion.
Листинг 8.328. Пример использования свойства appVersion
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран Значения свойства appVersion.
document.write(navigator.appVersion);
//-->
</script>
</body>
</html>
navigator.javaEnabled()
navigator.javaEnabled()
$c& Метод javaEnabIed() используется для проверки того, поддерживает ли браузер язык Java.
Глава 8. Клиентская сторона
В листинге 8.329 приведен пример использования метода javaEnabled(). В примере про-
проверяется, поддерживает ли браузер язык Java. Если Java поддерживается, на экран выво-
выводится соответствующее сообщение.
Листинг 8.329. Пример использоввния методе javaEnabledO
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Проверка того, поддерживает ли браузер язык Java.
// Если Java поддерживается, вывести на экран соответствующее
сообщение.
if (navigator.javaEnabled()){
document.write("Этот брауsер поддерживает язык Java");
}
//-->
</script>
</body>
</html>
navigator.language JavaScript^
navigator.language
^Свойство language объекта navigator используется для определения поддерживаемого
' браузером языка. Свойство возвращает строку.
В листинге 8.330 приведен пример использования свойства language.
Листинг 8.330. Пример использоввния свойствв langimge
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран значение свойства language объекта navigator.
document.write(navigator.language);
//-->
</script>
</body>
</html>
navigator.mimeTypes
navigator.mimeTypes
& Свойство mimeTypes объекта navigator используется для получения полного списка под-
^ держиваемых браузером типов MIME. Массив mimetypes содержит все свойства объекта
Array.
%Ъ листинге 8.331 приведен пример использования свойства mimeTypes.
r
Листинг 8.331. Пример использоввния свойства mimeTypes
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран Значение свойства mimeTypes объекта navigator,
document.write(navigator.mimeTypes.length);
II —>
</script>
</body>
</html>
596 Часть III. Справочник по JavaScript
navigator.platform
navigator.platform
Свойство platform объекта navigator используется для определения платформы, на ко-
которой выполняется браузер. Свойство может возвращать следующие значения: Win32,
Winl6, Mac68k, МасРРСа.
В листинге 8.332 приведен пример использования свойства platform.
Листинг 8.332. Пример использования свойства platform
<html>
<body>
<script type="text/javascript" language="JavaScript">
<> —
// Вывести на экран значение свойства platform объекта navigator
document.write(navigator.platform);
II—>
</script>
</body>
</html>
____________ JavaScripU.H
navigator.plugins[число]
Свойство plugins объекта navigator возвращает массив объектов Plugins, который содержит
все подключаемые модули, установленные для текущего браузера. Доступ к определен-
определенному элементу массива осуществляется за счет индексации в массиве с использованием
параметра число.
% В листинге 8.333 приведен пример использования свойства plugins. Для вывода на экран
* всех установленных в браузере подключаемых модулей используется цикл.
Листинг 8.333. Пример использоввния свойства plugins
<html>
<body>
<script type="text/javascript" language="JavaScript">
^ i ,
var plugLength = navigator.plugins.length
// Выполнить цикл по всем подключаемым модулям,
// доступным в браузере
for(i=0; i<plugLength; i++) {
document.write(navigator.plugins[i].name);
}
</script>
</body>
</html>
navigator.plugins.refreshO JavaScriPNav£
navigator.plugins.refresh()
Метод plugins.refreshO объекта navigator используется для поиска вновь установленных
в браузере подключаемых модулей.
В листинге 8.334 приведен пример использования метода plugins.refreshO. Метод
plugins.refreshO вызывается при загрузке документа в окно браузера.
Листинг 8.334. Пример использования методв plugins.refreshO
<html>
<body>
<script type="text/javascript" language="JavaScript">
document.write(navigator.plugins.refresh());
Глава 8. Клиентская сторона
II—>
</script>
</body>
</html>
navigator.preference()
navigator.preference(имя)
navigator.preference(имя, значение)
f Метод preferenceO объекта navigator используется для определения или установки пользо-
пользовательских настроек. По соображениям безопасности определение настроек с помощью
метода preferenceO требует уровня привилегированности UniversalPreferencesRead. Уста-
Установка настроек с помощью метода preferenceO требует уровня привилегий
UniversalPreferencesWrite.
ь0 В листинге 8.335 приведен пример использования метода preferenceO для установки на-
&* стройки.
Листинг 8.335. Пример использования метода preference!)
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Приведенная ниже отрока отключает поддержку Java в браузере
navigator.preference(security.enable_java, false);
//-->
</script>
</body>
</html>
navigator.taintEnabled() JavaScriPM.i+
navigator.taintEnabled()
f Метод taintEnab!ed() объекта navigator используется для указания того, разрешено ли
маркирование данных.
ПРИМЕЧАНИЕ
В Navigator 4 и более поздних аерсиях этот метод отсутствует.
iyj В листинге 8.336 приведен пример использования метода taintEnabled().
Листинг 8.336. Пример использования метода taintEnabled[)
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Определить, разрешено ли в браузере маркирование данных,
if(navigator.taintEnabled()){
document.write("Маркирование данных разрешено");
else{
document.write("Маркирование данных запрещено");
</script>
</body>
</html>
navigator. userAgent
navigator.userAgent
598
Часть III. Справочник по JavaScript
# Свойство userAgent объекта navigator возвращает строку, идентифицирующую браузер. Эта
строка часто пересылается серверам во время выполнения HTTP-запросов данных.
, /% В листинге 8.337 приведен пример использования свойства userAgent.
Листинг 8.337. Пример использования свойства userAgent
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Вернуть значение свойства userAgent. браузера.
document.write(navigator.userAgent);
II —>
</script>
</body>
</html>
JavaScript 1.2+
Nav4+
navigator.unwatch()
navigator.unwatch(prop)
^ Метод unwatch() объекта navigator используется для прекращения отслеживания свой-
свойства, установленного методом watch(). В качестве аргумента он использует один параметр,
prop, указывающий свойство, отслеживание которого прекращается.
Все свойства объекта navigator доступны только для чтения, поэтому пример не приво-
приводится.
JavaScript 1.2+
Nav4+
navigator.watch()
navigator.watch(prop, обработчик)
Метод watch() объекта navigator используется для установки отслеживания изменений
свойств объекта navigator. При изменении значения свойства prop вызывается обработ-
обработчик, заданный параметром обработчик.
Все свойства объекта navigator доступны только для чтения, поэтому соответствующий
пример не приводится.
Option
JavaScript 1.0+, JScript 1.0+
Nav2+, IE3+
Основной объект клиентской части языка JavaScript.
ffiS| Объект Option используется для получения доступа к свойствам списка выбора. Объект
» можно создать с помощью конструктора, указав соответствующие значения. Свойства и
методы объекта Option перечислены в табл. 8.24.
Таблица 8.24. Свойства и методы объекта Option
Тип
Свойство
Метод
Элемент
defaultSelected
selected
text
value
unwatchO
watch ()
Описание
Содержит опцию, по умолчанию выбранную в списке
Содержит выбранную опцию
Содержит текст опции
Содержит значение, которое возвращается при выборе опции
Прекращает отслеживание свойства объекта Option
Устанавливает отслеживание свойства объекта Option
В листинге 8.338 приведен пример внесения опций в список выбора.
Глава 8. Клиентская сторона
Листинг 8.338. Пример использования объекта Option
<html>
<body>
<script
<script type="text/javascript" language="JavaScript">
<! —
// Функция вносит опции в список выбора.
function add(myForm) {
var optionO =■ new Option("Джо", "человек1");
var optionl = new Option("Джейн", "человек2");
var option2 = new Option("Марк", "человекЗ");
var option3 = new Option("Мелисса", "человек4");
for (var i=0; i < 4;
eval("myForm.people.options[i]=option" + i)
}
history.go@)
}
</script>
<form>
<select name="people" multiple></select><p>
<input type="button" уа1ие="Добави!Гь людей" onClick="add(this.form)">
</form>
</body>
</html>
Option.defaultSelected JavaScript 1.1+. Kcript 1.0+
option.defaultSelected
f Свойство defaultSelected объекта Option устанавливает опцию, которая будет по умолчанию
выбранной в списке.
i/$ В листинге 8.339 приведен пример использования свойства defaultSelected. Функция check
Р* определяет опцию, выбранную по умолчанию.
Листинг 8.339. Пример использования свойства defaultSelected
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция определяет опцию, выбранную по умолчанию,
function check(myForm){
for (var i = 0; i < document, f orml.myList. length; i++) {
if (document.forml.myList.options[i].defaultSelected == true) {
alert("По умолчанию установлено значение: 2") ;
II—>
</script>
<form name=forml>
<select name="myList" multiple>
<option value=l>OflHH
<option value=2 selected>flBa
<option value=3>Tpn
<option value=4>4eTbipe
</select><p>
<input type="button" уа1ие="Определить значение по умолчанию"
onClick='check(this.form)■>
</form>
</body>
</html>
bUU Часть III. Справочник по JavaScript
Option. Selected JavaScript^
option.selected
$c§| Свойство selected объекта Option содержит текущую выбранную опцию.
iA(|B листинге 8.340 приведен пример использования свойства selected. Функция check оп-
i>" ределяет, какая опция выбрана.
Листинг 8.340. Пример использования свойства selected
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция определяет выбранную опцию,
function check(myForm){
for (var i = 0; i < document, forml .myList. length; i++) {
i£ (document.forml.myList.options[i].selected == true) {
alert("Выбрано значение:
+ document.forml.myList.options[i].value);
//
</script>
<form name=forml>
<select name="myList" multiple>
<option value=l>OflHH
<option value=2>flBa
<option value=3>Tpn
<option value=4>4eTbipe
</select><p>
<input type="button" value="Определишь текущее значение"
onClick='check(this.form)'>
</form>
</body>
</html>
Option.text JavaScript 1.0+. ScriptTo+
option.text
| Свойство text объекта Option содержит текст выбранной в списке опции.
В листинге 8.341 приведен пример использования свойства text. Функция check опреде-
ляет текст выбранной опции.
Листинг 8.341. Пример использования свойства text
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция определяет текст выбранной опции,
function check(myForm){
for (var i = 0; i < document, forml. myList .length; i++) {
if (document.forml.myList.options[i].selected == true) {
alert("Выбран текст: "
+ document.forml.myList.options[i].text);
</script>
Глава 8. Клиентская сторона UU I
<form name=forml>
<select name="myList" multiple>
<option value=l>OflHH
<option уа1ие=2>Два
<option value=3>Tpn
<option value=4>4ewupe
</select><p>
<input type="button" уа1ие=пределить текст опции"
onClick='check(this.form)'>
</form>
</body>
</html>
Option7unwatch()
option.unwatch(prop)
Метод unwatch() объекта Option прекращает отслеживание свойства prop, установленное
методом watch().
В листинге 8.342 приведен пример использования метода unwatch() для прекращения
отслеживания свойства Option. При щелчке на кнопке Submit (Передать данные) вызы-
вызывается метод setWatch(), который устанавливает отслеживание, а «тем изменяет значе-
значение свойства value объекта Option. Это приводит к вызову функции alertme, которая вы-
выводит в окне браузера результат изменения.
Листинг 8.342. Пример использования метода unwatch[)
<html>
<script type="text/javascript" language="JavaScript">
<! --
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</ЬХЬг>")
return newValue;
}
function setWatch(){
myProp = document.form.myList.value;
watch("myProp",alertme);
myProp = 6;
myProp = 9 ;
}
II —>
</script>
<body>
<form name="form">
<select name="myList" multiple>
<option уа1ие=1>0дин
<option value=2 selected>flBa
<option value=3>Tpn
</select>
<br>
<input type="button" value="nepeflaTb данные" onClick='setWatch()'>
</form>
</body>
</html>
Option.value JavaScript 1.0+.
option.value
f Свойство value объекта Option содержит значение, которое возвращается серверу при
выборе данной опции и передаче формы.
I,/% В листинге 8.343 приведен пример использования свойства value. Функция getValuc оп-
^ ределяет значение выбранной опции.
D Uc_ Часть III. Справочник по JavaScript
Листинг 8.343. Пример использования свойства value
<html>
<body>
<script
<script type="text/javascript" language="JavaScript">
/ / Функция определяет значение выбранной опции.
function getValue(myForm){
for (var i = 0; i < document. forml.myList. length; i++) {
if (document.forml.myList.options[i].selected == true) (
alert("Выбрано значение: "
+ document.forml.myList.options[i].value);
}
II —>
</script>
<form name="forml">
<select name="myList" multiple>
<option уа1ие=1Х)дин
<option value=2>flea
<option value=3>TpM
<option value=4>4etrbipe
</select><p>
<input type="button" value="Определишь значение"
onClick='getValue(this.form)'>
</form>
</body>
</html>
Option.watch() JavaScript^
option.watch(prop, обработчик)
Метод watch() объекта Option используется для установки отслеживания изменений
свойств объекта Option. При изменении значения свойства prop вызывается обработчик,
заданный параметром обработчик.
В листинге 8.344 приведен пример использования метода watch() для отслежения изме-
изменений свойства value объекта Option.
Листинг 8.344. Пример использования метода watch[)
<html>
<head>
<script type="text/javascript" language="JavaScript">
<! —
function aleitme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</ЬХЬг>")
return newValue;
}
function setWatch(){
myProp = document.form.myList.value;
watch("myProp",alertme);
myProp = 6;
myProp = 9;
}
II —>
</script>
</head>
<body>
Глава 8. Клиентская сторона
603
<form name="form">
<select name="myList" roultiple>
<option уа1ие=1>Один
<option value=2 selected>flBa
<option value=3>Tpn
</select>
<br>
<input type="button" value="submit" onClick='setWatch()■>
</form>
</body>
</html>
JavaScript 1.0+, JScript 1.0+
N|-v2+ |E3+ Q^era3+
Основной объект клиентской части языка JavaScript.
Объект Password предоставляет доступ к HTML-элементу, созданному с помощью дес-
дескриптора <input>, значение атрибута type которого установлено равным password. Он
аналогичен стандартному в HTML полю ввода текста, поскольку он также использует-
используется для ввода текста, но вместо отображения текста в открытом виде в объекте Password
набираемые символы заменяются на звездочки (*). Методы и свойства объекта Password
перечислены в табл. 8.25.
Тип
Свойство
Метод
Событие
Таблица
Элемент
defaultValue
form
name
type
value
blur()
focus()
handleEvent()
selectO
unwatch()
watch ()
onBlur
onFocus
8.25. Свойства, методы и события объекта Password
Описание
Содержит значение атрибута value объекта Password
Указывает на форму, в которой содержится данное поле ввода
пароля
Содержит значение атрибута name объекта Password
Содержит значение атрибута type объекта Password
Содержимое поля ввода пароля в данный момент
Убирает фокус из поля ввода пароля
Устанавливает фокус на поле ввода пароля
Вызывает обработчик событий
Выделяет текст, введенный в поле ввода пароля
Прекращает слежение за свойством объекта Password
Устанавливает слежение за свойством объекта Password
Обработчик событий, который используется при потере фокуса
полем ввода пароля
Обработчик событий, который используется при получении
фокуса полем ввода пароля
В листинге 8.345 приведен пример использования объекта Password для считывания тек-
текста, введенного в поле ввода пароля.
Листинг 8.345. Пример использования объекта Password
<html>
<body>
<form name="fonnl">
<input type="PASSWORD" Name="pass" size=0">
<br>
Часть III. Справочник по JavaScript
<input type="BUTTON" value="Oio6paSHiib пароль"
onClick=' alert (document., forml .pass .value) ' >
</form>
</body>
</html>
Password.blur()
password.blur()
# Метод Ыиг() объекта Password используется для перемещения фокуса с поля ввода па-
пароля.
В листинге 8.346 приведен пример перемещения фокуса с поля ввода пароля.
Листинг 8.346. Пример использования метода Ыиг[)
<html>
<body>
<script type="text/javascript" language="JavaScript">
<> —
// Функция, которая переносит фокус с поля ввода пароля
// после щелчка на кнопке.
function shift(){
document.forml.pass.blur();
document.forml.txt.value="Получить фокус";
}
II —>
</script>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0">
<br>
<input type="Text" name="txt" size=0">
<br>
<input type="BUTTON" уа1ие="Показа!Гь пароль" onClick='shift()■>
</form>
</body>
</html>
Password.defaultValue Ja^SrTpt i.o+. «cript ш
password.defaultValue
& Свойство defaultValue объекта Password используется для определения значения HTML-
атрибута value (значения) поля ввода пароля.
В листинге 8.347 приведен пример использования свойства deiaultValue для определения
значения поля ввода пароля.
Листинг 8.347. Пример использования свойства defaultValue
<html>
<body>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0" value="passl23">
<br>
<input type="BUTTON" value="Отобразить пароль"
onClick='alert(document.forml.pass.defaultValue)'>
</form>
</body>
</html>
Password.focusO
password.focus()
\ Метод focus() объекта Password используется для установки фокуса на поле ввода га-
роля.
Глава 8. Клиентская сторона faUo
листинге 8.348 приведен пример переноса фокуса на поле ввода пароля.
Листинг 8.348. Пример использования метода focus[)
<html>
<body>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BUTTON" value="OTo6paSHTb пароль"
onClick='document.forml.pass.focus() '>
</form>
</body>
</html>
password.form
|Sj Свойство form объекта Password используется для получения доступа к объекту Form,
» в котором находится данное поле ввода пароля.
В листинге 8.349 приведен пример использования свойства form для определения име-
имени формы.
Листинг 8.349. Пример использования свойства form
<html>
<body>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BUTTON" value="Отобразить имя формы"
onClick='alert(document.forml.pass.form.name)'>
</form>
</body>
</html>
p^v7ord.handleEvent(j
password.handleEvent(событие)
Метод haiidlcEvciit() объекта Password используется для обработки событий указанного
в аргументе типа событие.
В листинге 8.350 приведен пример использования метода handleEveni() для обработки
события Click после щелчка на кнопке.
Листинг 8.350. Пример использования метода handleEventf)
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата документом событий CHANGE.
document.captureEvents(Event.CHANGE);
//Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handleChange(evnt){
window.document.pass.handleEvent(evnt);
}
function showMsg(){
alert("Пароль изменен.");
}
// Приведенная ниже строка регистрирует функцию handleChange в
// качестве обработчика событий CHANGE,
document.onChange = handleChange;
II —>
</script>
DUD Часть III. Справочник по JavaScript
<form name="forml">
Введите пароль:
<input type="PASSWORD" name="pass" size=5" onChange='showMsg()'>
</form>
</body>
</html>
Password, name
password.name
Свойство name объекта Password используется для определения значения HTML-атри-
HTML-атрибута name поля ввода пароля.
В листинге 8.351 приведен пример использования свойства name. При щелчке на кноп-
кнопке на экран выводится окно предупреждения, в котором указывается значение свойства
name объекта Password.
Листинг 8.351. Пример использования свойства пате
<html>
<body>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BOTTON" value="Отобразить имя поля"
onClick='alert(document.forml.pass.name)'>
</form>
</body>
</html>
Password.onBlur
onBlur="команда"
# Обработчик событий onBlur объекта Password используется для обработки события, ко-
которое происходит при потере фокуса полем ввода пароля.
I/J& ^ листинге 8.352 приведен пример использования обработчика событий onBlur.
Листинг 8.352. Использования обработчика событий onBlur
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция, которая устанавливает значение текстового поля,
function setTxt(){
document.forml.txt.уа1ие="Установка";
</script>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0" onBlur='setTxt()'>
<br>
<input type="Text" name="txt" size=0" >
</form>
</body>
</html>
Password.onFocus
onFocus="команда"
Обработчик событий onFocus объекта Password используется для обработки события Focus
поля ввода пароля.
В листинге 8.353 приведен пример использования обработчика событий onFocus.
Глава 8. Клиентская сторона 607
Листинг 8.353. Использования обработчика событий onFocus
<html>
<body>
<script type="text/javascript" language="JavaScript">
<!--
// Устанавливает значение текстового поля
function set(){
document.forml.pass.value="ahal23";
>
//-->
</script>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0" onFocus='set()'>
<br>
<input type="BUTTON" уа1ие="Отобраэить имя формы" >
</form>
</body>
</html>
Password selectH JavaScript 1.0+, JScript 1.0+
rasswora.seieciu Nav2+ |£3+ Opera3+
password.select()
f Метод select() объекта Password используется для вьшеления значения, введенного в поле
ввода пароля. Выделенное значение подсвечивается на экране.
i/$B листинге 8.354 приведен пример выделения содержимого текстового поля.
Листинг 8.354. Пример использования метода select!)
<html>
<body>
<form narae="forml">
<input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BUTTON" value="Выбрать пароль"
onClick='document.forml.pass.select() '>
</form>
</body>
</html>
Password tvne JavaScript 1.1+, JScript 1.0+
Kasswora.iype Nav3+ |E3+ Opera3+
password.type
f Свойство type объекта Password используется для определения значения HTML-атрибу-
HTML-атрибута type поля ввода пароля. Для объекта Password это значение всегда равно password.
В листинге 8.355 приведен пример использования свойства (уре. При нажатии на кнопку на
экран выводится окно предупреждения, в котором указывается значение свойства type.
Листинг 8.355. Пример использования свойства type
<html>
<body>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BUTTON" value="Определить тип"
onClick='alert(document.forml.pass.type)'>
</form>
</body>
</html>
Password.unwatch()
password.unwatch(prop)
bUo Часть III. Справочник по JavaScript
# Метод unwatch() объекта Password прекращает отслеживание свойства prop, установленное
с помощью метода watch().
,^j В листинге 8.356 приведен пример использования метода unwatch() для прекращения
отслеживания свойства value объекта Password.
Листинг 8.356. Пример использования метода unwatchf) объекта Password
<html>
<script type="text/javascript" language="JavaScript">
function alertme(id,oldValue,newValue)
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</Ь>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
function setWatch(){
myPass = document.forml.pass.value;
watch("myPass",alertme);
myPass = "abcl23";
unwatchf"myPass");
myPass = "purejs2";
</script>
<form name="forml">
Введите пароль <input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BUTTON" уа1ие="Передать данные" onClick='setWatch()'>
</form>
</body>
</html>
Password.value
password.value
fe Свойство value объекта Password используется для определения значения, введенного в
поле ввода пароля.
| В листинге 8.357 приведен пример использования свойства value.
Листинг 8.357. Пример использования свойства value
<html>
<body>
<form name="forml">
<input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BUTTON" value="Определить значение"
onClick='alert(document.forml.pass.value)'>
</form>
</body>
</html>
Password.watch() $
password.watch(prop, обработчик)
Метод watch() объекта Password используется для установки отслеживания изменений
свойств объекта Password. При изменении значения свойства prop вызывается обработ-
обработчик, указанный в параметре обработчик.
Глава 8. Клиентская сторона ЬиУ
В листинге 8.358 приведен пример использования метода watch() для сообщения пользо-
пользователю об изменении значения свойства value объекта Password в функции changeValue().
Листинг 8.358. Пример использования метода watch()
<html>
<scr±pt type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</b>"+ " на " + "<b>" + newvalue + "</bXbr>")
return newvalue;
}
function setWatch(){
myPass = document.forml.pass.value;
watch("rayPass",alertme);
myPass = "abcl23";
}
II —>
</script>
<form name="forjBl">
Введите пароль <input type="PASSWORD" Name="pass" size=0">
<br>
<input type="BOTTON" уа1ие="Передать данные" onClick=•setWatch()•>
</form>
</body>
</html>
Phmin JavaScript 1.1+, JScript 1.0+
r UH" Nav3+, IE3+, Opera3+
Основной объект клиентской части языка JavaScript.
\ Объект Plugin используется для извлечения из браузера данных о подключаемых моду-
модулях. Объект Plugin содержит массив элементов, в котором находятся типы MIME, под-
поддерживаемые каждым модулем. Свойства и методы объекта Plugin перечислены в табл. 8.26.
Таблица 8.26. Свойства и методы объекта Plugin
Тип
Свойство
Метод
Элемент
description
filename
length
name
unwatch()
watch()
Описание
Содержит описание подключаемого модуля
Содержит имя файла подключаемого модуля
Определяет количество поддерживаемых MIME-типов
Содержит имя подключаемого модуля
Прекращает отслеживание свойства объекта Plugin
Устанавливает отслеживание свойства объекта Plugin
В листинге 8.359 приведен пример, в котором на экран выводятся все поддерживаемые
браузером подключаемые модули.
Листинг 8.359. Пример использования объекта Plugin
<html>
<body>
<script type="text/javascript" language="JavaScript">
//Функция, которая выводит на экран все подключаемые модули браузера
for(i=0; i<navigator.plugins.length; i++){
document.write(navigator.plugins[i].description);
Б \ U Часть III. Справочник по JavaScript
</script>
</body>
</html>
Plugin.description
plugin.description
Свойство description объекта Plugin используется для получения описания подключа-
подключаемого модуля браузера.
В листинге 8.360 приведен пример использования свойства description.
Листинг 8.360. Пример использования свойства description
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Вывести на экран описание первого подключаемого модуля
document.write(navigator.plugins[О].description);
</script>
</body>
</html>
Plugin.filename
plugin.filename
Свойство filename объекта Plugin используется для получения пути к подключаемому
модулю и имени подключаемого модуля.
В листинге 8.361 приведен пример использования свойства filename.
Листинг 8.361. Пример использования свойства filename
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Вывести на экран имя файла первого подключаемого модуля.
document.write(navigator.plugins[О].filename);
II—>
</script>
</body>
</html>
JavaScript 1.1+, JScript 1.0+
Nav3+, IE3+, Opera3+
plugin.length
# Свойство length объекта Plugin используется для получения количества типа данных
MIME, поддерживаемых данным подключаемым модулем.
иЛВ листинге 8.362 приведен пример использования свойства length.
Листинг 8.362. Пример использования свойства length
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Вывести на экран количество подключаемых модулей.
document.write(navigator.plugins.length);
II —>
</script>
</body>
</html>
Глава 8. Клиентская сторона Ы 1
Phinin пяшр JavaScript 1.1+, JScript 1.0+
Kiugin.name Na>;3+ 1E3+ 0£era3+
plugin.name
$c& Свойство name объекта Plugin используется для получения имени подключаемого модуля.
В листинге 8.363 приведен пример использования свойства паше.
Листинг 8.363. Пример использования свойства name
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Вывести на экран имя первого подключаемого модуля.
document.write(navigator.plugins[0].name);
//-->
</script>
</body>
</html>
Plugin.UMWatchO JawaScript^i-2-i-
plugin. unwatch (prop)
Метод unwatch() объекта Plugin используется для прекращения отслеживания свойства
объекта Plugin. В качестве аргумента передается свойство prop, отслеживание которого пре-
прекращается.
sBce свойства объекта Plugin доступны только для чтения, поэтому соответствующий при-
мер не приводится.
Plug'm.watchO JavaScrlptJ.2+
plugin.watch (prop, обработчик)
Метод wa(ch() объекта Plugin используется для установки отслеживания изменений
свойств объекта Password. При изменении значения свойства prop вызывается обработ-
обработчик, заданный параметром обработчик.
Все свойства объекта Plugin доступны только для чтения, поэтому соответствующий при-
мер не приводится.
РяНт JavaScript 1.0+, JScript 1.0+
Radl° Nav2+, JE3+, Opera3+
Основной объект клиентской части языка JavaScript.
f Объект Radio представляет собой переключатель, помещенный на HTML-форме. Пере-
Переключатель создается с помощью HTML-дескриптора <input>, значение атрибута type кото-
которого установлено равным radio. Свойства и методы объекта Radio представлены в табл. 8.27.
Таблица
Тип Элемент
Свойство checked
defaultChecked
form
name
type
value
8.27. Свойства, методы и события объекта Radio
Описание
Указывает, установлен переключатель или снят
Содержит значение атрибута
Указывает на объект Form, в
переключатель
Содержит значение атрибута
Содержит значение атрибута
Содержит значение атрибута
checked HTML-дескриптора <input>
котором находится данный
name HTML-дескриптора <input>
type HTML-дескриптора <input>
value HTML-дескриптора <input>
612
Тип
Метод
Событие
Элемент
Ыиг()
click()
focus()
handleEvent()
unwatch()
watch()
onBlur
onClick
onFocus
Часть III. Справочник по JavaScript
Описание
Убирает фокус из объекта Radio
Имитирует щелчок кнопкой мыши на переключателе
Устанавливает фокус на объект Radio
Вызывает обработчик, который используется для указанного
события по умолчанию
Прекращает отслеживание свойства объекта Radio
Устанавливает отслеживание свойства объекта Radio
Обработчик событий Blur
Обработчик событий Click
Обработчик событий Focus
JavaScript 1.0+, JScript 1.0+
Nav2+, IE3+, Opera3+
В листинге 8.364 показан пример создания переключателя и использования его свойства
name.
Листинг 8.364. Пример использования объекта Radio
<html>
<body>
<form name="forml">
<input type="radio" name=buttonl
onClick='alert(document.forml.buttonl.name)'>Переключатель 1
<br>
<input type="radio" name="button2">nepeKnB4aTenb 2
<br>
</form>
</body>
</html>
Radio.blur()
radio.blur()
k Метод blur() объекта Radio используется для переноса фокуса с переключателя.
В листинге 8.365 приведен пример использования метода blur() для переноса фокуса с
переключателя. При щелчке на кнопке Remove Focus (Убрать фокус) фокус убирается с
переключателя и на экран выводится сообщение.
Листинг 8.365. Пример использования метода ЫигО
<html>
<body>
<script type="text/javascript" language="JavaScript">
// Функция убирает фокус с переключателя,
function change(){
document.forml.buttonl.blur();
document.forml.textl.value-"Переключатель потерял фокус";
II—>
</script>
<form name="forml ">
<input type="radio" name="buttonl" CHECKED>Box 1
<br>
<input type="radio" name="button2">Box 2
<br>
<input type="button" value="y6paTb фокус" onClick='change(}■>
<br>
Глава 8. Клиентская сторона Ь I о
<input type="text" name="textl" size=5">
</form>
</body>
</html>
RaHin rhorkoH JavaScript 1.0+, JScript 1.0+
Radio, checked nhv2+ lE3+ QHera3+
radio.checked
\ Свойство checked объекта Radio представляет собой булево значение, которое использу-
используется для определения того, установлен ли переключатель или снят.
В листинге 8.366 приведен пример определения состояния переключателя с помощью
свойства checked.
Листинг 8.366. Пример использования свойства checked
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция проверяет, установлен ли переключатель buttonl и
// выводит на экран соответствующее сообщение.
function checkButton(){
if(document.forml.buttonl.checked == true){
alert("Переключатель 1 установлен");
}
else if(document.forml.button2.checked == true){
alert("Переключатель 2 установлен");
//
</script>
<form name="forml">
<input type="radio" пате="Ьи^оп1">Переключатель 1
<br>
<input type="radio" name="button2" СНЕСКЕБ>Переключатель 2
<br>
<INPUT type="button" value="Проверить состояние переключателей"
onClick='checkButton()'>
</form>
</body>
</html>
p9Hin n\\n\fl\ JavaScript 1.0+, JScript 1.0+
Radio.click() N£v2 |fe ojera3+
radio.click()
^Свойство click() объекта Radio используется для имитации щелчка кнопкой мыши на
переключателе.
В листинге 8.367 приведен пример определения состояния переключателя с помощью
свойства checked.
Листинг 8.367. Пример использования свойства click()
<html>
<body>
При щелчке на кнопке Simulate Click (Имитировать щелчок) будет уста-
установлен Переключатель 2, поскольку имитируется щелчок кнопкой мыши.
<form name="forml">
<input type="radio" narae="buttonl" СНЕСКЕОПереключатель 1
<br>
<input type="radio" папе="Ьи^оп2">Переключатель 2
<br>
<input type="button" value="HMHTnpoBaTb щелчок"
onclick='document.forml.button2.click()'>
</form></body></htral>
6 \ 4 Часть III. Справочник по JavaScript
Radio.defaultChecked
radio.defaultChecked
Свойство defaultChecked объекта Radio представляет собой булево значение, которое ука-
указывает переключатель, который содержит HTML-атрибут checked. Если объект Radio со-
содержит атрибут checked, возвращается значение true. В противном случае возвращается
значение false.
В листинге 8.368 приведен пример использования свойства defaultChecked для определе-
определения того, какой переключатель установлен по умолчанию.
Листинг 8.368. Пример использования свойства defaultChecked
<html>
<body>
<script type="text/javascript" language="JavaScript">
function checkBox(){
if(document.forml.buttonl.defaultChecked == true){
alert("По умолчанию установлен Переключатель 1") ;
else if(document.forral.button2.defaultChecked == true){
alert("По умолчанию установлен Переключатель 2") ;
</script>
<form name="forml">
<input type="radio" пате="Ьи^оп1">Переключатель 1
<br>
<input type="radio" name="button2" CHECKEDS-Переключатель 2
<br><br>
<input type="button" value—''Переключатель,установленный по умолчанию"
onClick='checkBox()'>
</form>
</body>
</html>
JavaScript 1.0+, JScript 1.0+
Nav2+, IE3+, Opera3+
radio.focus()
Метод focus() объекта Radio используется для установки фокуса на переключатель.
В листинге 8.369 приведен пример использования метода focus() для установки фокуса
на переключатель.
Листинг 8.369. Пример использования метода focusl)
<html>
<body>
<form name="forml">
<input type="radio" name="buttonl">Переключатель 1
<br>
<input type="radio" name="button2">Переключатель 2
<br><br>
<input type="button" value="Перенести фокус на Переключатель 1"
onClick='document.forml.buttonl.focus О '>
</form>
</body>
</html>
Radio form JavaScript 1.0+, JScript 1.0+
radio.form
^Свойство form объекта Radio используется для получения доступа к объекту Form, в
котором содержится переключатель.
Глава 8. Клиентская сторона Б \ 5
В листинге 8.370 приведен пример использования свойства form для определения име-
имени формы, в которой содержится объект Radio.
Листинг 8.370. Пример использования свойствв form
<html>
<body>
<form name="forml">
<input type=" radio" пате="Ьи^оп1">Переключатель 1
<br>
<input type="radio" пагое="ЬиЪЪоп2">Переключа!гель 2
<br><br>
<input type="button" уа1ие="Определить имя формы"
onClick='alert("Имя формы: " + document.forml.button1.form.name)'>
</form>
</body>
</html>
Radio.handleEvent()
radio.handleEvent(событие)
Метод handteEvent() объекта Radio вызывает обработчик событий указанного типа.
В листинге 8.371 приведен пример использования метода handleEvent() для перехвата всех
событий CLICK и передачи их обработчику событий but!.
Листинг 8.371. Пример использования методв handleEventO
<html>
<body>
<script type="text/javascript" languages"JavaScript">
<! —
// Установка перехвата документом событий CLICK.
document.captureEvents(Event.CLICK);
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handledick (evnt) {
window.document.butl.handleEvent(evnt);
}
function showMsg(){
alert("Кнопка нажата.");
}
// Приведенная ниже строка регистрирует функцию handleClick в
// качестве обработчика событий СЫСК,
document.onClick = handleClick;
</script>
<form name="forml">
<input type="radio" name="butl" onClick='showMsg()'>Выбор 1
<br>
<input type="radio" name="butl" onClick='showMsg()'>Выбор 2
<br>
</form>
</body>
</html>
Rariin namp JavaScript 1.0+, JScript 1.0+
Radio, name №ну2+ |ЕЗ+ QHera3+
radio.name
^Свойство name объекта Radio представляет собой атрибут name HTML-дескриптора
<input>, который использовался для создания данного объекта Radio. Это позволяет ссы-
ссылаться на объект Radio по имени.
6 \ 6 Часть III. Справочник по JavaScript
В листинге 8.372 приведен пример использования свойства name объекта Radio для по-
получения доступа к свойствам объекта.
Листинг 8.372. Получение доступа к объекту Radio по имени
<html>
<body>
<form name="forml">
<input type="radio" пате="туВШ:<:оп">Переключатель 1
<ЬгХЫ>
<input type="button" value="OnpefleflMTb имя"
onClick='alert("Имя переключателя: " +
document.forml.myButton.name)'>
</form>
</body>
</html>
Radio.onBlur
onBlur="команда"
Свойство onBIur представляет собой обработчик событий объекта Radio, который вызы-
вызывается при потере переключателем фокуса.
В листинге 8.373 приведен пример использования обработчика событий onBIur для оп-
определения момента потери фокуса определенным переключателем.
Листинг 8.373. Пример использования обработчика событий onBIur
<html>
<body>
<script type="text/javascript" language="JavaScript">
function showChange(){
document.forml.textl.value = "Переключатель потерял фокус";
</script>
<form name="forml">
Сначала щелкните на переключателе, а Затем на текстовой области.
<ЬгХЬг>
<input type="radio" name="buttonl" onBlur=' showChange () ■ МЗереключатель 1
<br>
Щелкните на текстовой области.
<input type="text" name="textl" size=0">
<br>
</form>
</body>
</html>
Radio.OnClick JavaScript 1.0+, JScript 1.0+
onClick="команда"
^ Свойство onClick представляет собой обработчик событий объекта Radio, который вызы-
вызывается при щелчке на переключателе кнопкой мыши.
В листинге 8.374 приведен пример использования обработчика событий onClick для оп-
определения момента щелчка на переключателе кнопкой мыши.
Листинг 8.374. Пример использования обработчикв событий onClick
<html>
<body>
<form name="forml">
<input type="radio" name="buttonl" onClick-'alert("На этом объекте
«была произведен щелчок кнопкой мыши")'>Переключатель 1
<Ьг>
</form></body></html>
Глава 8. Клиентская сторона Ь А /
Radio.onFocus()
onFocus="команда"
Обработчик событий onFocus представляет собой обработчик событий объекта Radio, ко-
который вызывается при получении переключателем фокуса.
В листинге 8.375 приведен пример использования обработчика событий onFocus для оп-
ределения момента получения переключателем фокуса.
Листинг 8.375. Пример использования обработчика событий onFocus
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Функция устанавливает фокус на Переключатель 1
function showFocus(){
document.forml.textl.value = "Фокус установлен на Переключатель 1";
}
//-->
</script>
<form name="forml">
Нажмите переключатель
<ЬгХЬг>
<inputtype=" radio" name="buttonl" onFocus=' showFocus () • >Переключатель 1
<ЬгХЫ>
<input type="text" name="textl" size=0">
</form>
</body>
</html>
Rariin tvnp JavaScript 1.0+, JScript 1.0+
нашодуре мну2+ |E3+ jper33+
radio.type
Свойство type объекта Radio представляет собой атрибут type HTML-дескриптора <input>.
Для переключателя значение этого свойства всегда равно radio.
В листинге 8.376 приведен пример использования свойства type.
Листинг 8.376. Пример использования свойстаа type
<html>
<body>
<form name="forml">
<input type="radio" name="buttonl">Переключатель 1
<br><br>
<input type="button" value="Определить тип"
onClick='alert("Тип объекта: " + document, forml .buttonl. type) '>
</form>
</body>
</html>
Radio.unwatch() J
radio.unwatch(prop)
Метод unwatchO объекта Radio используется для прекращения слежения свойства prop
объекта, установленного с помощью метода watch().
В листинге 8.377 приведен пример использования метода unwatchQ для прекращения
отслеживания свойства объекта myRadio.
Листинг 8.377. Пример использования метода unwatchO
<html>
<script type="text/javascript" language="JavaScript">
О \ О Часть III. Справочник по JavaScript
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</Ь>"+ " на " + "<Ь>" + newValue + "</bXbr>")
return newValue;
}
function setWatch(){
myRadio = document.forml.buttonl.value;
watch("myRadio",alertme);
myRadio = 4;
unwatch("myRadio");
myRadio = 6;
}
II —>
</script>
<body>
<form name="forml">
<input type="radio" name="buttonl" value="l">nepemno4a!renb 1
<br><br>
<input type="button" value="OnpeflejiM!Tb значение" onClick='setWatch()'>
</form>
</body>
</html>
Rariin valnp JavaScript 1.0+, JScript 1.0+
Hamo.vaiue Na^v2+ |E3+ 0£era3+
radio.value
Sj| Свойство value объекта Radio представляет собой атрибут value HTML-дескриптора
<input>, который использовался для создания данного переключателя.
В листинге 8.378 приведен пример использования свойства value.
Листинг 8.378. Пример использования свойства value
<html>
<body>
<form name="forml">
<input type="radio" name="buttonl" value=">Переключагель 1
<br><br>
<input type="button" уа1ие="Определи!гь Значение"
onClick='alert("Значение объекта: "+ document.forml.buttonl.value)'>
</form>
</body>
</html>
Radio.watchO S
radio.watch(prop, обработчик)
Метод watch() объекта Radio используется для установки отслеживания изменений
свойств объекта Radio. При изменении значения свойства prop вызывается обработчик,
указанный с помощью параметра обработчик.
В листинге 8.379 приведен пример использования метода watch() для установки отсле-
отслеживания свойства value объекта Radio.
Листинг 8.379. Пример использования метода watch() для свойства value
объекта Radio
<html>
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</b>"+ " на " + "<b>" + newValue + "a")
return newValue;
Глава 8. Клиентская сторона Ь I У
function setWatch()(
myRadio = document.forml.button!.value;
watch("myRadio",alertme);
myRadio = 11;
myRadio = ";
//>
</script>
<body>
<form name="forml">
<input type="radio" name="buttonl"
<br><br>
<input type="button" value="OnpeHeflM!Tb значение" onClick='setWatch()•>
</form>
</body>
</html>
JavaScript 1.2+, JScript 1.0+
Nav4+, IE3+
Основной объект клиентской части языка JavaScript.
Объект Reset представляет собой кнопку Reset (Сброс) на HTML-форме. Эта кнопка со-
создается с помощью HTML-дескриптора <input>, значение атрибута type которого уста-
установлено равным reset. Кнопки Reset используются для очистки форм. Свойства и мето-
методы объекта Reset перечислены в табл. 8.28.
Таблица 8.28. Свойства, методы и события объекта Reset
Тип Элемент
Свойство form
name
type
value
Метод blur()
ctick()
focus()
handteEvent()
unwatch()
watch()
Событие onBlur
onCtick
onFocus
Описание
Содержит имя формы, в которой находится данная кнопка Reset
Содержит значение атрибута name кнопки Reset
Содержит значение атрибута type кнопки Reset
Содержит значение атрибута value кнопки Reset
Убирает фокус из кнопки Reset
Имитирует щелчок мышью на кнопке Reset
Устанавливает фокус на кнопку Reset
Вызывает обработчик, который используется для указанного
события по умолчанию
Прекращает отслеживания свойства объекта Reset
Устанавливает отслеживания свойства объекта Reset
Обработчик событий Blur
Обработчик событий Click
Обработчик событий Focus
1Д В листинге 8.380 показан синтаксис использования объекта Reset.
Листинг 8.380. Пример использования объекта Reset
<html>
<body>
<form name="forml">
Для очистки формы щелкните на кнопке "Очистить".
<ЬгХЬгХЬг>
Введите имя: <input type="text" Name="name" Size=5">
<br>
Ь С. U Часть III. Справочник по JavaScript
Введите номер телефона: <input type="text" Name="phone" Size=0">
<br><br>
<input type="reset" name="resetbutton" value="O4HCTH0!b">
<br>
<br>
</form>
</body>
</html>
Reset blurH JavaScript 1.0+, JScript 1.0+
w Nav2+, IE3+, Opera3+
reset.blur()
fipjb Метод blur() объекта Reset используется для переноса фокуса с кнопки Reset (Сброс).
В листинге 8.381 приведен пример использования метода Ыиг().
Листинг 8.381. Пример использования метода Ыиг()
<html>
<body>
<script type="text/javascript" languages"JavaScript">
// При потере кнопкой Reset фокуса иа экран выводится
// соответствующее сообщение,
function showMsgO {
document.forml.msg.value="KHonKa Очистить потеряла фокус";
</script>
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<br>
Сообщение: <input type="text" Name-"msg" Size=0">
<br>
<input type="reset" name="resetbutton" value="Очистить"
onBlur='showMsg()'>
<br>
<br>
</form>
</body>
</html>
Dpcpt r\\rkl\ JavaScript 1.0+, JScript 1.0+
Reset.ciicK() ^ |£3+ j
reset.click()
j| Метод click() объекта Reset используется для имитации щелчка мышью на кнопке "Очи-
"Очистить".
В листинге 8.382 приведен пример использования метода click().
Листинг 8.382. Пример использования метода clickO
<html>
<body>
<script type="text/javascript" language^"JavaScript">
function clickReset() {
document.forml.resetbutton.click();
function inform(){
alert("Была выполнен щелчок на кнопке Очистить");
II —>
</script>
Глава 8. Клиентская сторона Б С. \
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<ЬгХЬг>
<input type="reset" name="resetbutton" уа1ив="О«истии>°
onClick='inform() ■>
<br>
<br>
<input type="button" уа1ие="Имитировать нажатие" onClick=' clickReset () ' >
</form>
</body>
</html>
JavaScript 1.1+, JScript 1.0+
Na«;3+ |E3+ 0^era3+
reset.focus()
| Метол focus() объекта Reset используется для установки фокуса на кнопке "Очистить".
% В листинге 8.383 приведен пример использования метода focus().
Листинг 8.383. Пример использования метода focus()
<html>
<body>
<script type="text/iavascript" language="JavaScript">
<! —
function focusReset{){
document.forml.resetbutton.focus();
}
</script>
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<br><br>
<input type="reset" name="resetbutton" value="Reset">
<br>
<br>
<input type="button" value="Установить фокус на кнопку Очистить"
onClick='focusReset()'>
<br>
</form>
</body>
</html>
Pccdt fnrm JavaScript 1.0+, JScript 1.0+
Reset.torm ^^ |E3+ ^pera3+
reset.form
Свойство form объекта Reset используется для определения имени формы, в которой
содержится данная кнопка "Очистить".
В листинге 8.384 приведен пример использования свойства form.
Листинг 8.384. Пример использования свойства form
<html>
<body>
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<br><br>
<input type="reset" name="resetbutton" value="Очистить"
onClick='alert("Имя формы: "+document.forml.resetbutton.form.name)*>
<br><br>
</formX/body></html>
622 Часть III. Справочник по JavaScript
Reset.handleEvent()
reset.handleEvent(событие)
$& Метод handIeEvent() объекта Reset вызывает обработчик событий объекта.
В листинге 8.385 приведен пример использования метода handleEventQ.
Листинг 8.385. Пример использования метода handleEvent()
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
// Установка перехвата документом событий CLICK.
document:. captureEvents (Event.CLICK) ;
// Функция обработки события. Параметр evnt представляет собой
// ссылку на объект Event,
function handleMyClick(evnt){
window.document.resetbutton.handleEvent(evnt);
}
function showMsgO {
alert("Данные формы очищены");
}
// Приведенная ниже строка регистрирует функцию handleClick в
// качестве обработчика событий CLICK.
document.onclick = handleMyClick;
II—>
</script>
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name-"phone" Size=0">
<br><br>
<input type="reset" name="resetbutton" value="
onClick='showMsg()'>
<br>
<br>
</form>
</body>
</html>
Reset.name
reset.name
Свойство name объекта Reset содержит имя кнопки "Очистить", переданное ей в атри-
атрибуте name HTML-дескриптора <input type="reset">.
В листинге 8.386 свойство name используется для выдачи пользователю сообщения об
активном фрейме.
Листинг 8.386. Пример использования свойства name
<html>
<body>
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<brXbr>
<input type="reset" name="resetbutton" уа1ие="Очистить"
onClick='alert("Имя кнопки Очистить: " +
document.foral.resetbutton■name)'>
<brXbr>
</form></bodyX/html>
Глава 8. Клиентская сторона 623
nnBlnr JavaScript 1.1+, JScript 1.0+
.опвшг N^3+< |E3+ онрега3+
onBlur="команда"
j Свойство onBlur объекта Reset представляет собой обработчик событий, который вызы-
вызывается при потере фокуса кнопкой "Очистить".
В листинге 8.387 приведен пример использования обработчика событий on Blur.
Листинг 8.387. Пример использования обработчика событий onBlur
<html>
<body>
<script type="text/javascript" language="JavaScript">
<! —
function setMsgO {
document.forml.textl.value = "Объект Reset потерял фокус";
}
</script>
<form name="forml">
Щелкните на кнопке "Очистить", а затем на текстовой области.
<ЬгХЬг>
Введите имя: <input type="text" Name="name" Size=5">
Введите номер телефона: <input type="text" Name="phone" Size=0">
<br><br>
Сообщение: <input type="text" name="textl" size=5">
<ЫХЬг>
<input type="reset" name="resetbutton"
value="O»HCTKilb" onBlur=' setMsg () ">
<br><br>
</form>
</body>
</html>
Rpcpt nnPlirk JavaScript 1.1+, JScript 1.0+
Heset.oncnck н^ |ЕЗ+ онрега3+
onClick="команда"
% Сюйство onClick представляет собой обработчик событий, который вызывается при щелчке
' кнопкой мыши на копке "Очистить".
В листинге 8.388 приведен пример использования обработчика событий onClick.
Листинг 8.388. Пример использования обработчика событий onClick
<html>
<body>
<form name°"forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<br><br>
<input type="reset" name="resetbutton" value="OVHCTHTb"
onClick='alert("Была нажата кнопка Очистить")■>
<br><br>
</form>
</body>
</html>
Reset.onFoCUS JavaScript 1.2+, ECMAScript 1.0+, JScript 1.0+
Nav4+, IE3+
onFocus="команда"
& Свойство onFocus объекта Reset представляет собой обработчик событий, который вы-
' зывается при получении кнопкой "Очистить" фокуса.
Ь С. 4 Часть III. Справочник по JavaScript
В листинге 8.389 приведен пример использования обработчика событий onFocus.
Листинг 8.389. Пример использования обработчика событий onFocus
<html>
<body>
<script type="text/javascript" languages"JavaScript">
<! —
function setMsgO {
document.form2.textl.value = "Кнопка Очистить получила фокус";
}
II —>
</script>
<form name="forml">
Щелкните на кнопке "Очистить".
<ЬгХЬг>
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<ЬгХЬг>
<input type="reset" name="resetbutton"
уа1ие="Очисигаь" onFocus='setMsg()'>
<br>
</form>
<form name="form2">
<br><br>
Сообщение: <input type="text" name="textl" size=5">
</form>
</body>
</html>
Reset.type JavaScript 1.2+, ECMAScript 1.0+
reset.type
Сюйство type объекта Reset представляет собой атрибут type кнопки "Очистить". Для кноп-
ки "Очистить" значение этого свойства всегда равно reset.
В листинге 8.390 приведен пример использования свойства type.
Листинг 8.390. Пример использования свойства type
<html>
<body>
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите номер телефона: <input type="text" Name="phone" Size=0">
<br><br>
<input type="reset" name="resetbutton" value="Очистить"
onClick='alert("Тип объекта: " + document.forml.resetbutton.type)'>
<br>
<br>
</form>
</body>
</html>
Reset.unwatch()
reset.unwatch(prop)
Метод unwatch() объекта Reset используется для прекращения отслеживания свойства,
установленного с помощью метода watch(). Метод принимает один параметр — свойство,
отслеживание которого прекращается.
В листинге 8.391 приведен пример использования метода unwatch() для прекращения
отслеживания свойства value объекта Reset.
Глава 8. Клиентская сторона О С. 5
Листинг 8.391. Пример использования метода unwatchO объекта Reset
<html>
<script type="text/javascript" language="JavaScript">
^i
function alertme (id,oldValue,newValue)
{
document.writeln(id + " изменилось с " + "<Ь>" + oldValue
+ "</b>"+ " на " + "<b>" 4- newValue + "</bXbr>")
return newValue;
}
function setWatch(){
my Res = document.forml.resetbutton.value;
watch("myRes",alertme);
myRes = "cat";
unwatch("myRes");
myRes = "dog";
}
//-->
</script>
<body>
<form name="forml">
Введите имя: <input type="text" Kame="name" Size=5">
<br>
<input type="reset" name=" resetbutton" value="O4HC!Mrab"
onClick='setWatch()■>
<br>
<br>
</form>
</body>
</html>
JavaScript 1.0+, JScript 1.0+
Nav2+ |E3+ Opera3+
reset.value
Свойство value объекта Reset содержит значение HTML-атрибута name кнопки "Очистить".
В листинге 8.392 приведен пример использования свойства value.
Листинг 8.392. Пример использования свойства value
<html>
<body>
<form name="forml">
Введите имя: <input type="text" Name="name" Size=5">
<br>
Введите нонер телефона: <input type="text" Name="phone" Size=0">
<br><br>
<input type="reset" name="resetbutton" value="Reset"
onClick='alert("Значение свойства value кнопки: " +
document.forml.resetbutton.value)'>
<br><br>
</form>
</body>
</html>
Reset.watch() ffi
reset.watch(prop, обработчик)
Метод watch() объекта Reset используется для установки отслеживания изменений
свойств объекта Reset. При изменении значения свойства prop вызывается обработчик,
переданный в параметре обработчик.
В листинге 8.393 приведен пример использования метода watch() для установки отсле-
отслеживания свойства value объекта Reset. При изменении значения свойства вызывается фун-
функция alertme.
Оси Часть III. Справочник по JavaScript
Листинг 8.393. Пример использования метода watch()o6bei<Ta Reset
<html>
<script type="text/javascript" language="JavaScript">
<!--
function alertme(id,oldValue,newValue)
<
document.writeln(id + " изменилось с " + "<b>" + oldValue
+ "</b>"+ " на " + "<b>" + newValue + "</b><br>")
return newValue;
}
function setWatch(){
my Res = document.forml.resetbutton.value;
watch("myRes",alertme);
myRes = "cat";
myRes = "dog";
}
</script>
<body>
<form name="fonnl">
Введите имя: <input type="text" Name="naine" Size=5">
<br>
<input type="reset" name="resetbutton"
value="O4HCTHTb" onClick='setWatch()'>
<br><br>
</form></body>
</html>
JavaScript1.2+, JScript3.0+
Nav4+, IE4+
Основной объект клиентской части языка JavaScript.
# Объект screen предоставляет программисту доступ к различным свойствам экрана пользо-
пользователя. Эти свойства часто используются для установки размеров окон, открываемых раз-
различными сценариями. Свойства объекта screen перечислены в табл. 8.29. Объект screen
имеет только два метода, watchO и unwatch(), которые позволяют устанавливать и пре-
прекращать слежение за изменением определенного свойства. Более подробная информация
приведена в описании этих методов.
Таблица 8.29. Свойства объекта screen.
Элемент Описание
availHeight Высота пользовательского экрана (в пикселах) без учета высоты панелей
инструментов и других "постоянных" объектов.
availLeft Координата х первого пиксела, который не является частью панели
инструментов или другого "постоянного" объекта.
availTop Координата у первого пиксела, который не является частью панели
инструментов или другого "постоянного" объекта.
availWidth Ширина экрана пользователя в пикселах без учета ширины панелей
инструментов и других "постоянных" объектов.
colorDepth Максимальное количество цветов, которое может быть отображено на экране
пользователя. Это значение представляется в разрядном формате.
height Высота экрана пользователя (в пикселах).
pixelDepth Количество разрядов на пиксел для пользовательского экрана. Некоторые
версии Internet Explorer не поддерживают данное свойство. В этом случае
свойство возвращает undefined.
width Ширина экрана пользователя (в пикселах).
Глава 8. Клиентская сторона 627
В листинге 8.394 на экран выводится кнопка, при щелчке на которой открывается вто-
второе окно, где отображаются все свойства объекта screen.
Листинг 8.394. Отображение на экране свойств объекта screen
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
//Объявить функцию openWin, которая вызывается при нажатии на кнопку-
function openWin(){
// Открыть окно результатов.
var myWin = open("", "","width=450,height=200");
// Вывести в окне свойства объекта screen.
myWin.document.write("Значение свойства availHeigh: "
+ screen.availHeight + "<br>");
myWin.document.write{"Значение свойства availWidth: "
+ screen.availWidth + "<br>");
myWin.document.write("Значение свойства colorDepth: "
+ screen.colorDepth + "<br>");
myWin.document.write("Значение свойства height: "
+ screen.height + "<br>");
myWin.document.write("Значение свойства pixelDepth: "
+ screen.pixelDepth + "<br>");
myWin.document.write("Значение свойства width: "
+ screen.width + "<br>");
// Закрыть поток вывода в окно.
myWin.document.close();
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="button" value="Отобразить свойства экрана"
name="myButton" Bonclick="openWin()">
</form>
</body>
</html>
screen.availHeight
screen.availHeight
Свойство availHeight объекта screen возвращает значение доступной высоты пользователь-
пользовательского экрана. Эта высота определяется без учета высоты панелей инструментов и других
"постоянных" объектов, которые могут отображаться на экране.
Код из листинга 8.395 отображает на странице значение высоты пользовательского эк-
экрана.
Листинг 8.395. Пример использования свойства availHeight объекта screen
<script language="JavaScriptl.2" type="text/javascript">
<! —
document.write("Доступная высота пользовательского экрана равна <Ь>");
document.write(screen.availHeight + "</b> пиксела(ов)");
// —>
</script>
screen, avail Left JavaScriffit
screen.availLeft
628 Часть III. Справочник по JavaScript
# Свойство availLeft объекта screen возвращает координату х первого доступного пиксела,
который не используется ни панелью инструментов, ни каким-либо другим "постоян-
"постоянным" объектом, могущим находиться на экране.
ПРИМЕЧАНИЕ
При использовании этого свойства в Netscape 6 панель My Sidebar счи-
тавтся не частью окна, а всего лишь областью, в которой выполняется визуализация.
В листинге 8.396 на странице выводится значение координаты х первого доступного пик-
пиксела пользовательского экрана.
Листинг 8.396. Пример использования свойства availLeft объекта screen
<script language="JavaScriptl.2" type="text/javascript">
<!--
document.write("Координата х первого доступного пиксела
^пользовательского экрана равна <Ь>");
document.write(screen.availLeft + "</b> пиксела(ов)");
// -->
</script>
SCreen.availTop JavaScripts
screen.availTop
k Свойство availTop объекта screen возвращает координату у первого доступного пиксе-
пиксела, который не используется ни панелью инструментов, ни каким-либо другим "посто-
"постоянным" объектом, отображаемым на экране.
В листинге 8.397 на странице отображается координата у первого доступного пиксела
пользовательского экрана.
Листинг 8.397. Пример использования свойства availTop объекта screen.
<script language="JavaScriptl.2" type="text/javascript">
<! —
document.write("Координата у первого доступного пиксела
^пользовательского экрана равна <Ь>");
document.write(screen.availTop + "</Ъ> пиксела(ов)");
// —>
</script>
scree n. avail Width JavaScript12ValC4f ie°4++
screen.availWidth
h Свойство availWidth объекта screen возвращает значение доступной ширины пользова-
пользовательского экрана. Это значение определяется без учета ширины панелей инструментов и
других "постоянных" объектов, которые могут находиться на экране.
В листинге 8.398 на странице отображается значение доступной ширины пользовательс-
пользовательского экрана.
Листинг 8.398. Пример использования свойства availWidth объекта screen
<script language="JavaScriptl.2" type="text/javascript">
document.write("Доступная высота пользовательского экрана равна <b>");
document.write(screen.availWidth + "</b> пиксела(ов)");
// —>
</script>
screen. colorDepth
screen.colorDepth
Глава 8. Клиентская сторона 6 С. 9
f Свойство colorDepth объекта screen возвращает максимальное количество цветов, кото-
которое можно отобразить, на экране пользователя. Возвращаемое значение соответствует глу-
глубине цвета, заданной в разрядах.
В листинге 8.399 на странице отображается глубина цвета пользовательского экрана.
Листинг 8.399. Пример использования свойства colorDepth объекта screen
<script language="JavaScriptl.2" type="text/javascript">
<!--
document.write("Глубина цвета пользовательского экрана равна <b>");
document.write(screen.colorDepth + "</b> бита(ов)");
// —>
</script>
screen.height JavaScriPti.2+ jscripo o+
Nav4+, IE4+
screen.height
Свойство height объекта screen возвращает высоту пользовательского экрана (в пикселах).
лПри выполнении кода из листинга 8.400 на странице отображается значение высоты
пользовательского экрана.
Листинг 8.400. Пример использования свойства height объекта screen.
<script language="JavaScriptl.2" type="text/javascript">
<! —
document.write("Высота экрана пользователя равна <Ь>");
document.write(screen.height + "</b> пиксела(ов)");
// —>
</script>
Screen.pixelDepth JavaScripti.2+
screen.pixelDepth
Свойство pixelDepth объекта screen возвращает количество бит, приходящихся на пик-
пиксел пользовательского экрана.
В листинге 8.401 на странице отображается разрядность (глубина) пользовательского эк-
экрана.
Листинг 8.401. Пример использования свойства pixelDepth объекта screen
<script language^"JavaScriptl.2" type="text/javascript">
<! —
document.write("Разрядность экрана пользователя равна <Ь>");
document.write(screen.pixelDepth + "</b> бит(а)");
// -->
</script>
Screen.unwatch() JavaScript^
screen.unwatch(свойство)
Метод unwatch() объекта screen используется для прекращения отслеживания изменения
свойства, указанного параметром свойство.
В листинге 8.402 приведен пример использования метода unwatch() для прекращения
отслеживания за свойством height. Функция alert me будет вызываться при изменении
свойства screen.height, например, при изменении разрешения экрана.
Листинг 8.402. Пример использоввния метода unwatchO
<script type="text/javascript" language^"JavaScriptl.2">
function alertme(id, oldValue, newValue){
document.writeln("ID ("+ id + ") изменилось с" + oldValue +" на ");
document.writeln(newValue + "<br>");
return newValue;
D dU Часть III. Справочник по JavaScript
screen.watch("height",alertme);
screen.unwatch("height");
</script>
screen.watch()
s ere en.watch(свойство, функция)
Метод watchO объекта screen используется для установки отслеживания изменений свой-
свойства, определенного параметром свойство. При изменении свойства после вызова мето-
метода watch() вызывается функция, определенная параметром функция.
В листинге 8.403 приведен пример использования метода watch() для установки отсле-
отслеживания свойства height. Функция alertme будет вызывается при изменении свойства
screen.height, например, при модификации разрешения экрана.
Листинг 8.403. Пример использования методе watch()
<script type="text/javascript" language="JavaScriptl.2">
function alertme(id, oldValue, newValue){
document.writeln("ID (- id + ") изменилось с "+ oldValue + " на ");
document.writeln(newValue + "<br>");
return newValue;
}
screen.watch("height",alertme);
</script>
SCreen.width JavaScripti.Z+.^mptlOj
screen.width
# Свойство width объекта screen возвращает ширину экрана пользователя (выражена в пик-
пикселах).
,,/% В листинге 8.404 на страницу выводится ширина пользовательского экрана.
Листинг 8.404. Пример использования свойства width объекта screen
<script language="JavaScriptl.2" type="text/]avascript">
<! —
document.write("Ширина экрана пользователя <b>");
document.write(screen.width + "</b> пиксела(ов)");
// —>
</script>
JavaScriptl.0+, JScript1.0+
Nav2+, IE3+, Opera3t
Основной объект клиентской части языка JavaScript.
Объект Select является одним из основных объектов языка JavaScript.Экземпляры этого
объекта создаются браузером при указании HTML-дескриптора <select>. В иерархии
объектов языка JavaScript объект Select выглядит следующим образом
window.document.Form.Select. Свойства, методы и обработчики событий объекта Select
приведены в табл. 8.30.
Таблица 8.30. Свойства, методы и обработчики событий объекта Select
Тип
Обработчик
событий
Метод
Элемент
onBlur
onChange
onFocus
blur()
Описание
Запускает указанный
Запускает указанный
Запускает указанный
Убирает фокус с окна
код при
код при
код при
выбора
потере окном выбора фокуса.
изменении значения окна выбора.
получении окном выбора фокуса.
глава 8. Клиентская сторона
631
Тип
Свойство
Элемент
focus()
handleEvent()
u n watch ()
watch ()
form
Idngth
name
Описание
Перемещает фокус на окно выбора.
Вызывает обработчик указанного события. Появился в версии
JavaScript 1.2.
Прекращает отслеживание свойства.
Устанавливает отслеживание свойства.
Возвращает форму, в которой находится данное окно выбора.
Возвращает количество опций в окне выбора.
Возвращает имя окна выбора, которое указано в атрибуте name.
options Возвращает массив, в котором содержатся все элементы окна
выбора. Элементы окна выбора создаются с помощью HTML-
дескриптора <option>. Свойство options имеет два
подсвойства: length и selectedlndex.
selectedlndex Возвращает целое число, которое соответствует индексу
выбранной в окне выбора опции.
type Возвращает тип данного окна выбора, указанный в атрибуте
type. Для экземпляров объекта Select, в которых указан
атрибут multiple, это свойство возвращает select-multiple; для
экземпляров, в которых атрибут multiple не указан,
возвращается значение select-one. Обратите внимание, что
данное свойство было введено в JavaScript 1.1.
В листинге 8.405 приведен пример использования свойств объекта Select. На странице
содержится окно выбора и кнопка. После щелчка на кнопке открывается второе окно, в
котором выводятся значения свойств объекта Select.
Листинг 8.405. Вывод на экран свойств объекта Select
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Объявить функцию openWin, которая будет вызываться
// при нажатии на кнопку,
function openWin(){
// Для упрощения доступа поместить в переменную ссылку
// на окно выбора.
var myInstance = document.myForm.mySelect;
// Открыть окно результатов.
var mywin = open("", "","width=450,height=200");
// Вывести в окно результатов значения свойств объекта select.
myWin.document.write("Длина: " + myInstance.length + "<br>");
myWin.document.write("Имя: " + mylnstance.name + "<br>");
myWin.document.write("Индекс выбранной опции: ") ;
myWin.document.write(mylnstance.selectedlndex + "<br>");
mywin.document.write("Тип: " + mylnstance.type + "<br>");
// Обратите внимание, что это свойство возвращает всю форму.
// Это позволяет получить значения свойств
// других элементов формы.
myWin.document.write("Эту форму можно использовать для получения ")
myWin.document.write("значения кнопки: ") ;
myWin.document.write(mylnstance.form.myButton.value);
Doc Часть III. Справочник по JavaScript
// Закрыть поток, направленный в окно.
myWin.document.close();
}
// -->
</script>
</head>
<body>
<form name="myForm">Morj любимый вид спорта:
<select name="mySelect">
<option value="BASE">Eetic6on</option>
<option value="FOOT">AMepHKaHCKnti фу«гбол</орЪ1оп>
<option value="BASKET">EaCKeT6on</option>
<option value=" SOCCER" >Футбол</орЫоп>
</select>
<input type="button" уа1ие="Обработать"
name="myButton" onclick="openWin()">
</form>
</body>
</html>
JavaScript1.O+, JScript1.O+
Nav2+ |E3+ Opera3+
select.blur()
Метод blur() объекта Select убирает фокус с окна выбора. Это не означает, что выбор
опции в окне отменяется, просто фокус с выбранной опции и со всего окна снимает-
снимается. Будьте осторожны при использовании этого метода совместно с методом Select.focus().
Такое использование может привести к зацикливанию получения/снятия фокуса, когда
браузер снимает с окна выбора фокус сразу же после его получения окном и наоборот.
В листинге 8.406 на странице расположены окно выбора и кнопка. Если пользователь
выбирает одну из опций, а затем щелкает на кнопке Click Here to Remove Focus (На-
(Нажмите эту кнопку для снятия фокуса), опция и все окно выбора теряет фокус.
Листинг 8.406. Использование метода Ыиг(] для снятия фокуса с окна выбора
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Объявить функцию removeFocus, которая будет вызываться
// при щелчке на кнопке,
function removeFocus(){
// Убрать фокус с окна выбора.
document.myForm.mySelect.blur();
}
// —>
</script>
</head>
<body>
<form name="myForm">
<select name="mySelect" multiple>
<option value="BASE">Eeiic6on</option>
<option value=" FOOT" >Американский футбол</ор^оп>
<option value="BASKET">EacKeT6on</option>
<option value=" SOCCER" >4>yT6on</option>
</select>
<input type="button"
уа1ие="Для снятия фокуса щелкните на этой кнопке"
name="myButton" onclick="removeFocus()">
</form>
</body>
</html>
Глава 8. Клиентская сторона bud
JavaScript1.O+, JScript1.O+
Nav2+ |E3+ 0£ra3+
select.focus()
\ Метод focus() объекта Select переносит фокус на окно выбора. Будьте осторожны при
использовании этого метода совместно с методом Select.blur(). При этом может произойти
зацикливание операций получения/снятия фокуса, когда браузер снимает с окна выбо-
выбора фокус сразу же после его получения и наоборот.
В листинге 8.407 на странице расположены два окна выбора и две кнопки. Если пользо-
пользователь щелкает на первой кнопке, курсор переносится в первое окно выбора. Если пользо-
пользователь щелкает на второй кнопке, курсор переносится во второе окно выбора.
Листинг 8.407. Использование метода focusO для переносе фокуса в требуемое
окно выбора
<html>
<head>
<script language^"JavaScript" type="text/javascript">
<! —
// Определить вызываемую функцию SetFocus при щелчке на кнопке.
function setFocus(num){
// Определишь, на какой кнопке был произведен щелчок, и
// переместишь фокус на соответствующее окно выбора,
if (num == 1) {
document.myForm.mySelectl.focus();
}else if (num == 2) {
document.myForm.mySelect2.focus();
</script>
</head>
<body>
<form name="myForni">
<select name="mySelectl" multiple>
<option value="BASE">Бейсбол</option>
<option value="FOOT">AMepHKaHCKidj фу!Рб
<option value="BASKET">Баске'гбол</орЪ1оп>
<option value="SOCCER">Футбол</орЪ1оп>
</select>
<input type="button" value="flns переноса курсора щелкните на
чэтой кнопке" name="myButtonl" onclick="setFocusA)">
<br>
<select name="mySelect2" multiple>
<option value="HOCK">XoKKeii</option>
<option value="RUG">Per6H</option>
<option уа1ие="СОЬГ">Гольф</орЪ1оп>
<option value="TENNIS">TeHHHC</option>
</select>
<input type="button" уа1ие="Для переноса курсора щелкните на
■■»эаюй кнопке" name="myButton2" onclick="setFocus B) ">
</form>
</body>
</html>
Cpipot form JavaScript1.0+, JScript1.0+
beiect.Torm Nav^+ |E3+ Op«;ra3+
select:. form
X Свойство form экземпляра объекта Select содержит все данные формы, в которой нахо-
• дится окно выбора. Это позволяет разработчику получить специфические данные о фор-
форме, в которой содержится данное окно выбора.
634 Часть 111. Справочник no JavaScript
уф В коде из листинга 8.408 на странице расположены окно выбора и кнопка. При щелчке
с^ на кнопке на экран выводятся три свойства формы. Значения этих свойств определяют-
определяются с помощью свойства form окна выбора.
Листинг 8.408. Получение доступа к форме с помощью свойства form экземпляра
окна выбора
<html>
<head>
<script language="JavaScript" type="text/javascript">
^ f _ _
// Объявить функцию openWin, которая будет вызываться
// при щелчке на кнопке.
function openWin(){
// Для упрощения доступа поместить ссылку на
// форму, связав ее с соответствующей переменной.
var formData = document.myForm.mySelect.form;
// Открыть окно результатов.
var myWin = open("", "","width=450,height=200");
// Записать в окно свойства формы,
// полученные с помощью свойства form.
myWin.document.write("Имя формы: " + formData.name + "<br>");
myWin.document.write("Значение selectedlndex опции: ");
myWin.document.write(formData.mySelect.selectedlndex + "<br>");
myWin.document.write("Имя кнокпи: ") ;
myWin.document.wri te(formData.elements[1].name + "<br>");
// Закрыть поток, направленный в окно.
myWin.document.close();
</script>
</head>
<body>
<form name="myForm">
<select name="mySelect" multiple>
<option value="BASE">Eeftc6on</option>
<option value="FOOT">AMepHKaHCKj«j фyтбoл</option>
<option value="BASKET">EacKeT6on</option>
<option value="SOCCER">Фyтбoл</optioп>
</select>
<input type="button" уа1ие="Обработать" name="myButton"
onclick="openWin()">
</form>
</body>
</html>
Select.handleEvent()
select.handleEvent(событие)
Метод handleEventO объекта Select вызывает обработчик указанного события. Этот метод
появился в версии JavaScript 1.2.
В листинге 8.409 на странице находится одно окно выбора. Сценарий передает инструк-
инструкции браузеру относительно того, что необходимо перехватывать все события Click и для
их обработки вызывать функцию myClickHandler. В этой функции для обработки собы-
событий используется метод handleEvent() окна выбора.
При щелчке кнопкой мыши на странице обработчик событий onClick в дескрипторе
<select> вызывает функцию, которая выбирает другую опцию в окне выбора. Измене-
Изменение опций осуществляется циклически по всем четырем опциям в окне выбора.
глава В. Клиентская сторона Ь О CD
Листинг 8.409. Использование метода handleEventO объекта Select для обработки
всех щелчков мышью, произведенных на странице
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Объявить счетчик щелчков.
var counter = 0;
// Указать браузеру на то, что следует перехватывать ВСЕ события
// СЫСК на странице и объявишь функцию обработки щелчков,
window.captureEvents(Event.CLICK)
window.onClick = myClickHandler;
// Объявить функцию myClickHandler, которая будет выполнять
// обработку щелчков.
function myClickHandler(e) {
//Передавать все события СЫСК обработчику события onClick окна выбора
window.document.myForm.mySelect.handleEvent(e);
}
// Эта функция вызывается обработчикон событий onClick окна выбора,
function changeSelect(){
if(counter > 3){
counter = 0;
document.myForm.mySelect.selectedlndex = counter;
} else{
document.myForm.mySelect. selectedlndex = counter++ ,-
</script>
</head>
<body>
<form name="myForm">
<select name="mySelect" onclick='changeSelect()'>
<option value="BASE">Бейсбол</option>
<option value="FOOT">AMepHKaHCKHH фyтбoл</option>
<option value="BASKET">EacKeT6oA</option>
< option value=" SOCCER" >4>yn;6on</option>
</select>
</form>
</body>
</html>
Select.length JeveScripti.o+. JScripti.o+
select.length
& Свойство length экземпляра объекта Select возврашает количество опций в окне выбора.
В листинге 8.410 на странице находятся окно выбора и кнопка. При щелчке на кнопке
в окне предупреждения на экран выводится значение свойства length объекта Select.
Листинг 8.410. Использование свойства length для определения имени окна выбора
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Вывести на экрая окно предупреждения, в которой
// содержится размер окна выбора,
function getName(){
alert("Размер окна выбора равен "+document.myForm.mySelect.length);
</script>
</head>
БЗо Часть III. Справочник по JavaScript
<body>
<form name="myForm">
<select name="mySelect">
<option value="BASE">Eeuc6on</option>
<option value="FOOT">Америкаиский футбол</орЪ±оп>
<option value="BASKET">Баскв!гбол</орЪ1оп>
<option value=" SOCCER" >Фу-гбол</орЪ±оп>
</select>
<input type="button" уа1ие=пределить размер"
name="myButton" onclick='getName()'>
</form>
</body>
</html>
JavaScript1.O+, JScript1.O+
Nav^+ |E3+ Op'ra3+
select.name
Свойство name экземпляра объекта Select возвращает имя окна выбора. Доступ к этому
свойству часто осуществляется через массив elements объекта Form с целью определения
имени окна выбора. Подобное оказывается очень полезным, если на странице находят-
находятся несколько форм. В этом случае знание имени позволяет определить какую функцию
следует выполнять.
В листинге 8.411 на странице находятся окно выбора и кнопка. Для определения и вы-
вывода на экран имени окна выбора в окне предупреждения используется массив elements
объекта Form.
Листинг 8.411. Использование свойства name для определения имени окна выбора.
<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
// Вывести на экран окно предупреждения, в котором
// содержится имя окна выбора.
function getName(){
alert("Имя окна выбора " + document.myForm.elements[0].name);
}
// -->
</script>
</head>
<body>
<form name="myForm">
<select name="mySelect" multiple>
<option уа1ие="ВА5Е">Бейсбол</ор^оп>
<option value="FOOT">AMepHKaHCKHH
<option value="BASKET">EacKe!r6oA</option>
<option value=" SOCCER" >4>y-r6on</option>
</select>
<input type="button" уа1ие="Определить имя"
name="myButton" onclick='getName()'>
</form>
</body></html>
Select.onBlur
onblur="команда"
Обработчик событий onBlur экземпляра объекта Select вызывается при потере окном
выбора фокуса. При использовании этого обработчика событий следует быть особенно
осторожным, поскольку при использовании обработчика событий onFocus или метода
focus() существует опасность зацикливания.
В листинге 8.412 на странице находятся два окна выбора, в одном из которых в его дес-
крипторе перехватываются события Blur, и текстовое поле. Текстовое поле используется
в качестве счетчика количества событий Blur.
tea В. Клиентская сторона Ьи/
В сценарии при возникновении события Blur вызывается обработчик события, который
в свою очередь, вызывает функцию, перемещающую фокус на первое окно выбора. В
результате, когда пользователь пытается перенести фокус с первого окна выбора, зна-
значение счетчика увеличивается, а фокус возвращается на первое окно выбора. Обратите
внимание, что в окне выбора не выбирается другая опция, просто фокус переносится
на первое окно выбора.
Как можно будет увидеть при запуске на выполнение кода из листинга 8.412, значение
счетчика щелчков увеличивается даже в случае шелчка кнопкой мыши в других окнах
или в адресной строке.
Листинг 8.412. Пример использования обработчика событий onBlur
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Инициализировать счетчик щелчков.
var counter = 0;
// Установить фокус на первое окно выбора и увеличить
// значение счетчика в текстовом поле.
function comeBack() {
document.myForm.mySelectl.focus();
document.myForm.counter.value = counter++;
)
// —>
</script>
</head>
<body onload='comeBack() '>
<form name="myForm">
<select name="mySelectl" multiple onblur='comeBack()'>
<option value="BASE">Eeiic6on</option>
<option value="FOOT">AMepnKaHCKHH ,
<option value="BASKET">EacKetr6oA</option>
<option value=" SOCCER" >4>ya?6on</option>
</select>
<br>
<select name="mySelect2" multiple>
<option value="HOCK">XOKKeii</option>
<option value="RUG">Per6ti</option>
<opti on value="GOLF">Гольф</option>
<option value="TENNIS">Тениис</op tion>
</select>
<input type="text" size=" value="" name-"counter">
</form>
</body>
</html>
Select.onChange
onchange="команда"
Обработчик событий onChange экземпляра объекта Select вызывается при изменении
выбранной опции в окне выбора. При использовании этого обработчика событий следует
быть особенно осторожным, поскольку при использовании в данном обработчике обра-
обработчиков событий или методов, которые вызываются при получении или потере фоку-
фокуса окном выбора, существует опасность попасть в бесконечный цикл.
В листинге 8.413 на странице находится окно выбора. Если пользовать выбирает другую
опцию, на экран выводится окно предупреждения, в котором указывается выбранная
опция.
Листинг 8.413. Использование обработчика событий onChange для вывода на экран
окна предупреждения при выборе опции в окне выбора
<html>
<head>
638 Часть III. Справочник по JavaScript
<script language^"JavaScript" type="text/javascript">
<!--
// Вывести на экран окно предупреждения с указанием выбранной
опции.
function changeBack(form){
for (var i = 0; i < form, my Select, options. length; i++) {
if (form.mySelect.options[i].selected){
alert("Вы выбрали " + form.mySelect.options[i].text);
</script>
</head>
<body>
<form name="myForm">
<select name="mySelect" onchange='changeBack(this.form)'>
<option value="H0CK">XOKKeii</option>
<option value="RUG">Per6H</option>
<option value="G0LF">ronb4</option>
<option value="TENNIS">Теннис</option>
</select>
</form>
</body>
</html>
Select.0nF0CUS JavaScript1.O+ JScript1.O+
Nav2+, IE3+, Opera3+
onfocus="команда"
& Обработчик событий onFocus экземпляра объекта Select вызывается при получении ок-
окном выбора фокуса. При использовании этого обработчика событий следует быть особенно
осторожным, поскольку при использовании обработчика событий onBlur или метода
Ыиг() существует опасность попасть в бесконечный цикл.
В листинге 8.414 на странице находятся окна выбора с возможностью выбора несколь-
нескольких опций и текстовое поле. В дескрипторе окна выбора объявлен обработчик событий
onFocus, который вызывается при выборе опции. В сценарии обработчик событий onFocus
в дескрипторе <select> вызывает функцию, которая перемещает фокус на текстовое поле.
Когда пользователь переносит фокус на окно выбора, значение счетчика увеличивается
и фокус возвращается на текстовое поле.
Листинг 8.414. Пример использования обработчика событий onFocus
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Инициализировать счетчик щелчков,
var counter = 0 ;
// Перенести фокус на текстовое поле и
II увеличить значение счетчика,
function sendAway(){
document.myForm.counter.focus();
document.myForm.counter.value = counter++;
</script>
</head>
<body onload='sendAway()'>
<form name="myForm">
<select name="mySelect" multiple onfocus='sendAway()'>
<option value="HOCK">XoKKeu</option>
<option value="RUG">Per6n</option>
<option value="G0LF">I4^b4</option>
[лава В. Клиентская сторона 639
<option value="TENNIS">TeHHHC</option>
</select>
<input type="text" size=" value="" name="counter">
</form>
</body>
</html>
Select.options
select.options
Свойство options объекта Select представляет собой массив, в котором содержатся эле-
элементы каждой опции в окне выбора. Это свойство часто используется для определения
свойств опций в окне выбора, например, значений свойств value или text.
В листинге 8.415 на странице находится окно выбора с четырьмя опциям. При выборе
какой-либо опции на экран выводится второе окно. В этом окне для вывода значений
свойств выбранной опции используется метод document.write().
Листинг 8.415. Пример использования массива options для определения значений
свойств аыбранной опции
<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
// Вывести на экран окио предупреждения, в котором указывается
// выбранная опция.
function infoBox(form){
// Для упрощения кода присвоить полученные данные переменной.
var myln = form.mySelect;
// Открыть окно результатов.
var myWin = open("", "","width=400,height=150");
// Вывести в окно заголовок.
myWin.document.write("Ниже приводятся данные ");
myWin.document.write("о выбранной вами опции");
myWin.document.write("<hr height=l>");
// Определить, какая опция выбрана.
for (var i = 0; i < form.mySelect.options. length; i++) {
if (form.mySelect.options[i].selected)!
// Вывести в окне свойства опции.
myWin.document.write("<br><b> Значение свойства value:</Ь> "
+ myln.options[i].value);
myWin.document.write("<Ьг><Ь>Значение свойства text:</b> "
+ myln.options[i].text);
myWin.document.close();
</script>
</head>
<body>
<form name="myForm">
<select name="mySelect" onchange='infoBox(this.form) '>
<option value="HOCK">XoKKeft</option>
<option value="RUG">Per6M</option>
<option уа1ие="С0ЬР">Гольф</ор^оп>
<option value="TENNIS">TeHHHC</option>
</select>
</form>
</body>
</html>
640 Часть III. Справочник по JavaScript
Select.options.length J^sajt..^ «agio;
select.options.length
Свойство length массива options объекта Select возвращает количество опций в данном
экземпляре окна выбора.
В листинге 8.416 на странице находится одно окно выбора. Когда пользователь выбирает
какую-либо опцию, вызывается обработчик событий onChange, который выводит на эк-
экран окно предупреждения с указанным количеством опций в данном окне выбора.
Листинг 8.416. Использование свойства length массива options объекта Select
<form name="myForm">
<select name="mySelect" onchange='alert(mySelect.options.length) '>
<option value="HOCK">XoKKeii</option>
<option value="RUG">Per6M</option>
<option value="GOLF">I4mb4</option>
<option value="TENNIS">Теннис</option>
</select>
</form>
Select.options.selectedlndex
select.options.selectedlndex
Свойство selectedlndex массива options объекта Select возвращает индекс опции, выбранной
в данном экземпляре окна выбора.
В листинге 8.417 на странице находится одно окно выбора. Когда пользователь выбирает
какую-либо опцию, вызывается обработчик событий onChange, выводящий на экран окно
предупреждения, в котором указывается индекс опции, выбранной в данном окне вы-
выбора.
Листинг 8.417. Использование свойства selectedlndex массива options объекта Select
<form name="myForm">
<select name="mySelect"
onchange='alert(mySelect.options.selectedlndex)'>
<opti on value="HOCK">Хоккей</option>
<option value="RUG">Per6M</option>
<opUon value="GOLF">Гoльф</option>
<option value="TENNIS">Tei»mc</option>
</select>
</form>
Select.options.value
select.options.value
Свойство value массива options объекта Select возвращает значение опции, выбранной в
данном экземпляре окна выбора.
Код из листинга 8.418 на странице определяет одно окно выбора. Когда пользователь
выбирает какую-либо опцию, вызывается обработчик событий onChange, выводящий на
экран окно предупреждения, в котором указывается значение опции, выбранной в дан-
данном окне выбора.
предупреждение:
В различных браузерах это событие может возникать в
различные моменты времени, поэтому окно предупреждения в различных
браузерах может выводиться по-разному.
Листинг 8.418. Использование свойства value массива options объекта Select
<form name="myForm">
<select name="mySelect"
onchange='alert(mySelect.options[selectedlndex].value)'>
Глава В. Клиентская сторона
<option value="HOCK">XoKKeH</option>
<option value="RUG">Per6n</option>
<option value="GOLF">rojib4</option>
<option value="TENNIS">TeHHMC</option>
</select>
</form>
JavaScript1.O+, JScript1.O+
Nav^+ |E3+ ^ra3+
select.selectedlndex
\ Свойство selectedlndex объекта Select возвращает индекс опции, выбранной в данном
экземпляре окна-выбора. Если это свойство используется в окне выбора с возможность
выбора нескольких опций, он возвращает индекс первой выбранной опции.
В листинге 8.419 на странице находится одно окно выбора. Когда пользователь выбирает
какую-либо опцию, вызывается обработчик событий onChange, который выводит на экран
окно предупреждения, в котором указывается индекс выбранной в окне выбора опции.
Листинг 8.419. Использование свойства selectedlndex объекта Select
<form name="myForm">
<select name="mySelect" onchange='alert(mySelect.selectedlndex)■>
<option value="HOCK">XOKKeu</option>
<option value="RUG">Per6ti</option>
<option value="G0LF">rojib4</option>
<option value="TENNIS">TeHHMc</option>
</select>
</form>
JavaScript1.1+, JScript1.O+
№у3^ |E3+ 0^na+
select.type
\ Свойство type экземпляра объекта Select возвращает тип окна выбора. Свойство type может
содержать либо select-multiple, если в дескрипторе <select> установлен атрибут multiple,
либо select-one, если атрибут multiple не установлен.
В листинге 8.420 на странице находятся окно выбора и кнопка. При щелчке на кнопке
на экран выводится окно предупреждения, в котором указывается значение свойства type
окна выбора.
Листинг 8.420. Вывод в окне предупреждения значения свойства type
<html>
<head>
<script language="JavaScriptl.1" type="text/javascript">
<! —
// Вывести на экран окно предупреждения, в котором
// содержится значение типа окна выбора.
function getType(){
alert("Тип этого окна выбора " +
document.myForm.elements[0].type);
}
// — >
</script>
</head>
<body>
<form name="myForm">
<select name="mySelect">
<option value="HOCK">XoKKeft</option>
<option value="RUG">Per6n</option>
<option value="GOLF">ronb4</option>
<option value="TENNIS">TeHHHC</option>
</select>
<input type="button" value="Определить тип"
name="myButton" onclick='getType()'>
</form></body></html>
Часть III. Справочник по JavaScript
Select.unwatch()
select.unwatch(свойство)
Метод unwatch() объекта Select используется для прекращения отслеживания свойства,
указанного с помощью параметра свойство.
В листинге 8.421 приведен пример использования метода unwatch() для прекращения
слежения за свойством value.
Листинг 8.421. Пример использования метода unwatchO
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
function alertme(id, oldValue, newValue){
document.writeln("ID (" + id + ") изменилось с " + oldValue
+ " на ") ;
document.writeln(newValue + "<br>");
return newValue;
i
function check(){
document.myForm.mySelect.watch("value", alertme);
document.myForm.mySelect.unwatch("value");
document.myForm.mySelect.value="GOLF";
i
</script>
</head>
<body onload="check() ">
<form name="myForm">
<select name="mySelect">
<option value="HOCK">XoKKeu</option>
<option value="RUG">Per6H</option>
<option уа1ие="С0ЬР">Гольф</ор^оп>
<option value="TENNIS">Теннис</option>
</select>
</form>
</body>
</html>
Select.watch()
select.watch(свойство, функция)
Метод watch() объекта Select используется для установки отслеживания изменений свой-
свойства, указанного с помошью параметра свойство. При изменении свойства, указанного
в параметре свойство, после вызова метода watch() вызывается функция, заданная при
помощи параметра функция.
В листинге 8.422 приведен пример использования метода watch() для установки отсле-
отслеживания изменений свойства value.
Листинг 8.422. Пример использования метода watch()
<html>
<head>
<script type="text/javascript" language^"JavaScriptl.2">
function alertme(id, oldValue, newValue){
document.writeln("ID (" + id + ") изменилось с " + oldValue
+ " на ") ;
document.writeln(newValue + "<br>");
return newValue;
)
function check(){
document.myForm.mySelect.watch("value", alertme);
document.myForm.mySelect.value="GOLF";
}
</script>
</head>
Глава В. Клиентская сторона
643
<body onload="check()">
<form name="myForm">
<select name="mySelect">
<option value="H0CK">XOKKeu</option>
<option value="RUG">Per6H</option>
<option
<option
</select>
</form>
</body>
</html>
value="TENNIS">TeHHMc</option>
JavaScript1.2,
Nav4
Style
Основной объект клиентской части языка JavaScript.
document.classes.имя_класса.имя_дескриптора
document.ids.имя_идемтификатора
document.tags.кмя_дескриптора
document.contextual(дескрипттор1, дескриптор2)
\ Объект Style — это основной объект клиентской части браузера Navigator 4. Доступ к эк-
экземплярам этого объекта можно получить с помошью четырех различных методов. Три
из четырех методов, document.ids, document.classes и document.tags, представляют собой
ассоциативные массивы, в которых содержатся, соответственно, идентификаторы, классы
и дескрипторы, связанные с различными вариантами получения доступа к стилям. С дру-
другой стороны, метод dociunent.contextual() находит экземпляры дескриптора дескриптор!,
которые содержатся в экземплярах дескриптора дескриптор2, и создает массив совпада-
совпадающих экземпляров.
Перечень свойств и методов объекта Style приведен в табл. 8.31.
Тип
Метод
Свойство
Таблица
Элемент
borderWidthsf)
margins()
paddings()
unwatch()
watch ()
align
backgroundColor
backgroundlmage
borderBottomWidth
borderColor
borderLeftWidth
borderRightWidth
borders tyle
borderTopWidth
8.31. Свойства и методов объекта Style
Описание
Устанавливает ширину рамки вокруг HTML-элемента.
Устанавливает минимальное расстояние между границами
HTML-элемента и соседними элементами.
Устанавливает расстояние между границами элемента и
его содержимым, например, текстом или изображением.
Прекращает отслеживание указанного свойства.
Устанавливает отслеживание указанного свойства.
Устанавливает тип выравнивания HTML-элемента внутри
его родительского элемента.
Устанавливает цвет фона элемента.
Устанавливает фоновый рисунок HTML-элемента.
Устанавливает ширину нижней границы HTML-элемента.
Устанавливает цвет рамки вокруг HTML-элемента.
Устанавливает ширину левой границы HTML-элемента.
Устанавливает ширину правой границы HTML-элемента.
Устанавливает стиль рамки вокруг HTML-элемента.
Устанавливает ширину верхней границы HTML-элемента.
644
Тип
Элемент
clear
color
Часть III. Справочник по JavaScript
Описание
Устанавливает стороны HTML-элемента, которые допускают
применение плавающих элементов.
Устанавливает цвет текста HTML-элемента.
display
Отменяет отображение элемента, установленное по
умолчанию, и указывает каким образом будет отображаться
элемент в строке: в виде блока или в виде элемента
списка.
fontFamily
fontSize
fontStyle
fontWeight
lineHeight
listStyleType
marginBottom
marginLeft
marginRlght
marginTop
padding Bottom
paddingLeft
paddingRight
paddingTop
textAlign
textDecoration
Устанавливает тип шрифта (например, Helvetica или Arial)
текстового HTML-элемента.
Устанавливает размер кегля шрифта текстового HTML-
элемента.
Устанавливает стиль шрифта текстового HTML-элемента.
Устанавливает начертание шрифта текстового HTML-
элемента.
Устанавливает расстояние между базовыми линиями двух
соседних строк.
Устанавливает стиль маркера в списке.
Устанавливает минимальное расстояние между нижней
границей HTML-элемента и верхней частью соседнего
элемента.
Устанавливает минимальное расстояние между левой
границей HTML-элемента и правой стороной соседнего
элемента.
Устанавливает минимальное расстояние между правой
границей HTML-элемента и левой стороной соседнего
элемента.
Устанавливает минимальное расстояние между верхней
границей HTML-элемента и низом соседнего элемента.
Устанавливает расстояние между нижней границей
элемента и его содержимым, например, текстом или
изображением.
Устанавливает расстояние между левой границей элемента
и его содержимым, например, текстом или изображением.
Устанавливает расстояние между правой границей
элемента и его содержимым, например, текстом или
изображением.
Устанавливает расстояние между верхней границей
элемента и его содержимым, например, текстом или
изображением.
Устанавливает тип выравнивания блочного текстового
НТМ L-элемента.
Устанавливает специальные эффекты (например, мигаше,
зачеркивание или подчеркивание) для текстового HTML-
элемента.
Глава 8. Клиентская сторона ОЧ-Э
textlndent Устанавливает абзацный отступ для первой
форматированной строки блочного текстового HTML-
элемента.
textTransform Устанавливает регистр текстового HTML-элемента.
whiteSpace Устанавливает, следует сжимать ли пробелы в HTML-
элементе.
width Устанавливает ширину блочного HTML-элемента.
ПРИМЕЧАНИЕ
Бреузер Navigator 4 яеляется единственным, поддерживающим объект
Style. Этот объект не поддерживается в версии Netscepe 6. Этот объект следует ис-
использовать только е HTML- и XHTML-документех, которые требуют обратной совме-
совместимости с Navigator 4.
В листинге 8.423 приведен пример трех различных методов использования document.ids
с целью управления стилями.
Листинг 8.423. Пример использования объекта Style
<html>
<style type="text/ess">
#TEXTFORMAT {font-style: italic;}
</style>
<p id="TEXTFORMAT">Поеле первого дескриптора STYLE.<p>
<style type="text/javascript">
ids.TEXTFORMAT.fontWeight = "bold";
</style>
<p id="TEXTFORMAT">IIocne второго дескриптора STYLE.<p>
<script type="text/javascript" language="JavaScript">
<! —
document.ids.TEXTFORMAT.textDecoration = "underline";
document.classes.no-under.a.textDecoration = "none";
// —>
</script>
<p id="TEXTFORMAT">После дескриптора SCRIPT.<p>
<a href="http://www.purejavascript.com" class="no-under">
Без подчеркивания*:/а>
</html>
Style.align JavaScriJ5a1vJ
style.name.align
f Свойство align устанавливает тип выравнивания элемента, соответствующего имени,
заданного с помощью параметра пате, внутри его родительского элемента. Поскольку
объект style можно создать с помощью методов document.classes, document.ids,
document.tags и document.contextual(), более подробные данные по синтаксису можно
получить из описания этих методов.
Свойство align может принимать одно из следующих значений: left, right или none.
УШШшЯа В синтексисе каскадных таблиц стилей значение свойства align счи-
считается вещественным числом.
В листинге 8.424 приведен пример использования свойства align для выравнивания аб-
абзаца по правому краю его родительского элемента, т.е. документа.
646 Часть ill. Справочник по JavaScript
Листинг 8.424. Выравнивание абзаца по правому краю с помощью свойства Blign
<html>
<script type="text/javascript" language="JavaScript">
^ i — —
// Создать идентификатор таблицы стилей для выравнивания
// по правому краю.
document.ids.RIGHT.align = "right";
</script>
<p id="RIGHT">BbipoBHHti иеня по правому краю!</р>
<р>Где я?</р>
</html>
Style.backgroundColor JavaScrigJJ
style.пале.backgroundColor
t Свойство backgroundColor устанавливает цвет фона, соответствующий имени, заданного
с помощью параметра пате. Поскольку style можно создать с помощью методов
document.classes, document.ids, document.tags и document.contextual), более подробные
данные по синтаксису можно получить из описания этих методов.
В листинге 8.425 приведен пример использования свойства backgroundColor для установки
красного цвета фона возле точки привязки.
Листинг 8.425. Установка цвета фона с помощью свойства backgroundColor
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей, содержащий цвет фона,
document.ids.BG.backgroundColor = "red";
</script>
<a id="BG" пате="ТН1Б">Это</а> точка привязки,
которая использует стиль с идентификатором BG.
</html>
Style, backgroundlmage JavaScrifi5
style.name.backgroundlmage
k Свойство backgroundlmage устанавливает фоновый рисунок элемента с именем, задан-
заданным в параметре пате. Поскольку style можно создать с помощью методов
document.classes, document.ids, document.tags и document.contextual(), более подробные
данные по синтаксису можно получить из описания этих методов.
В листинге 8.426 приведен пример установки logo.gif в качестве фонового рисунка тек-
текста заголовка.
Листинг 8.426. Установка фонового рисунка с помощью свойстаа backgroundlmage
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей, содержащий фоновый рисунок,
document.ids.BGI.backgroundlmage = "logo.gif";
</script>
<h2 id="BGI">Посмотри на иой фоновый рисунок!</h2>
</html>
Style. borderBottomWidth JavaScripti.2
style.name.bo rderBottomWidth
fiS& Свойство borderBottomWidth устанавливает ширину нижней границы элемента с именем,
" которое задано с помощью параметра пате. Поскольку style можно создать с помощью
Глава 8. Клиентская сторона
методов documenf.classes, document.ids, document.tags и document.contextual(), более под-
подробную информацию по синтаксису можно получить из описания этих методов.
В листинге 8.427 приведен пример использования свойства borderBottomWidth для ус-
установки размера нижней границы текста заголовка. Обратите внимание, что отображает-
отображается только нижняя часть рамки.
Листинг 8.427. Устаноака ширины нижней границы с помощью
саойстаа bordarBottomWidth
<html>
<script type="text/javascript" language="JavaScript">
//Создать идентификатор таблицы стилей,который создает нижнюю границу
document.ids.BBW.borderBottomWidth = 0";
</script>
<h2 id="BBW">y этого текста имеется нижняя граница</Ь2>
</html>
Style.borderColor JavaScrlj£;J
style.name.borderColor
& Свойство borderColor устанавливает цвет рамки элемента с HMeHtv name. Поскольку style
можно создать с помощью методов document.classes, document.ids, document.tags и
document.contextual(), более подробные сведения по синтаксису можно получить из опи-
описания этих методов.
В листинге 8.428 приведен пример использования свойства borderColor для установки
синего цвета рамки вокруг текста заголовка.
Листинг 8.428. Установка цаета рамки с помощью свойства borderColor
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который устанавливает цвет рамки,
document.ids.a.borderWidthsA0);
document.ids.a.borderColor = "blue";
</script>
<h2 id="a">y этого текста имеется синяя рамка</Ь2>
</html>
Style, border Left Width JavaScripti.2
style.name.borderLeftWidth
h Свойство borderLeftWidth устанавливает ширину левой границы элемента с именем name.
Поскольку style можно определять с помощью методов document.classes, document.ids,
document.tags и document.contextual(), более подробные сведения по синтаксису можно
получить из описания этих методов.
В листинге 8.429 приведен пример использования свойства borderLeftWidth для установки
размера левой границы текста заголовка. Обратите внимание, что отображается только
левая часть рамки.
Листинг 8.429. Установка ширины левой границы с помощью свойства borderLaftWidth
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет левую границу,
document.ids.BLW.borderLeftWidth = 0";
</script>
648 Часть III. Справочник по JavaScript
<h2 id="BLW">y этого текста имеется левая граиица</Ь2>
</html>
Style.borderRightWidth JavaScrigJ
style.name.borderRightWidth
$2& Свойство borderRightWidth устанавливает ширину правой границы элемента с именем,
•> определенным через параметр пате. Поскольку style можно создать с помощью методов
document.classes, document.ids, document.tags и document.contextual(), более подробные
сведения по синтаксису можно получить из описания этих методов.
у-8 В листинге 8.430 приведен пример использования свойства borderRightWidth для уста-
^^ новки размера правой границы текста заголовка. Обратите внимание, что отображается
только правая часть рамки.
Листинг 8.430. Установка ширины правой границы с помощью
свойства borderRightWidth
<html>
<script type="text/javascript" language^"JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет правую границу,
document.ids.BLW.borderLeftWidth = 0";
</script>
<h2 id="BLW">y этого текста имеется правая граница</Ь2>
</html>
Style.borderStyle JavaScripti.2
style.name.borderStyle
# Свойство borderStyle устанавливает стиль рамки элемента с именем, заданным с помо-
помощью параметра пате. Поскольку style можно создавать с помощью методов
document.classes, document.ids, document.tags и document.contextual(), более подробные
сведения по синтаксису можно получить из описания этих методов.
Свойство borderStyle может принимать одно из следующих значений: none, solid, double,
inset, outset, groove и ridge.
В листинге 8.431 приведен пример использования свойства borderStyle для установки
двойной рамки вокруг текста заголовка.
Листинг 8.431 Установка стиля рамки с помощью свойства borderStyle
<html>
<script type»"text/javascript" language="JavaScript">
//Создать идентификатор таблицы стилей,который образует двойную рамку
document.ids.а.borderWidthsA0);
document.ids.a.borderColor = "red";
document.ids.a.borderStyle = "double";
</script>
<h2 id="a">y этого текста двойная ранка</Ь2>
</html>
Style.borderTopWidth JavaScriptu
style.name.borderTopWidth
Ъ Свойство borderTopWidth устанавливает ширину верхней границы элемента с именем,
которое определяется параметром пате. Поскольку style можно создать с помощью ме-
методов document.classes, document.ids, document.tags и document.contextualQ, более под-
подробные сведения по синтаксису можно получить из описания этих методов.
Глава 8. Клиентская сторона
% В листинге 8.432 приведен пример использования свойства bordeiTopWidth для установки
размера верхней границы текста заголовка. Обратите внимание, что отображается только
верхняя часть рамки.
Листинг 8.432.Установка ширины вврхней границы с помощью свойства borderTopWidth
<html>
<script type="text/;javascript" language="JavaScript">
<!--
// Создать идентификатор таблицы стилей,
// который определяет верхнюю границу.
document.ids.BLW.borderLeftWidth = 0";
// —>
</script>
<h2 id="BLW">y этого текста имеется верхняя граиица</Ь2>
</html>
Style. borderWidths() JavaScripti.2
style.borderWidths{top, right, bottom, left)
style.borderWidths(top-bottom, right-left)
style.borderWidths{all)
Метод borderWidths() устанавливает ширину рамки элемента с именем, которое опре-
определяется с помошью параметра пате. Поскольку style можно создавать с помощью ме-
методов document.classes, docnment.ids, document, tags и document.contextual(), более под-
подробные сведения по синтаксису можно получить из описания этих методов.
Установка ширины рамки эквивалентна установке свойств borderBottomWidtli,
borderLeftWidth, borderRightWidth и bordeiTopWidth. Все аргументы метода borderWidths()
перечислены в табл. 8.32.
Таблица 8.32. Аргументы метода borderWidthsQ
Элемент
top
right
left
bottom
top-bottom
left-right
all
Описание
Ширина верхней границы
Ширина правой границы
Ширина левой границы
Ширина нижней границы
Ширина верхней и нижней границ
Ширина левой и правой границ
Ширина всех сторон рамки
В листинге 8.433 приведен пример использования метода borderWidths() для установки
ширины рамки вокруг текста заголовка.
Листинг 8.433. Устаноака ширины всей рамки с помощью метода borderWidthsl)
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей, который определяет рамку,
document.ids.a.borderWidthsE,10,15,20);
</script>
<h2 id="a">y этого текста есть граница</Ь2>
</html>
Style.clear JavaScrigJJ;J
style.clear
650 Часть III. Спрвеочник по JavaScript
# Свойство clear определяет стороны элемента, для которых не разрешены плавающие эле-
элементы (элементы, которым назначено свойство align). Это свойство связывается со сти-
стилем style с помощью точечной нотации. Поскольку style можно создавать с помощью ме-
методов document.classes, document.ids, document.tags и document.contextual(), более
подробные сведения по синтаксису можно получить из описания этих методов.
Свойство dear может принимать одно из следующих значений: left, right, both и none.
В листинге 8.434 приведен пример использования свойства clear для предотвращения
появления плавающих элементов на обеих сторонах элемента.
Листинг 8.434. Пример использования свойства clear
<html>
<script type="text/javascript" language="JavaScript">
// Создать классы и идентификаторы стилей,
// которые устанавливают тип выравнивания,
document.classes.LEFT.all.align = "left";
document.classes.LEFT.all.backgroundColor = "yellow";
document.classes.RIGHT.all.align = "right";
document.classes.RIGHT.all.backgroundColor = "red";
document.ids.KEEPAWAY.clear = "both";
</script>
<p class="LEFT">BbipoBHHii меня по левому краю!</р>
<p class="RIGHT">BupoBHHft меня по правому краю!</р>
<р>Я не хочу, чтобы возле меня были другие элементы!</р>
<р class="LEFT"> Выровняй меня по левому краю!</р>
<р class="RIGHT">BbipoBHHii меия по правому крЗю!</р>
<р id="KEEPAWAY">H не Хочу,чтобы возле меня были другие элементы!</р>
</html>
Style, color JavaScriE4
style.color
i Свойство color устанавливает цвет переднего плана элемента, соответствующий стилю
style. Поскольку style можно создать с помощью методов document.classes, document.ids,
document.tags и document.contextual(), более подробные сведения по синтаксису можно
получить из описания этих методов.
В листинге 8.435 приведен пример использования свойства color для установки цветов
текста.
Листинг 8.435. Определение цвета текста с помощью свойства color
<html>
<script type="text/javascript" languages"JavaScript">
// Создать классы таблиц стилей, которые устанавливают цвета,
document.ids.BLUE.color = "blue";
document.ids.RED.color = "red";
</script>
<p id="BLUE">rony6ou кораблик плавает по голубому океану.</р>
<p id="RED">KpacHbUt автомобиль остановился у красного сигнала
светофора.</р>
</html>
Style.display JavaScrS
style.display
& Свойство display определяет отображаемый элемент, соответствующий стилю style. По-
Поскольку style можно создать с помощью методов document.classes, document.ids,
document.tags и document.contextual), бэлее подробные сведения по синтаксису можно
получить из описания этих методов.
Глава 8. Клиентская стороне Ь О I
Свойство display может принимать одно из следующих значений: inline, block, list-item
и none.
Использование значения inline эквивалентно использованию дескриптора <еш>. Приме-
Применение значения block аналогично созданию заголовков с помощью дескрипторов <hl>—
<h6>. Использование значения list-item эквивалентно использованию дескриптора <li>.
Если указано значение попе, элемент на экране не отображается.
В листинге 8.436 приведен пример применения свойства display для создания заголовка.
Параметр block определяет символ разрыва строки и ширину границы, равными значе-
значениям, заданным по умолчанию. Обратите внимание, что в приведенном примере сим-
символ возврата каретки перед дескриптором bold вставляется автоматически.
Листинг 8.436. Определение значения свойства display
<html>
<script type="text/javascript" language="JavaScript">
<! —
// Создать идентификатор таблицы стилей, который
// устанавливает блочное отображение элементов,
document.ids.H.display = "block";
// —>
</script>
<u id="H">B<MIbniOil ЗАГОЛОВОК</и>
Обычный текст, который следует sa БОЛЬШИМ ЗАГОЛОВКОМ.
</html>
Style.fontFamily JavaScriSa1v4
style.fontFamily
Свойство fontFamily определяет шрифт, соответствующий стилю style, который будет
использоваться элементом. Поскольку style можно создать с помощью методов
document.classes, document.ids, document.lags и document.contextual(), более подробные
данные по синтаксису можно получить из описания этих методов. Допускается указывать
несколько шрифтов, на случай если определенный шрифт не установлен.
В листинге 8.437 приведен пример использования свойства fontFamily для создания тек-
текста с шрифтом Arial. Если шрифт Arial отсутствует, будет использоваться шрифт Helvetica.
Листинг 8.437. Задание значения свойства fontFamily
<html>
<script type="text/javascript" language="JavaScript">
<! --
// Создать идентификатор таблицы стилей, который определяет шрифт,
document.ids.F.fontFamily = "Arial, Helvetica";
// —>
</script>
<p id="F">BaM нравится этот шрифт?</р>
</html>
Style.fontSize JavaScrigrLj
style.fontSize
\ Свойство fontSize определяет кегль шрифта, соответствующий стилю style, который бу-
будет использоваться элементом. Поскольку style можно создать с помощью методов
document.classes, documenf.ids, document.tags и document.contextual(), более подробные
сведения по синтаксису можно получить из описания этих методов. Значения, которые
используются для назначения размеров кегля шрифта, можно разделить на четыре ка-
категории, как показано в табл. 8.33.
652
Таблица
Категория
Абсолютное задание размера
Относительное задание размера
Часть III. Справочник по JavaScript
8.33. Кегли шрифтов
Значение
xx-small
x-small
small
medium
large
x-large
xx-large
smaller (меньше размера кегля шрифта
родительского элемента)
larger (больше размера кегля шрифта родительского
элемента)
Длина Число с указанием единиц измерения
Процентное задание размера Размер кегля по отношению к размеру кегля
шрифта родительского элемента
В листинге 8.438 приведен пример абсолютного задания размера кегля шрифта с помо-
помощью свойства fontSize.
Листинг 8.438. Задание значения свойства fontSizB
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
/ / который определяет размер кегля шрифта.
document.ids.XXS.fontSize = "xx-small";
document.ids.XXL.fontSize = "xx-large";
</script>
<p id="XXS">Hy о-о-очень маленький шрифт</р>
<P id="XXL">CoBepmeHHO огромный шрифт</р>
</html>
Style.fontStyle JavaScrS
style.fontStyle
& Свойство fontStyle определяет стиль шрифта, соответствующий стилю style, который будет
использоваться элементом. Поскольку style можно создать с помощью методов
document.classes, document.ids, document.tags и document.contextual(), более подробные
сведения по синтаксису можно получить из описания этих методов.
Свойство fontStyle может принимать одно из следующих значений: normal или italic.
В листинге 8.439 приведен пример использования свойства fontStyle для применения
курсивного стиля.
Листинг 8.439. Определение значения свойстаа fontStyle
<html>
<script type="text/javascript" languages"JavaScript">
// Создать идентификатор таблицы стилей,
/ / который определяет стиль шрифта.
document.ids.I.fontStyle = "italic";
</script>
Глава 8. Клиентская сторона DUO
<h2 1с1=">Курсивный заголовок</Ь2>
</html>
Style.fontWeight JavaScriRav4
style.fontWeight
f Свойство foutWeight определяет начертание шрифта, соответствующий стилю style, ко-
который будет использоваться элементом. Поскольку style можно создать с помощью ме-
методов document.classes, document.ids, document.tags и document.contextual(), более под-
подробные сведения по синтаксису можно получить из описания этих методов.
Свойство fontWeight может принимать одно из следующих значений: normal, bold,
bolder, lighter или значения от 100 до 900.
L/f В листинге 8.440 приведен пример использования свойства fontWeight для применения
W различных начертаний текста.
Листинг 8.440. Задание значения свойства fontWeight
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет начертание шрифта,
document.ids.Wl.fontWeight = 100;
document.ids.W4.fontWeight = 400;
document.ids.W9.fontWeight = 900;
</script>
<p 1с1="К11">Начертание шрифта 100</р>
<p id="W4">Ha4epTaHne шрифта 400</р>
<p id="W9">Ha4epTaHHe шрифта 900</р>
</html>
Style.lineHeight JavaScriKav4
style.lineHeight
f Свойство lineHeight определяет расстояние между двумя соседними строками. Это свой-
свойство связывается со стилем style за счет применения точечной записи. Поскольку style
можно создать с помощью методов document.classes, document.ids, document.tags и
document.contextual(), более подробные сведения по синтаксису можно получить из опи-
описания этих методов.
Свойство lineHeight может принимать одно из следующих четырех значений: number,
length, percentage и normal.
Если задано число без указания единиц измерения, то для получения расстояния меж-
между базовыми линиями оно умножается на размер кегля шрифта элемента. Если число
задано с указанием единиц измерения, оно соответствует расстоянию между базовыми
линиями. Если в значении присутствует знак процента (%), то расстояние между базо-
базовыми линиями задается в процентах от расстояния между базовыми линиями родитель-
родительского элемента.
В листинге 8.441 приведен пример использования свойства lineHeight для задания рас-
расстояния между базовыми линиями. В экземпляре "D1" расстояние равно 1 дюйм, в эк-
экземпляре "D2" — 50 точек.
Листинг 8.441. Определение значения свойства lineHBight
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей, который
// определяет расстояние между базовыми линиями,
document.ids.Dl.lineHeight = "lin";
document.ids.D2.lineHeight = 0pt";
654 Часть ill. Справочник по JavaScript
//
</script>
<р>Это первая строка текста</р>
<р id="Dl">3To вторая строка текста. </р>
<р>Это третья строка текста.</р>
<р id="D2">3TO четвертая строка текста.</р>
<р>Это пятая строка текста.</р>
</html>
Style. HstStyleType JavaScripm
style.liststyleType
\ Свойство listStyleType определяет формат элементов списка, соответствующих стилю style.
Поскольку style можно создать с помощью методов document.classes, document.ids,
document.tags и document.contextual(). более подробные данные по синтаксису можно
получить из описания этих методов.
Свойство HstStyleType может принимать одно из девяти значений: disc, circle, square,
decimal, lower-roman, upper-roman, lower-alpha, upper-alpha и none.
ПРИМЕЧАНИЕ
Свойство HstStyleType влияет на вид отображаемых элементов только
е том случее, если значение свойства display установлено равным list-item.
В листинге 8.442 приведен пример использования свойства IistStyleType для форматиро-
форматирования списка элементов.
Листинг 8.442. Задание значения свойства IistStyleType
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Создать класс и идентификатор таблицы стилей,
// который определяет формат элементов списка,
document.classes.LIST.all.display = "list-item";
document.ids.FORMAT.IistStyleType = "upper-roman";
// —>
</script>
<п2>Содержание преаентации</п2>
class="LIST" id="FORMAT">
<1х>Введение</И>
<li>06sop нового продукта</11>
<11>Стоимость продукта</11>
<11>Заключение</11>
</html>
Style, margin Bottom JavaScripti.2
style.marginBottom
& Свойство marginBottom определяет минимальное расстояние между нижней границей
данного элемента и верхней границей соседнего элемента. Это свойство связывается со
стилем style за счет применения точечной нотации. Поскольку style можно создать с по-
помощью методов document.classes, document.ids, document.tags и document.contextual(),
более подробные сведения по синтаксису можно получить из описания этих методов.
% В листинге 8.443 приведен пример использования свойства marginBottom с целью опре-
деления расстояния между соседними элементами.
Листинг 8.443. Определение размера нижнего поля с помощью свойства marginBottom
<html>
<script type="text/javascript" languages"JavaScript">
Глава 8. Клиентская сторона Ь55
// Создать класс и идентификатор таблицы стилей,
// который определяет размер поля снизу.
document.classes.FORMAT.all.borderWidthsA0);
document.ids.margin.marginBottom = 40;
// —>
</script>
<Ь>Раамеры моих полей устанавливаются автоматически</Ь>
<Ь class="FORMAT" id="margin">y меня большое поле снизу!</Ь>
<Ь>Размеры моих полей устанавливаются автоматически </Ь>
</html>
Style, margin Left JavaScriRav4
style.marginLeft
f Свойство margbiLeft определяет минимальное расстояние между левой границей данно-
данного элемента и правой границей соседнего элемента. Это свойство связывается со стилем
style за счет применения точечной нотации. Поскольку style можно создать с помощью
методов document.classes, document.ids, document.tags и document.contextual(), более под-
подробные сведения по синтаксису можно получить из описания этих методов.
В листинге 8.444 приведен пример использования свойства marginLeft для задания рас-
расстояния между соседними элементами. Обратите внимание на расстояние между рамкой
и левым краем окна браузера.
Листинг 8.444. Определение размера поля слеве с помощью свойства rrmrginLeft
<html>
<script type="text/javascript" language="JavaScript">
<!--
// Создать идентификатор таблицы стилей,
// который определяет размер поля слева
document.classes.FORMAT1.all.borderWidthsA0);
document.ids.margin.marginLeft = 40;
document.classes.FORMAT2.all.borderWidthsA0);
// — >
</script>
<p class="FORMATl" id="margin">y меня большое поле слева!</р>
<р class="F0RMAT2">Pa3Mep моего поля слеза устанавливается
автоматически</р>
</html>
Style.marginRight JavaScriP*1vJ
style.marginRight
Свойство margmRight определяет минимальное расстояние между правой границей дан-
данного элемента и левой границей соседнего элемента. Это свойство связывается со сти-
стилем style за счет применения точечной нотации. Поскольку style можно создать с помо-
помощью методов document.classes, document.ids, document.tags и document.contextual(), более
подробные сведения по синтаксису можно получить из описания этих методов.
i В листинге 8.445 приведен пример использования свойства marginRight для определения
" расстояния между соседними элементами. Обратите внимание на расстояние между рамкой
и правым краем окна браузера.
Листинг 8.445. Определение размера поля справа с помощью сеойства marginRight
<html>
<script type="text/javascript" language="JavaScript">
<! —
// Создать идентификатор таблицы стилей,
// который определяет размер поля справа.
document.classes.FORMAT.all.borderWidthsA0);
document.ids.marginl.marginRight = 40;
document.ids.margin2.marginRight = 0;
656 Часть III. Справочник по JavaScript
</script>
<p class="FORMAT" id="marginl">y меня большое поле справа!</р>
<р class="FORMAT" id="margin2">PaaMep моего правого поля
устанавливается автоматически</р>
</html>
Style.margins() JavaScripti.2
style.margins(top, right, bottom, left)
style.margi-пв (top-bottom, right-left)
style.margins(all)
# Метод margins() определяет размер полей между рамкой данного элемента и рамками
соседних элементов. Это свойство связывается со стилем style за счет применения точеч-
точечной нотации. Поскольку style можно создавать с помощью методов document.classes,
document.ids, document.tags и docunient.contextuaH), более подробные данные по синтак-
синтаксису можно получить из описания этих методов.
Задание размеров полей эквивалентно заданию свойств marginBottom, margiiiLeft,
marginRight и marginTop. Все аргументы метода margins() перечислены в табл. 8.34.
Элемент
top
right
left
bottom
top-bottom
left-right
all
Таблица 8.34. Аргументы метода
Описание
Ширина поля сверху
Ширина поля справа
Ширина поля слева
Ширина поля снизу
Ширина полей сверху и
Ширина полей слева и
Ширина всех полей
marginsf)
снизу
справа
В листинге 8.446 приведен пример использования метода margins() с целью определе-
определения ширины всех полей вокруг элемента
Листинг 8.446. Определение резмеров всех полей с помощью методв rriBrginsO
<html>
<scrxpt type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет раамеры полей,
document.classes.FORMAT.all.borderWidthsA0);
document.ids.margin.marginsE0);
</script>
<h2 class="FORMAT" id="niargin">fflKpHHa полей этого текста
составляет 50</h2>
</html>
Style.marginTop JavaScriC
style.marginTop
fip& Свойство marginTop определяет минимальное расстояние между верхней границей дан-
<■ ного элемента и нижней границей соседнего элемента. Это свойство связывается со стилем
style за счет применения точечной нотации. Поскольку style можно создать с помощью
методов document.classes, document.ids, document.tags и document.contextual(), более под-
подробные сведения по синтаксису можно получить из описания этих методов.
Глава 8. Клиентская сторона Ь U 7
В листинге 8.447 приведен пример использования свойства marginTop для задания рас-
расстояния между соседними элементами.
Листинг 8.447. Задание размера поля сверху с помощью свойства marginTop
<html>
<script type="text/javascript" language^"JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет размер поля сверху,
document.classes.FORMAT.all.borderWidthsA0);
document.ids.margin.marginTop = 40;
</script>
<Ь>Размеры моих полей устанавливаются автоматически</Ь>
<Ь class="FORMAT" id="margin">y меня большое поле сверху!</Ь>
<Ь>Размеры моих полей устанавливаются автоматически</Ь>
</html>
Style.paddingBottom JavaScripti.|
style.paddingBottom
I Свойство paddingBottom определяет минимальное расстояние между нижней границей
элемента и его содержимым. Это свойство связывается со стилем style за счет примене-
применения точечной нотации. Поскольку style можно создать с помощью методов
document.classes, document.ids, document.tags и document.contextual(), более подробные
данные по синтаксису можно получить из описания этих методов.
В листинге 8.448 приведен пример использования свойства paddingBottom для задания
расстояния между строкой текста и его рамкой.
Листинг 8.448. Задание просвета снизу с помощью свойства paddingBottom
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет размер просвета снизу,
document.classes.FORMAT.all.borderWidthsA0)
document.ids.PAD.paddingBottom = 0";
</script>
<p class="FORMAT" id="PAD">flnH этого текста увеличен размер
просвета снизу.</р>
</html>
Style.paddingLeft JavaScri(£[;J
style.paddingLeft
& Свойство paddingLeft определяет минимальное расстояние между левой границей элемента
и его содержимым. Это свойство связывается со стилем style за счет применения точеч-
точечной нотации. Поскольку style можно создать с помощью методов document.classes,
documenUds, docnment.tags и document.contextual(), более подробные сведения по син-
синтаксису можно получить из описания этих методов.
В листинге 8.449 приведен пример использования свойства paddingLeft для определения
расстояния между строкой текста и его рамкой.
Листинг 8.449. Задание просвета слева с помощью свойства paddingLeft
<html>
<script type="text/javascript" language^"JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет размер просвета слева.
document.classes.FORMAT.all.borderWidthsA0)
658 Часть III. Справочник по JavaScript
document.ids.PAD.paddingLeft = 0";
// —>
</script>
<p class="FORMAT" id="PAD">y этого текста увеличен размер просве-ra
слева.</р>
</html>
Style.paddingRight JavaScripti.2
style.paddingRight
# Свойство paddingRight определяет минимальное расстояние между правой границей эле-
элемента и его содержимым. Это свойство связывается со стилем style за счет применения
точечной нотации. Поскольку style можно создать с помощью методов document.classes,
document.ids, document.tags и document.contextual(), более подробные сведения по син-
синтаксису можно получить из описания этих методов.
В листинге 8.450 приведен пример использования свойства paddingRight для задания рас-
расстояния между строкой текста и его рамкой.
Листинг 8.450. Задание просвета справа с помощью свойства paddingRight
<html>
<script type="texfc/javascript" language="JavaScript">
<!--
// Создать идентификатор таблицы стилей,
// который определяет размер просвета справа.
document.classes.FORMAT.all.borderWidthsA0)
document.ids.PAD.paddingRight = 0";
// —>
</script>
<p class="FORMAT" id="PAD">y этого техспа увеличен размер просвета
справа.</р>
</html>
Style.paddings() JavaScriffi
style.paddings(top, right, bottom, left)
style.paddings(top-bottom, right-left)
style.paddings(all)
& Метод paddings() определяет расстояние между рамкой элемента и его содержимым. Это
свойство связывается со стилем style за счет применения точечной нотации. Поскольку
style можно создать с помощью методов document.classes, document.ids, document.tags и
document.contextualO, более подробные сведения по синтаксису можно получить из опи-
описания этих методов. Применение метода paddings() эквивалентно заданию значений
свойств paddingBottom, paddingLeft, paddingRight и paddingTop. Перечень всех аргумен-
аргументов метода paddings() приведен в табл. 8.35.
Элемент
top
right
left
bottom
top-bottom
left-right
all
Таблица 8.35. Аргументы метода paddmgsO
Описание
Просвет между верхней границей и содержимым
Просвет между правой границей и содержимым
Просвет между левой границей и содержимым
Просвет между нижней границей и содержимым
Просвет между верхней и нижней границами и содержимым
Просвет между левой и правой границами и содержимым
Просвет между содержимым и всеми границами
Глава 8. Клиентская сторона
В листинге 8.451 приведен пример использования метода paddings() для задания рассто-
расстояния между текстом и всеми четырьмя сторонами его рамки.
Листинг 8.451. Задание всех просветов с помощью метода paddingsO
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет размер всех просветов,
document.classes.FORMAT.all.borderWidthsE);
document.ids.PAD.paddings@,20,40,60);
</script>
<p class=" FORMAT" id="PR.V)">Rjiss этого текста увеличен просвет со
всех сторон.</р>
</html>
Style. paddingTop JavaScrigM.2
s tyle.paddingTop
& Свойство paddingTop определяет минимальное расстояние между верхней границей эле-
' мента и его содержимым. Это свойство связывается со стилем style за счет применения
точечной нотации. Поскольку style можно создать с помощью методов document.classes,
document.ids, document.tags и document.contextual), более подробные данные по синтак-
синтаксису можно получить из описания этих методов.
В листинге 8.452 приведен пример использования свойства paddingTop для задания рас-
расстояния между строкой текста и его рамкой.
Листинг 8.452. Задание просвета сверху с помощью свойства paddingTop
<htmi>
<script type="text/javascript" language="JavaSctipt">
// Создать идентификатор таблицы стилей,
// который определяет размер просвета сверху,
document.classes.FORMAT.all.borderWidthsA0)
document.ids.PAD.paddingTop = 0";
</script>
<p class="FORMAT" id="PAD">y этого текста увеличен размер просвета
сверху.</р>
</html>
Style, text Align JavaScripti.2
style.textAlign
& Свойство textAlign задает выравнивание текста внутри элемента, соответствующего сти-
' лю style. Поскольку style можно создать с помощью методов document.classes,
document.ids, document.tags и document.contextual(), более подробные сведения по син-
синтаксису можно получить из описания этих методов.
Свойство textAlign может принимать одно из следующих четырех значений: Left, right,
center и justify.
В листинге 8.453 приведен пример использования свойства textAlign для выравнивания
текста по правому краю.
Листинг 8.453. Задание значения свойства textAlign
<html>
<script type="fcext/javascript" language—"JavaScript">
// Создать идентификатор таблицы стилей, который
// определяет выравнивание текста по правому краю,
document.classes.FORMAT.all.borderWidthsA0)
660 Часть III. Справочник по JavaScript
document.ids.RIGHT.textAlign = "right";
</script>
<p class="FORMAT" id=" RIGHT ">Э!Го!Г некст выравнивается по правому
краю.</р>
</html>
Style, text Decoration JavaScrffi
style.textDecoration
# Свойство textDecoration задает тип специальных текстовых эффектов элемента, соответ-
соответствующего стилю style. Поскольку style можно создать с помощью методов
document.classes, document.ids, document.tags и document.contextualQ, более подробные
сведения по синтаксису можно получить из описания этих методов.
Свойство textDecoration может принимать одно из следующих четырех значений:
underline, line-through, blink и none.
В листинге 8.454 приведен пример использования свойства textDecoration для установки
зачеркивания текста.
Листинг 8.454. Задание значения свойства textDecoration
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет специальные эффекты.
document.ids.CROSSOUT.textDecoration = "line-through";
</script>
<p id="CR0SS0UT">3!TO!r векст зачеркнут. </р>
</html>
Style.textlndent JavaScriSm
style.textlndent
Ъ Свойство textlndent задает размер абзаца текста элемента, соответствующего стилю style.
Поскольку style можно создавать с помощью методов document.classes, document.ids,
document.tags и document.contextual(), более подробные сведения по синтаксису можно
получить из описания этих методов.
В листинге 8.455 приведен пример использования свойства textlndent для установки аб-
абзаца размером в 1 дюйм.
Листинг 8.455. Задание значения свойства textlndent
<html>
<script type="text/javascript" language="JavaScript">
//Создать идентификатор таблицы стилей,который определяет размер абзаца
document.ids.INDENT.textlndent = "lin";
</script>
<р>Этот текст выводился без абзаца.</р>
<р id=" INDENT ">Размер абзаца эаюго -гекс-га равен 1 дюйм.</р>
</html>
Style.textTransform JavaScrffi
style.textlransform
& Свойство textTransform задает преобразование, которое должно применятся к тексту эле-
элемента, соответствующего стилю style. Поскольку style можно создавать с помощью мето-
методов document.classes, document.ids, document.tags и document.contextual(), более подробные
сведения по синтаксису можно получить из описания этих методов.
Гпааа 8. Клиентская сторона
661
Свойство textTransform может принимать одно из следующих четырех значений: capitalize,
uppercase, lowercase и none.
В листинге 8.456 приведен пример использования свойства textTransform для преобра-
преобразования в заглавную первой буквы каждого слова в предложении.
Листинг 8.456. Задание значения свойства textTransform
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей, который определяет
// преобразование к верхнему регистру,
document.ids.CAP.textTransform = "capitalize";
</script>
<p id="CAP">3Ta строка демонстрирует возможность преобразования
букв к верхнему регистру.</р>
</html>
Style.unwatch() JavaScriPja1vJ
style.unwatch(свойство)
$ Метод unwatch() объекта Style используется для прекращения отслеживания свойства,
указанного с помощью параметра свойство.
В листинге 8.457 приведен пример использования метода unwatch() для прекращения
отслеживания свойства textTransform.
Листинг 8.457. Пример использования метода unwatch()
<html>
<head>
<script type="text/javascript" language35"JavaScriptl. 2">
function alertme(id, oldValue, newValue){
document.writeln("ID (" + id + ") изменилось с " + oldValue
+ " на ") ;
document.writeln(newValue + "<br>");
return newValue;
document.ids.CAP.watch("textTransform", alertme);
document.ids.CAP.textTransform = "capitalize";
document.ids.CAP.unwatch("textTransform");
document.ids.CAP.textTransform = "lowercase";
</script>
</head>
<body>
<p id="CAP">3Ta строка демонстрирует возможность преобразования
слов к верхнему регистру</р>
</body>
</html>
Style.watch() JavaScri{K
style.watch(свойство, функция)
k Метод watch() объекта Style используется для установки отслеживания изменениий свой-
свойства, определенного параметром свойство. При изменении свойства property после вы-
вызова метода watch() вызывается функция function.
В листинге 8.458 приведен пример использования метода watch() для установки отсле-
отслеживания изменений свойства р.
Листинг 8.458. Пример использования метода watchf)
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
Ь Ь С. Часть III. Справочник по JevaScript
function alertme(id, oldValue, newValue){
document.writeln("ID (" + id + ") изменилось с " + oldValue
+ " на ") ;
document.writejn(newValue + "<br>");
return newValue ,*
}
document.ids.CAP.watch("textTransform", alertme);
document.ids.CAP.textTransform = "capitalize";
// —>
</script>
</head>
<body>
<p id="CAP">3Ta строка демонстрирует возможность преобразования
слов к верхнему регистру.</р>
</body>
</html>
Style.whiteSpace JavaScrS24
style.whiteSpace
# Свойство whiteSpace определяет, каким образом будут интерпретироваться пробелы внут-
внутри текста элемента. Это свойство связывается со стилем style за счет применения точеч-
точечной нотации. Поскольку style можно создать с помощью методов document.classes,
document.ids, document-tags и document.contextual(), более подробные данные по синтак-
синтаксису можно получить из описания этих методов.
Свойство whiteSpace может принимать одно из следующих двух значений: normal and pre.
В листинге 8.459 приведен пример использования свойства whiteSpace с целью опреде-
определения сжатия пробелов в тексте элемента.
Листинг 8.459. Определение значения свойства whiteSpace
<html>
<script type="text/javascript" language="JavaScript">
// Создать идентификатор таблицы стилей,
// который определяет тип интерпретации пробелов.
document.ids.NOPRE.whiteSpace = "normal";
// —>
</script>
<pXpre>B эфой строке для форматирования пробелов используется
дескриптор PRE.</рге></р>
<р id="NOPRE">B эфой строке пробелы должны быть сжаты.</р>
</html>
Style.width JavaScripti.2
style.width
j| Свойство width объекта Style используется для задания ширины блочного элемента. Свой-
Свойство может принимать длину, процентное значение или ключевое слово auto, которое
указывает браузеру Navigator 4 на то, что следует определять ширину автоматически. Ниже
приведен короткий пример применения синтаксиса.
// Длина.
myStyle.width = 12pt;
/ / Процентное соотношение.
myStyle.width = 75%;
/ / Автоматическое определение.
myStyle.width = auto;
Глава 8. Клиентская сторона
663
В листинге 8.460 приведен пример использования свойства width для установки шири-
ширины рамки элемента <р> равной 12 точкам.
Листинг 8.460. Пример использования свойства width для установки ширины рамки
элемента.
<html>
<head>
<scrxpt type="text/javascript" language="JavaScript">
<! —
// Установить ширину рамки дескриптора <р> равной 12 точкам,
document.ids.border.width = 12pt;
// — >
</script>
</head>
<body>
<p 1с1="Ьогс1ег">Ширина рамки этого текста равна 12 точек. </р>
</body>
</html>
«inhmit JavaScript1.0+, JScript1.0+
5ublT1lt Nav2+, IH+. Opera3+
Основной объект клиентской части языка JavaScript.
Объект Submit является одним из основных объектов языка JavaScript. Экземпляры это-
этого объекта создаются в браузере с помощью HTML-дескриптора <input>, значение ат-
атрибута type которого установлено равным submit. В иерархии JavaScript-объектов объект
Snbmit выглядит следующим образом: window.document.Form.Submit. Свойства, методы и
события объекта Submit перечислены в табл. 8.36.
НЙШШМШЗ Начиная с Navigator 4, для отправки формы по протоколам mailto: и
news: необходим уровень привилегий UniversalSendMail.
Таблица 8.36. Обработчики событий, методы и свойства объекта Submit
Тип
Элемент
Описание
Обработчик onBlur
событий
Выполняет указанный код при потере кнопкой отправки фокуса.
Этот обработчик появился в JavaScript 1.1.
onClick
Выполняет указанный код при щелчке на кнопке отправки.
onFocus Выполняет указанный код при получении кнопкой отправки фокуса.
Этот обработчик появился в JavaScript 1.1.
Метод blur() Убирает фокус с кнопки отправки. Этот метод появился в
JavaScript 1.1.
click()
Имитирует щелчок мышью на кнопке отправки.
focus() Переносит фокус на кнопку отправки. Этот метод был введен в
JavaScript 1.1.
handleEvent() Вызывает обработчик указанного события. Этот метод был введен
в JavaScript 1.2.
unwatch() Используется для прекращения отслеживания свойства объекта.
watch()
Используется для установки отслеживания свойства объекта.
Свойство form
Возвращает всю форму, в которой находится кнопка отправки.
name
Возвращает имя кнопки отправки, указанное в атрибуте name.
664
Тип
Элемент
type
value
Часть III. Справочник по JavaScript
Описание
Возвращает тип кнопки отправки, указанный в атрибуте type. Это
свойство всегда возвращает значение submit. Это свойство было
введено в JavaScript 1.1.
Возвращает значение кнопки отправки, указанное в атрибуте value.
В листинге 8.461 приведен пример использования свойств объекта Submit. На странице
находятся окно выбора и кнопка отправки. При щелчке на кнопке открывается второе
окно, в котором выводятся значения свойств объекта Submit.
Листинг 8.461. Вывод на экран значений свойств экземпляра объекта Submit
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
//Объявить функцию openHxn, которая вызывается при щелчке на кнопке.
function openWin(){
// Для упрощения доступа поместите ссылку на кнопку отправки
// в переменную.
var myInstance = document.myForm.mySubmxt;
// Открыть окно для отображения результатов.
var myWin = open("", '"" , "width=450 ,hexght=200") ;
// Вывести в окне результатов значения свойств кнопки отправки.
myWin.document.write("Имя: " + mylnstance.name + "<br>");
myWin.document.write("Тип: " + mylnstance.type + "<br>");'
// Обратите внимание, что это свойство возвращает весь объект Form
// Это позволяет определять значения свойств
// других элементов формы.
myWin. document.write ("Свойство form можно использовать для определения ") ;
myWin.document.write("значения кнопки: ") ;
myWin.document.write(mylnstance.form.mySubmit.value);
// Закрыть поток, направленный в окно.
myWin.document.close();
)
// —>
</scrxpt>
</head>
<body>
<form name="myForm">
<xnpufc type="text" Уа1ие=дравс!гвуй, мир!" name="myText">
<input type="submit" value="O!rnpaBH'rb" name="mySubmit"
onclick="openWin()">
</form>
</body>
</html>
JavaScript1.O+. JScript1.O+
№v2+ |E3+ Opera3+
submlt.blur()
Метод blur() объекта Submit убирает фокус с кнопки. Будьте осторожны при использо-
использовании этого метода совместно с методом Submit.focus(). Подобное применение может
привести к зацикливанию при получении/снятии фокуса, когда браузер снимает с кнопки
фокус сразу же после получения фокуса и наоборот.
В листинге 8.462 на странице находятся текстовое поле и кнопка отправки. Если пользо-
пользователь щелкает на кнопке Click Here to Remove Focus (Чтобы убрать фокус, нажмите эту
кнопку), кнопка отправки потеряет фокус. Для просмотра действия метода blur() луч-
лучше всего выделить кнопку с помощью клавиши Tab, а затем нажать ее. При переходе
к кнопке с помощью клавиши Tab можно увидеть, когда кнопка получит фокус.
Глава 8. Клиентская сторона ЬЬЬ
Листинг 8.462. Пример использования метода Ыиг() для снятия фокуса
с кнопки отправки
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Объявить функцию removeFocus,
// которая будет вызываться при щелчке на кнопке.
function removeFocus(){
// Убрать фокус с кнопки отправки.
document.myForm.mySubmit.blur();
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="text" Уа1ие=дравствуй, мир!" name="myText">
<input type="submit"
value="'4To6bi убрать фокус, нажмите эту кнопку" name=" my Submit"
onclick="removeFocus()">
</form>
</body></html>
Submit clickH JavaScript1.O+, JScript1.O+
ouDmn.ciiCKU Nav2+ ,E3+ Opera3+
submit.click()
f Метод ciick() экземпляра объекта Submit имитирует щелчок на кнопке отправки. Обра-
Обратите внимание, если для кнопки определен обработчик события onClick, он вызывать-
вызываться не будет.
В листинге 8.463 на странице находятся текстовое поле, кнопка отправки и ссылка. При
щелчке на ссылке вызывается функция, которая проверяет, ввел ли пользователь текст в
текстовое поле. Если текст отсутствует, на экран выводится окно предупреждения. Если
пользователь ввел текст, функция передает данные, вызывая метод click() кнопки отправки.
Листинг 8.463. Пример использования метода click!) для отправки формы
<html>
<head>
<script language="JavaScript" type="text/javascript">
//Объявить функцию submitForm, которая будет передавать данные формы
function submitForm(){
/ / Проверить, введен ли текст.
if(document.myForm.myText.value == ""){
alert("Пожалуйста, сначала введите текст");
} else{
// Для отправки формы испольвовать метод click().
document. ntyForm. my Submit. click () ;
</script>
</head>
<body>
<form name="myForm">
Пожалуйста, введите текст и щелкните на ссылке.<br>
<input type="text" value="" name ="myText">
<input type="submit" value="OTnpaBHTb" name="mySubmit">
</form>
<br>
<a href="javascript:submitForm()">Для отправки формы щелкните на
этой ссылке</а>
</body></html>
ODD Часть 111. Справочник по JavaScript
Submit.focus()
submit.focuB()
Метод focus() объекта Submit переносит фокус на кнопку отправки. Будьте осторожны
при использовании этого метода совместно с методом Submit.blur(). Подобное исполь-
использование может привести к зацикливанию операций получения/снятия фокуса, когда бра-
браузер снимает с кнопки фокус сразу же после получения фокуса и наоборот.
В листинге 8.464 на странице находятся текстовое поле и кнопка отправки. Если пользо-
пользователь щелкнет мышью в текстовом поле, фокус будет перемещен на кнопку отправки.
Листинг 8.464. Пример использования метода focusl) для переноса фокуса на
кнопку отправки.
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Объявить функцию setFocus, которая будет вызываться при щелчке
// мышью в текстовом поле,
function setFocus(){
// Переместить фокус на кнопку отправки,
document.myForm.mySubmit.focus();
</script>
</head>
<body>
<form name="myFormI1>
<input type="text" value="Здравствуй, мир!"
name="niyText" onfocus="setFocus () ">
<input type="submit" value="OTnpaBHTb" name="mySubmit">
</form>
</body>
</html>
JavaScript1.O+, JScript1.O+
Nav2+, IE3+, Opera3+
submit.form
5 Свойство form экземпляра объекта Submit предоставляет доступ ко всем данным формы,
на которой находится данная кнопка отправки.
В листинге 8.465 на странице находятся текстовое поле и кнопка отправки. При нажатии
на кнопку на экран выводятся значения трех свойств формы. Эти значения определяются
с помощью свойства form кнопки отправки.
Листинг 8.465. Получение доступа к форме с помощью свойства form экземпляра
объекта Submit
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Объявить функцию openWin, которая будет вызываться при щелчке
// на кнопке,
function openWin(){
// Для упрощения доступа к свойству form кнопки отправки
// назначить ссылку на кнопку переменной.
var formData = document.myForm.mySubmit.form;
// Открыть окно ревультатов.
var myWin = open("", "","width=450,height=200");
// Вывести в окно результатов значения свойств,
// полученных с помощью свойства form.
myWin.document.write("Имя формы: " + formData.name + "<br>");
myWin.document.write("Значение текстового поля: ");
Глава 8. Клиентская сторона ЬЬ /
myWin.document.write(formData.myText.value + "<br>");
myWin.document.write("Имя кнопки: ") ;
myWin.document.write(formData.elements[1].name + "<br>");
// Закрыть поток, направленный в окно.
myWin.document.close();
)
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="text" value=flpaBC!TByu, мир!" name="myText">
<input type="button" value="Обработать" name="mySubmit"
onclick="openwin()">
</form>
</body>
</html>
Submit.handleEventO
submxt.handleEvent(событие)
Метод handleEvent() объекта Submit вызывает обработчик указанного события. Этот ме-
тод появился в JavaScript 1.2.
В листинге 8.466 на странице находится текстовое поле. Сценарий указывает браузеру пе-
перехватывать все события Click и передавать их на обработку в функцию myClickHandler.
В этой функции для обработки щелчков кнопкой мыши используется метод handleEvent()
кнопки отправки.
Когда пользователь выполняет шелчок на странице обработчик событий onCIick в деск-
дескрипторе <input type="subrait"> вызывает функцию, которая изменяет текст в текстовом
поле. В роли текста в данном случае выступает число, которое увеличивается при каж-
каждом щелчке мышью.
Листинг 8.466. Использование метода handleEvBntU объекта Submit для обрвботки
всех щелчков на странице
<html>
<head>
<script language="JavaScriptl.2" type="text/javascripf'>
<!--
// Объявить счетчик щелчков.
var counter = 0 ;
// Указать браузеру на то, что следует перехватывать ВСЕ события
// CLICK на странице, и объявить функцию для их обработки,
window.captureEvents(Event.CLICK)
window.onCIick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий CLICK,
function myClickHandler(e){
// Передавать все события CLICK для обработки кнопке отправки.
window.document.myForm.mySubmit.handleEvent(e);
}
// Эта функция вызывается обработчиком событий onCIick кнопки
// отправки. Она выводит в текстовом поле количество щелчков
// мышью. Обратите внимание, что для того, чтобы данные формы не
// отправлялись, необходимо возвращать значение false,
function changeText(){
counter++;
document.myForm.myText.value = counter;
return false;
)
// —>
</script>
</head>
О О О Часть 111. Справочник по JavaScript
<body>
<form name="myForin">
<input types="text" sizes=" values"" name="myText">
<input type="submit" value="Отправить" name="mySubmit"
onclick='changeText()'>
</form>
</body>
</html>
Submit namp JavaScript1.O+, JScript1.O+
uimmn.name Nav^+ |E3+ Op";ra3+
submit.name
^& Свойство name экземпляра объекта Submit возвращает имя кнопки отправки. Это свой-
*" ство часто используется через массив dements объекта Form для определения имени кноп-
кнопки отправки. Оно оказывается очень полезным, если на странице находится несколько
форм. В этом случае знание имени позволяет определить, какую функцию выполнять.
t^3 В листинге 8.467 на странице находятся текстовое поле и кнопка отправки. Для опреде-
£^ ления и вывода на экран имени кнопки отправки в окне предупреждения используется
массив elements объекта Form.
Листинг 8.467. Использование свойства пате для определения имени кнопки
отправки
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Вывести на экран окно предупреждения, в котором
// содержится имя кнопки отправки.
function getName(){
alert("Имя этой кнопки отправки " +
document.myForm.elements[1].name);
}
// — >
</script>
</head>
<body>
<form names"myForm">
<input type="text" value="IlepBoe текстовое поле" name="myText">
<input type="submit" value="OTnpaBHTb" name="mySubmit"
onclick='getName()'>
</form>
</body>
</html>
Submit.OHBlur
onblur="команда"
Обработчик событий onBlur вызывается при потере кнопкой отправки фокуса. Задействуя
этот обработчик событий, следует быть особенно осторожным, поскольку при исполь-
использовании в данном обработчике обработчика событий onFocus или метода focus() суще-
существует опасность бесконечного зацикливания.
В листинге 8.468 на странице находятся два текстовых поля и кнопка отправки. В деск-
рилторе кнопки перехватывается событие Blur. Второе текстовое поле используется в ка-
качестве счетчика количества вызовов обработчика событий oiiBlur.
В сценарии при возникновении события Blur вызывается обработчик события, который,
в свою очередь, вызывает функцию, перемещающую фокус на кнопку отправки. В ре-
результате, когда пользователь пытается перенести фокус с кнопки, значение счетчика
увеличивается, а фокус возвращается на кнопку. Как можно будет увидеть при запуске
кода из листинга 8.486, значение счетчика увеличивается даже при щелчке мышью в
других окнах или в адресной строке.
глава 8. Клиентская сторона ББЭ
Листинг 8.468. Пример использования обработчика событий onBlur
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Инициализировать счетчик количества щелчков.
var counter = 0;
// Перенести фокус на кнопку отправки и увеличить
// значение счетчика в текстовом поле.
function comeBack(){
document.myForm.mySubmit.focus();
document.myForm.counter.value = counter++;
J
// —>
</script>
</head>
<body onload='comeBack() ' >
<form name="myForm">
<input type="text" value="Текстовое поле" name="myText">
<input type="submit" value="Отправить" name="mySubmit"
onblur=' comeBack () ' Xbr>
<input type="text" size=" value="" name="counter">
</form>
</body>
</html>
Submit.onClick JavaScript1.O+ JScript1.O+
Nav2+, IE3+, Opera3+
oncli ck="команда"
f Обработчик событий onClick вызывается при щелчке на кнопке отправки. Обратите вни-
внимание, что этот обработчик не вызывается в случаях, когда в форме находится один
объект, например, текстовое поле, и пользователь для отправки формы нажимает кла-
клавишу Enter или Return.
В листинге 8.469 на странице находятся текстовое поле и кнопка. При щелчке на кноп-
кнопке отправки генерируется событие Click, которое вызывает функцию, преобразующую
текст в текстовом поле в верхний регистр.
Листинг 8.469. Использование обработчика событий onClick для вывода на экран
содержимого текстового поля перед передачей формы
<html>
<head>
<script languages"JavaScript" type="text/javascript"'>
<! —
// Объявить функцию setText, которая преобразует текст к верхнему
регистру.
function setText() {
// Преобразовать текст к верхнему регистру,
document.myForm.myText.value =
document.myForm.myText.value.toUpperCase();
}
// -->
</script>
</head>
<body>
<form name="myForm">
Пожалуйста, введите текст и щелкните на кнопке Отправить.<Ьг>
<input type="text" ¥а1ие="Введите текст" name="myText">
<input type="button" value="OTnpaBHTb" name="mySubmit"
onclick="setText()">
</form>
</body>
</html>
D / U Часть III. Справочник по JavaScript
Submit.onFocus
onfocus="команда"
Обработчик событий on Focus экземпляра объекта Submit вызывается при получении фо-
фокуса кнопкой отправки. Имея дело с этим обработчиком событий, следует проявлять осо-
особую осторожность, поскольку при использовании в данном обработчике обработчика со-
событий onBlur или метода Ыиг() существует опасность попасть в бесконечный цикл.
В листинге 8.470 на странице находятся два текстовых поля и кнопка отправки. В деск-
дескрипторе кнопки отправки объявлен обработчик событий Focus. Второе текстовое поле ис-
используется в качестве счетчика количества вызовов обработчика событий onBlur.
Листинг 8.470. Примвр использования обработчика событий onFocus
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Инициализировать счетчик количества щелчков.
var counter = 0 ;
// Перенести фокус на текстовое поле и
// увеличить значение счетчика,
function sendAway(){
document.myForm.myText.focus();
document.myCorm.counter.value •= counter++;
</script>
</head>
<body onload='sendAway()'>
<form name="myForm">
<input type="text" value="Первое текстовое поле" name="myText">
<input type="submit" уа1ие="Отправить" name=t>mySubmit"
onf ocus=' sendAway () • Xbr>
<input type="text" size=" value="" name="counter">
</form>
</body>
</html>
Submit.type JavaScript1.1+ JScripi1.0+
*r Nav3+, IE3+, Opera3+
submit.type
& Свойство type экземпляра объекта Submit возвращает тип кнопки отправки. Для объекта
Submit это свойство всегда возвращает значение submit.
В листинге 8.472 на странице находятся текстовое поле и кнопка отправки. При щелчке
на кнопке на экране отображается окно предупреждения, в котором выводится значение
свойства type кнопки.
Листинг 8.471. Вывод в окне предупреждения значения свойства type
<html>
<head>
<script language="JavaScriptl.1" type="text/javascript">
// Вывести на экран окно предупреждения, в котором указывается тип
// кнопки отправки,
function getType(){
alert("Тип этой кнопки отправки " +
document.myForm.elements[I].type);
</script>
</head>
Глава 8. Клиентская сторона 6/1
<body>
<form name="myForm">
<input type="text" value="IlepBoe текстовое поле" name="myText">
<input type="submit" value="Отправить" name="mySubmit"
onclick='getType()'>
</form></body></html>
Submit. Unwatch() JavaScript 1.2+
w Nav4+
submit.unwatch{свойство)
f Метод umvatch() объекта Submit используется для прекращения отслеживания измене-
изменений свойства, указанного с помощью параметра свойство.
.лВ листинге 8.472 приведен пример использования метода unwatch() для прекращения
Кг отслеживания свойства value.
Листинг 8.472. Пример использования методв unwatchO
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
// Объявить функцию, которая будет вызываться при изменения свойства
function alertme(id, oldValue, newValue){
document.writeln("ID (" + id + ") изменилось с "+ oldValue +" на ") ;
document.writeln(newValue + "<br>");
return newValue;
}
// После загрузки, начать отслеживание свойства value, изменить
// его, а затем прекратить отслеживание,
function check(){
document.myForm.mySubmit.watch("value", alertme);
document.myForm.mySubmit.уа1ие="Переслать данные";
document.myForm.mySubmit.unwatch("value");
}
</script>
</head>
<body onload="check()">
<form name="myForm">
<input type="submit" name="mySubmit" value="Отправить">
</form>
</body>
</html>
Submit.value JavaScript1.O+ JScript1.O+
Nav2+, IE3+, Opera3+
submit.value
f Свойство value экземпляра объекта Submit возвращает текущее значение кнопки отправки.
Это значение соответствует тексту, отображаемому на самой кнопке.
В листинге 8.473 на странице находятся текстовое поле и кнопка отправки. При щелчке
на кнопке на экран выводится окно предупреждения, в котором указывается значение
свойства value для данного экземпляра объекта Submit.
Листинг 8.473. Пример использования свойства value объекта Submit
<html>
<head>
<script language="JavaScriptl.1" type="text/javascript">
<! —
// Вывести на экран окно предупреждения, в котором указывается
// значение кнопки отправки.
function getValue(){
alert("Значение этой кнопки отправки равно " +
document.myForm.elements[I].value);
Ь / С. Часть III. Справочник по JavaScript
</script>
</head>
<body>
<form name="myForm">
<input type="text" value="IIepBoe текстовое поле" name="myText">
<input type="submit" уа1ие="Отправить" name="mySubmit"
onclick='getValue()'>
</form>
</body>
</html>
Sllbmit.watchQ JavaScript 1.2+
" Nav4+
submit.watch(свойстшо, функция)
t Метод watch() объекта Submit используется для установки отслеживания свойства, ука-
указанного с помощью параметра свойство. При изменении значения свойства, указанно-
указанного с помощью параметра свойство, tiocne вызова метода watch() вызывается функция
function.
В листинге 8.474 приведен пример использования метода watch() для установки отсле-
отслеживания свойства value.
Листинг 8.474. Пример использования метода watchl)
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
// Объявить функцию, которая будет вызываться при изменении
// значения свойства.
function alertme(id, oldValue, newvalue){
document. writeln(" ID ("+id+") изменилось с "+ oldValue + " на ");
document.writeln(newValue + "<br>");
return newValue;
}
// После загрузки страницы начать отслеживание свойства value,
// а затем ивменить его.
function check(){
document.myForm.mySubmit.watch("value", alertme);
document.myForm.mySubmit.value="IlepecnaTb данные";
}
</script>
</head>
<body onload="check()">
<form name="myForm">
<input type="submit" name="mySubmit" value="Отправить">
</form>
</body>
</html>
taint()
taint(объект)
Метод taint() применялся в качестве меры безопасности и был реализован только в
JavaScript 1.1. Он позволял разработчику предотвращать передачу и использование воз-
врашаемых значений данного сценария другими сценариями. Этот метод не изменяет
переданный ему элемент данных, а просто возвращает маркированную ссылку на этот
элемент.
Поскольку метод taiiit() и функция маркирования данных в версиях, начиная с
JavaScript 1.2, были изъяты, следует избегать использования данного метода. Его мож-
можно использовать только в случае необходимости обеспечения определенного уровня бе-
безопасности при реализации совместимости с браузерами Navigator 3. Более подробная
информация о модели безопасности, используемой в браузерах Navigator, находится в
главе 1.
Глааа 8. Клиентская сторона
673
В листинге 8.475 маркируется переменная, которая объявлена в отдельном окне.
Листинг 8.475. Пример использования метода taint(), который не поддерживается в
современных версиях браузеров
<script language="JavaScriptl.1" type="text/javasoript">
<!--
// Сохранить значение маркированной переменной иэ второго окна
// в переменной taintMyVar.
var taintMyvar = taint(myWin.myVar);
// —>
</script>
JavaScriptl.0+, JScript1.O+
Nav2+, IE3+, Opera3+
Основной объект? клиентской части языка JavaScript.
$& Объект Text является одним из основных объектов клиентской части языка JavaScript.
• Экземпляры этого объекта создаются в браузере с помощью HTML-дескриптора <input>,
значение атрибута type которого установлено равным text. В иерархии объектов языка
JavaScript объект Text выглядит следующим образом window.document.Form.Text.Свойства,
методы и события объекта Text перечислены в табл. 8.37.
Таблица 8.37. Обработчики событий, методы и свойства объекта Text
Тип
Элемент Описание
Обработчик onBlur
событий
Выполняет указанный код при потере текстовым полем фокуса.
onChange Выполняет указанный код при потере текстовым полем фокуса
после изменения содержимого окна.
onFocus Выполняет указанный код при получении текстовым полем фокуса.
onSelect Выполняет указанный код при выделения текста в текстовом поле.
Ыиг() Убирает фокус из текстового поля.
Метод
focus()
Переносит фокус на текстовое поле.
handleEvent() Вызывает обработчик указанного события. Этот метод появился в
JavaScript 1.2.
select()
Выделяет текст в текстовом поле.
unwatch() Используется для прекращения отслеживания свойства.
watch ()
Используется для установки отслеживания свойства.
Свойство defaultValue Возвращает значение текстового поля, указанное в атрибуте value.
Обратите внимание, что это свойство не поддерживается в
браузерах Opera.
form
Возвращает всю форму, в которой находится текстовое поле.
name
Возвращает имя текстового поля, указанное в атрибуте name.
type Возвращает тип текстового поля, указанный в атрибуте type.
Обратите внимание, что значение этого свойства всегда равно
text. Это свойство было введено в JavaScript 1.1.
value
Возвращает значение, которое находится в текстовом поле.
В листинге 8.476 на экран выводятся значения свойств. На странице содержатся тексто-
текстовое поле и кнопка. При щелчке на кнопке открывается второе окно, в котором выво-
выводятся значения свойств объекта Text.
674 Часть III. Справочник по JavaScript
Листинг 8.476. Вывод на экран значений свойств экземпляра объекта Text
<html>
<head>
<script language="JavaScript" type="text/javascript">
//Объявить функцию openWin, которая вызывается при щелчке на кнопке
function OpenWin(){
// Для упрощения доступа к текстовому полю поместить ссылку на
// окно в переменную.
var mylnstance = document.myForm.myText;
/ / Открыть окно результатов.
var myWin = open("", "","width=450,height=200");
// Вывести в окно результатов значения свойств текстового поля.
myWin.document.write("Значение свойства defaultValue: "
+ mylnstance.defaultValue);
myWin.document.write("<br>");
myWin.document.write("Имя: " + mylnstance.name + "<br>");
myWin.document.write("Тип: " + mylnstance.type + "<br>");
myWin.document.write("Значение: " + mylnstance.value + "<br>");
// Обратите внимание на то, что это свойство возвращает весь
// объект Form. Это позволяет определять значения свойств
// других элементов формы.
myWin.document.write("Свойство form можно использовать
'•для определения ") ;
myWin.document.write("значения кнопки: ") ;
myWin.document.write(mylnstance.form.myButton.value);
// Закрыть поток, направленный в окно,
myWin.document.close();
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="text" value="Здравствуй, мир!11 name="myText">
<input type="button" value="Обработать" name="myButton"
onclick="openWin()">
</form>
</body>
</html>
Tpvt hlurM JavaScript1.O+, JScript1.O+
w Nav2+, 1E3+, Opera3+
text.blur()
Й& Метод blnr() объекта Text убирает фокус с текстового поля. Будьте осторожны при ис-
«г пользовании этого метода совместно с методом Text.focus(). Подобное применение мо-
может привести к зацикливанию операций получения/снятия фокуса, когда браузер сни-
снимает с текстового поля фокус сразу же после получения фокуса и наоборот.
В листинге 8.477 на странице находятся текстовое поле и кнопка. Если пользователь вы-
выделит текст в поле и щелкнет на кнопке Click Here to Remove Focus (Чтобы убрать фо-
фокус, щелкните на этой кнопке), выделение с текста будет снято.
Листинг 8.477. Пример использования метода Ыиг() для снятия фокуса с
текстового поля
<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
// Объявить функцию removeFocus, которая будет вызываться при
// щелчке на кнопке,
function removeFocus(){
// Убрать фокус о (текстового поля.
Глава 8. Клиентская сторона О / U
document.royForm.myText.blur();
</script>
</nead>
<body>
<Ь>Выделите текст в текстовом поле:</Ь>
<forin name="myForm">
<input type="text" уа1ие=дравствуй, мир!" name="myText">
<input type="button"
value=To6bi убрать фокус, щелкните на этой кнопке"
name="myButton" onclick="removeFocus()">
</form>
</body>
</html>
Text.defaultValue Javascripti.o+. JScriPti.o+
Nav2+, IE3+, Opera5+
text.defaultValue
Свойство defaultValue экземпляра объекта Text содержит значение текстового поля, за-
заданное по умолчанию, которое установлено в атрибуте value дескриптора <input>. Это
свойство часто используется для восстановления исходных значений элементов формы
после ввода данных пользователем.
В листинге 8.478 на странице находятся текстовое поле и кнопка. После редактирования
текста и щелчке на кнопке Click to Reset (Сброс), в текстовом поле будет выводиться
текст, заданный по умолчанию.
Листинг 8.478. Пример использования свойства defaultValue для восстановления
текста в текстовом поле
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Объявить функцию resetForm, которая будет вызываться при щелчке
// на кнопке.
function resetForm(){
// Восстановить в окне ввода текста текст "Здравствуй, мир!".
document.myForm.myText.value = document.myForm.myText.defaultValue;
}
// — >
</script>
</head>
<body>
<Ь>Отредактируйте текст в окне:</Ь>
<form name="myForm">
<input type="text" уа1ие=яравствуй, мир'" name="myTexfc">
<input type="button" value="C6poc" name="myButton"
onclick="resetForm()">
</form>
</body>
</html>
Text.fOCUS() JavaScript1.O+ JScript1.O+
" Nav2+, IE3+, Opera3+
text.focus()
| Метод focus() объекта Text перемещает фокус на текстовое поле. Будьте осторожны при
использовании этого метода совместно с методом Text.blur(). Это может привести к за-
зацикливанию операций получения/снятия фокуса, когда браузер снимает с текстового поля
фокус сразу же после получения фокуса и наоборот.
676
Часть III. Слраеочник по JavaScript
В листинге 8.479 на странице находятся два текстовых поля и две кнопки. Если пользо-
пользователь шелкает на первой кнопке, курсор устанавливается в первое текстовое поле. Если
пользователь щелкает на второй кнопке, курсор устанавливается во второе текстовое поле.
Листинг 8.479. Пример использования метода focusl) для переноса фокуса на
требуемое текстовое поле
<html>
<head>
<script language="JavaScript" type="text/javascript">
//Объявить функцию setFocus, которая вызывается при щелчке на кнопке
function setFocus(num){
// Определить кнопку, на которой был произведен щелчок,
// и установить курсор на соответствующее текстовое поле.
if (num == 1) {
document.myForm.myTextl.focus() ;
} else if (num == 2) {
document.myForm.myText2.focus();
1
}
// -->
</script>
</head>
<body>
<form name="myForm">
<input type="text" value="Текстовое поле 1" name="myTextl">
<input type="button" уа1ие="Установить курсор" name="myButtonl"
onclick="setFocusA) ">
<br>
<input type="text" value="TeKCTOBoe поле 2" name="myText2">
<input type="button" values"Установить курсор" name="myButton2"
onclick="setFocusB) ">
</form>
</body>
</html>
Tpyt form JavaScript1.O+, JScript1.O+
Nav2+, IE3+. Opera3+
text.form
fc Свойство form экземпляра объекта Text содержит все данные формы, в которой нахо-
находится данное текстовое поле. Это позволяет разработчику получить специфические дан-
данные о форме.
В листинге 8.480 на странице находятся текстовое поле и кнопка. При щелчке на кноп-
кнопке на экран выводятся значения трех свойств формы. Значения этих свойств определя-
определяются с помощью свойства form текстового поля.
Листинг 8.480. Получение доступа к форме с помощью свойства form экземпляра
объекта Text
<html>
<head>
<script langusge="JavaScript" type="text/javascript">
<! —
//Объявить функцию openWin, которая вызывается при щелчке на кнопке,
function openWin(){
// Для упрощения доступа к свойству form текстового поля
// поместить ссылку на него в переменную.
var formData = document.myForm.myText.form,•
// Открыть окно результатов.
var myWin = open("", "","width=450,height=200");
Глава 8. Клиентская сторона О / /
// Вывести в окно результатов значения свойств,
// полученных с помощью свойства form.
myWin.document.write("Имя формы: " + formData.name + "<br>");
myWin.document.write("Значение текстового поля: ");
myWin.document.write(£ormData.myText.value + "<br>");
myWin.document.write("Имя кнопки: ") ;
myWin.document.write(formData.elements[1].name + "<br>");
// Закрыть поток, направленный в окно.
myWin.document.close();
}
// -->
</script>
</head>
<body>
<form name="myForm">
<input type="text" уа1ие=дравствуй, мир!" nanie=nmyText">
<input type="button" уа1ие="Обработать" name="myButton"
onclick="openWin()">
</form>
</body>
</html>
Text.handleEvent() iavascripti.2+. jscript3.o+
" Nav4+, IE4+
text.handleEvent(событие)
f Метод handleEvent() объекта Text вызывает обработчик указанного события. Этот метод
появился в JavaScript 1.2.
В листинге 8.481 на странице находится одно текстовое папе. Сценарий указывает брау-
браузеру на необходимость перехвата всех событий Click и передачи их на обработку в фун-
функцию myCIickHandler. В этой функции для обработки щелчков используется метод
handleEvent() текстового поля.
Когда пользователь выполняет щелчок на странице, обработчик событий onClick в дес-
дескрипторе <input type="text"> вызывает функцию, которая изменяет текст в текстовом поле.
В роли текста выступает число, которое увеличивается при каждом шелчке мышью.
Листинг 8.481. Использование метода handleEventf) объекта Text для обработки
всех щелчков мышью на странице
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<!--
// Объявить счетчик количества щелчков.
var counter = 0;
// Указать браузеру перехватывать ВСЕ события CLICK
// на странице и объявить функцию для их обработки,
window.captureEvents(Event.CLICK)
window.onclick = myCIickHandler;
// Объявить функцию myCIickHandler для обработки событий CLICK,
function myCIickHandler(e){
// Передавать все события CLICK для обработки текстовому полю.
Window.document.myForm.myText.handleEvent(e);
}
// Эта функция вызывается обработчиком события onClick текстового
// поля. Она выводит на экран количество щелчков,
function changeText(){
document.myForm.myText.value = counter++;
}
// —>
</script>
</head>
678 Часть III. Справочник по JavaScript
<body>
<form name="myForm">
<input type="text" size=" value="" name="myText"
onclick='changeText() ' >
</form>
</body>
</html>
Text, name JavaScripti.o+ JScriPti.o+
Nav2+, IE3+, Opera3+
text.name
t Свойство name экземпляра объекта Text возвращает имя текстового поля. Это свойство
часто используется посредством массива elements объекта Form для определения имени
текстового поля. Оно оказывается исключительно полезным, если на странице находит-
находится несколько форм. В этом случае знание имени позволяет определить, какую функцию
выполнять.
В листинге 8.482 на странице находятся текстовое поле и кнопка. Для определения и вы-
вывода на экран имени текстового поля в окне предупреждения используется массив
elements объекта Form.
Листинг 8.482. Использование свойства пате для определения имени текстового поля
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Вывести на экран окно предупреждения, в котором
// указывается имя текстового поля.
function getName(){
alert("Имя текстового поля " + document.myForm.elements[0].name) ;
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="text" value="nepBoe текстовое поле" name="myText">
<input type="button" value="Определить имя" name="myButton"
onclick='getName()'>
</form>
</body>
</html>
Text.OnBlur JavaScript1.0+ JScript1.0+
Nav2+, IE3+, Opera3+
onblur="команда"
k Обработчик событий onBlur экземпляра объекта Text вызывается при потере текстовым
полем фокуса. Имея дело с этим обработчиком событий, следует быть особо осторожным,
поскольку при использовании обработчика событий onFocus или метода focus() существу-
существует опасность возникновения бесконечного цикла.
Код из листинга 8.483 определяет определение на странице трех текстовых полей, в дес-
дескрипторе одного из которых установлен перехват событий onBlur. Третье текстовое поле
используется в качестве счетчика количества вызовов обработчика событий onBlur.
В сценарии при возникновении события Blur вызывается обработчик события, который,
в свою очередь, вызывает функцию, переносящую фокус на первое текстовое поле. В
результате, когда пользователь пытается перенести фокус с первого текстового поля,
значение счетчика увеличивается, а фокус возвращается на первое окно. Как можно бу-
будет увидеть при выполнении кода из листинга 8.499, значение счетчика увеличивается
даже при щелчке мышью в других окнах или в адресной строке.
Глава 8. Клиентская сторона 679
Листинг 8.483. Пример использования обработчика событий onBlur
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Инициализировать счетчик количества щелчков.
var counter = 0;
// Перенести фокус на первое текстовое поле и увеличить значение
// счетчика в последнем окне ввода текста.
function comeBack(){
document.myForm.myTextl.focus();
document.myForm.counter.value = counter++;
}
// —>
</script>
</head>
<body onload='comeBack() ' >
<form name="myForm">
<input type="text" vaiue="nepBoe текстовое поле" name="myTextl"
onblur=•comeBack()'>
<input type="text" value="BTopoe текстовое поле" name="myText2"Xbr>
<input type="text" size=" value="" name="counter">
</form>
</body>
</html>
Text.onChange JavaScripti.o+ jscripti.o+
э Nav2+, IE3+, Opera3+
onchange= " команда "
f Обработчик событий onChange экземпляра объекта Tejrt вызывается при изменении тек-
текста в текстовом поле. Во время применения этого обработчика событий следует быть осо-
особенно осторожным, поскольку при использовании обработчиков событий или методов,
которые вызываются при получении или потере фокуса, может возникнуть бесконечный
цикл.
Код из листинга 8.484 определяет на странице текстовое поле. При изменении текста в
текстовом поле и переносе фокуса от окна в окно вносится значение, установленное для
окна по умолчанию.
Листинг 8.484. Пример использования обработчика событий onChange для
установки в текстовом поле значения, заданного по умолчанию
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// При изменении пользователем текста заменить его значением,
// заданным по умолчанию. Обратите внимание, что для этого
// пользователь должен выйти из текстового поля
// или нажать клавишу Enter/Return.
function changeBack(){
document.myForm.myText.value = document.myForm.myText.defaultValue;
}
// — >
</script>
</head>
<body>
<£orm name="myForm">
<input type="text" уа1ие="Измени меня." name="myText"
onchange='changeBack()'>
</form>
</body>
</html>
680
Часть III. Справочник по JavaScript
Text.OnFoCUS JavaScript1.0+. JScript1.0f
Nav2+. IE3+, Opera3+
onfocus="команда"
Обработчик событий onFocus экземпляра объекта Text вызывается при получении тексто-
текстовым полем фокуса. При использовании этого обработчмка событий следует быть особенно
осторожным, поскольку в результате применения обработчика событий onBlur или ме-
метода Ыиг() существует опасность возникновения бесконечного цикла.
В листинге 8.485 на странице находятся три текстовых поля, в дескрипторе одного из
которых установлен перехват событий onFocus. Третье текстовое поле используется в ка-
качестве счетчика количества вызовов обработчика событий onBlur.
При возникновении события Focus вызывается обработчик событий, который в свою
очередь, вызывает функцию, переносящую фокус на второе текстовое поле. В результа-
результате, когда пользователь пытается перенести фокус на первое текстовое поле, значение
счетчика увеличивается, а фокус возвращается на второе поле.
Листинг 8.485. Пример использования обработчика событий onFocus
<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
// Инициализировать счетчик количества щелчков.
var counter = О;
// Перенести фокус на второе текстовое поле и увеличишь значение
// счетчика в последнем текстовом поле,
function sendAway(){
document.myForm.myText2.focus() ;
document.myForm.counter.value = counter++;
}
II —>
</script>
</head>
<body onload='sendAway()'>
<form name="myForm">
<input type="text" value="nepBoe секстовое поле" name="myTextl"
onfocus='sendAway()'>
<input type="text" value="BTOpoe текстовое поле" name="myText2"Xbr>
<input type="text" size=" value="" name="counter">
</form>
</body>
</html>
Text.onSeleCt JavaScript1.0+. JScripti.Ot
IE3+, Netb
onselect="команда"
Обработчик событий onSelect экземпляра объекта Text вызывается при выделении текста
в текстовом поле. При использовании этого обработчика событий следует быть особен-
особенно осторожным, поскольку применение обработчика событий или методов, которые вы-
вызываются при получении текстовым полем фокуса, влечет за собой опасность возник-
возникновения бесконечного цикла.
ПРИМЕЧАНИЕ:
Обратите внимание, что в Netscape эта функция появилась в JavaScript
1.0, но полностью она была реализована только в Netscape 6. Браузеры Opera эту
функцию не поддерживают.
В листинге 8.486 на странице находятся два текстовых поля. При выделении текста в пер-
первом окне во втором окне выводится текст, который установлен по умолчанию для первого
поля.
Глаеа 8. Клиентская сторона О О 1
Листинг 8.486. Пример использования обработчика событий onSelect для установки
текста во втором текстовом поле
<html>
<head>
<script language="JavaScript" type="text/javascript">
<!--
//При выделении текста в первом текстовом поле изменить текст во
//втором поле на текст, установленный по умолчанию для первого поля
function setText(){
document.myForm.myText2.value = document.myForm.myTextl.defaultValue;
}
// -->
</script>
</head>
<body>
<form name="myForm">
<input type="text" value="Jl3MeHH меня." name="myTextl"
onselect="setText()'>
<br>
<input type="text" value="" name="myText2">
</form>
</body>
</html>
text.select()
Метод select() объекта Text используется для выделения текста в текстовом поле. Прм
использовании этого обработчика событий следует быть особенно осторожным, поскольку
применяя методы blur() или focus(), существует опасность возникновения бесконечно-
бесконечного цикла.
В листинге 8.487 на странице находятся текстовое поле и кнопка. После щелчка на кнопке
выделяется текст в текстовом поле. Обратите внимание на то, что фактически для вы-
выделения текста используется метод focus().
Листинг 8.487.Использование метода selectl) для выделения текста в текстовом поле.
<html>
<head>
<script language="JavaScript" type="text/javascript">
^i r
II Объявить функцию selectText,
// которая вызывается при щелчке на кнопке.
function selectText(){
// Выбрать текст в текстовом поле и перенести в него фокус,
document.myForm.myText.select();
document.myForm.myText.focus();
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="text" уа1ие=дравс!1вуй, мир!" name="myText">
<input type="button" уа1ие="Выделить текст" name="myButton"
onclick="selectText()">
</form>
</body>
</html>
JavaScript1.1+, JScript1.O+
Nav3+. IE3+. Opera3+
text.type
682 Часть III. Спраеочник по JavaScript
# Свойство type экземпляра объекта Text возвращает тип текстового поля. Для текстового
поля это всегда text.
В листинге 8.488 на странице находятся текстовое поле и кнопка. При щелчке на кноп-
кнопке на экране отображается окно предупреждения, в котором выводится значение свой-
свойства type текстового поля.
Листинг 8.488. Вывод в окне предупреждения значения свойства type
<html>
<head>
<script language="JavaScriptl.1" type="text/javascript">
<!--
// Вывести на экран окно предупреждения, в котором указывается тип
// текстового поля.
function getType(){
alert ("Тип этого текстового поля " + document. my Form. elements [О J .type);
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="text" value="IIepBoe текстовое поле" name="myText">
<input type="button" value="Определить тип" name="myButton"
onclick='getType()'>
</form>
</body>
</html>
Text.unwatch() JavaScript 1.2+
w Nav4+
text.unwatch(свойство)
k Метод unwatch() объекта Text используется для прекращения отслеживания свойства,
заданного с помощью параметра свойство.
В листинге 8.489 приведен пример использования метода unwatch() для прекращения
отслеживания свойства value.
Листинг 8.489. Пример использования метода unwatch()
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
function alertrae(id, oldvalue, newValue){
document.writeln("ID ("+id+") изменилось с " + oldValue + " на ") ;
document.writeln(newValue + "<br>");
return newValue;
}
function check(){
document.myForm.myItem.watch("value" , alertrae) ;
document.myForm.myItern.unwatch("value");
document.myForm.myItem.value="IIepecAaTb данные";
)
</script>
</head>
<body onload="check() ">
<form name="myForm">
<input type="text" name="myltem" value="Отправить">
</form>
</body>
</html>
Text value JavaScript1.O+, JScript1.O+
Nav2+, IE3+, Opera3+
text.value
Глава 8. Клиентская сторона
683
Свойство value экземпляра объекта Text возвращает текущее значение текстового поля.
Обратите внимание, что это не значение по умолчанию, которое возвращается свойством
Text.defaultValue. Оно часто используется для установки содержимого текстового поля.
Код из листинг 8.490 определяет страницу, на которой находятся текстовое поле и кноп-
кнопка. Отредактируйте текст в поле и для восстановления текста щелкните на кнопке Reset
(Сброс).
Листинг 8.490. Восстановление значения текстового поля, установленного по
умолчанию
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Восстановить значение по умолчанию,
function resetText(){
document.myForm.myText.value = document.myForm.myText.defaultValue;
}
II -->
</script>
</head>
<body>
<form name="myForm">
<input type="text" value="IIepBoe текстовое поле" name="myText">
<input type="button"value="C6poc" name="myButton"
onclick='resetText() ' >
</form>
</body>
</html>
Text.watch() JavaScript 1.2+
" Nav4+
text.watch(свойство , функция)
\ Метод watch() объекта Text используется для установки отслеживания свойства, указан-
указанного с помощью параметра свойство. При изменении значения параметра свойство после
вызова метода watch() выполняется функция, указанная параметром функция.
В листинге 8.491 приведен пример использования метода watch() для установки отсле-
отслеживания свойства value.
Листинг 8.491. Пример использования метода watch()
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
function alertme(id, oldvalue, newValue){
document.writeln ("ID (" + id+") изменилось с "+ oldvalue + " на ") ;
document.writeln(newValue + "<br>");
return newValue;
}
function check(){
document.myForm.myItem.watch("value" , alertme);
document.myForm.myltem.value="Переслать данные";
}
</script>
</head>
<body onload="check() ">
<form name="myForm">
<input type="text" name="myltem" value="Отправить">
</form>
</body>
</html>
684
Часть III. Справочник по JavaScript
JavaScript1.O+, JScript1.0+
Nav2+, IE3+, ОрегаЗ*
Основной объект клиентской части языка JavaScript.
I Объект Textarea является одним из основных объектов клиентской части языка JavaScript.
Экземпляры этого объекта создаются в браузере с помощью HTML-дескриптора
<textarea>. В иерархии объектов языка JavaScript объект Text выглядит следующим об-
образом: window.document.Form.Textarea. Обработчики событий, методы и свойства объекта
Textarea перечислены в табл. 8.38.
Тип
Обработчик
событий
Метод
Таблица 8.38. Обработчики событий, методы и свойства объекта Textarea
Элемент
onBlur
onChange
onFocus
onKeyDown
onKeyPress
onKeyUp
onSelect
blur()
focus()
handleEventf)
select()
unwatch()
watch()
Описание
Выполняет указанный код при потере фокуса текстовой областью.
Выполняет указанный код при потере фокуса текстовой областью
после изменения ее содержимого.
Выполняет указанный код при получении фокуса текстовой
областью.
Выполняет указанный код при нажатии клавиши. Это происходит
перед выполнением обработчика onKeyPress. Обработчик
onKeyDown появился в JavaScript 1.2.
Выполняет указанный код при нажатии клавиши сразу же после
обработчика onKeyDown. Обработчик onKeyPress появился в
JavaScript 1.2.
Выполняет указанный код при отпускании клавиши. Этот
обработчик появился в JavaScript 1.2.
Выполняет указанный код при выделении текста внутри
текстовой области.
Убирает фокус с текстовой области.
Переносит фокус на текстовую область.
Вызывает обработчик указанного события.
Этот метод появился в JavaScript 1.2.
Выделяет текст в текстовой области.
Используется для прекращения отслеживания указанного свойства.
Используется для установки отслеживания указанного свойства.
Свойство defaultValue Возвращает значение текстовой области, указанное между
начальным и завершающим дескрипторами <textarea>.
Обратите внимание на то, что это свойство не поддерживается
в браузерах Opera.
form Возвращает всю форму, в которой находится данная текстовая
область.
name Возвращает имя текстовой области, указанное в атрибуте name.
type Возвращает тип текстовой области. Обратите внимание, что для
текстовой области это свойство всегда возвращает textarea.
Свойство type появилось в JavaScript 1.1.
value Возвращает значение, которое отображается в текстовой
области.
Глава 8. Клиентская сторона ЬоО
В листинге 8.492 приведен пример использования свойств объекта Textarea. На страни-
странице находятся текстовая область и кнопка. При щелчке на кнопке открывается второе окно,
в котором выводятся значения свойств объекта Textarea.
Листинг 8.492. Вывод на экран значений свойств экземпляра объекта Textarea
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Объявить функцию openWin, которая будет вызываться при щелчке
// на кнопке.
function openWin(){
// Для упрощения доступа поместить в переменную ссылку на
// текстовую область.
var mylnstance = document.myForm.myTextArea;
// Открыть окно результатов
var myWin = open("", "","width=450,height=200");
// Вывести в окно результатов значения свойств текстовой области.
myWin.document.write("Значение свойства defaultValue: ");
myWin.document.write(mylnstance.defaultValue + "<br>");
myWin.document.write("Имя: " + mylnstance.name + "<br>");
myWin.document.write("Тип: " + mylnstance.type + "<br>");
myWin.document.write("Значение: " + mylnstance.value + "<br>");
// Обратите внимание на то, что это свойство возвращает всю
// форму. Это позволяет получить значения свойств
// других элементов формы.
myWin.document.write("Свойство form можно использовать Для
"•определения ");
myWin.document.write("значения кнопки: ") ;
myWin.document.write(mylnstance.form.myButton.value);
// Закрыть поток, направленный в окно.
myWin.document.close() ;
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button" value="Обработать" name="myButton"
onclick="openWin()">
</form>
</body>
</html>
Textarea.blur() JavaScripti.o+ jscripti.o+
w Nav2+, IE3+, Opera3+
textarea.blur ()
e& Метод Ыиг() объекта Textarea убирает фокус с текстовой области. Будьте осторожны при
" использовании этого метода совместно с методом Textarea.focus(). В итоге может про-
произойти зацикливание операций получения/снятия фокуса, когда браузер снимает с тек-
текстовой области фокус сразу же после его получения и наоборот.
В листинге 8.493 на странице находятся текстовая область и кнопка. Если пользователь
выделит текст в текстовой области и щелкнет на кнопке Click Here to Remove Focus (Что-
(Чтобы убрать фокус, щелкните на этой кнопке), выделение с текста будет снято.
Листинг 8.493. Пример использования методв blurf] для снятия фокуса с текстовой
области
<html>
<head>
686 Часть III. Справочник по JavaScript
<script language="JavaScript" type="text/;javascript">
// Объявить функцию removeFocus, которая будет вызываться при
щелчке на кнопке.
function removeFocus(){
// Убрать фокус с текстовой области.
document.myForm.myTextArea.blur();
>
// -->
</script>
</head>
<body>
<Ь>Выделите текст в следующей текстовой области:</Ь>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button"
valTie=" Чтобы убрать фокус, щелкните на этой кнопке" name="myButton"
onclick="removeFocus()">
</form>
</body>
</html>
Textarea.defaultValue JavaScriPti.o+ jscripti o+
Nav2+, IE3+
textarea.defaultValue
Свойство defauKValue экземпляра объекта Textarea содержит текст, который находится
между начальным и конечным дескрипторами <textarea>. Это свойство часто использу-
используется для восстановления значений элементов формы после ввода пользователем данных.
В листинге 8.494 на странице находятся текстовая область и кнопка. После редактирова-
редактирования текста и щелчка на кнопке Reset (Сброс), в текстовом поле будет выводиться текст,
установленный по умолчанию.
Листинг 8.494. Пример использования свойства defaultValue для восстановления
текста в текстовой области
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Объявить функцию resetForm, которая будет вызываться при щелчке
/ / на кнопке.
function resetForm(){
// Восстановить в текстовой области текст "Здравствуй, мир!".
document.myForm.myTextArea.value =
document.myForm.myTextArea.defaultValue;
}
// —>
</script>
</head>
<body>
<Ь>Отредактируйте текст в следующей текстовой области:</Ь>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button" value="C6poc" name="myButton"
onclick="resetForm()">
</form>
</body>
</html>
Глава 8. Клиентская сторона О О /
Textarea.focus()
textarea.focus()
Метод focus() объекта Textarea переносит фокус на текстовую область. Будьте осторож-
осторожны при использовании этого метода совместно с методом Textarea.blur(). В результате
этого может произойти зацикливание при выполнении операций получения/снятия фо-
фокуса, когда браузер снимает с окна выбора фокуса сразу же после его получения и на-
наоборот.
В листинге 8.495 на странице находятся две текстовых области и две кнопки. Если пользо-
пользователь щелкает на первой кнопке, курсор устанавливается в первую текстовую область.
Если пользователь щелкает на второй кнопке, курсор устанавливается во вторую тексто-
текстовую область.
Листинг 8.495. Пример использования метода focusf) для переноса фокуса на
требуемую текстовую область
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Объявить функцию setFocus, которая будет вызываться при щелчке
аа кнопке.
function setFocus(num){
// Определить, на какой кнопке был произведен щелчок, и
// установить курсор в соответствующую текстовую область.
if(num •= 1) {
document.myForm.myTextAreal.focus();
} else if (num == 2) {
document.myForm.myTextArea2.focus();
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextAreal" rows=" cols=0">
Это первая текстовая область.
</textarea>
<input type="button" value="Установить курсор" name="myButtonl"
onclick="setFocusA)">
<br>
<textarea name="myTextArea2" rows=" cols=0">
Это вторая текстовая область.
</textarea>
<input type="button" value="Установить курсор" name="myButton2"
onclick="setFocusB)">
</form>
</body>
</html>
Textarea.form JavaScripti.o+ jscripti.o+
Nav2+, IE3+, Opera3+
textarea.form
& Свойство form экземпляра объекта Textarea содержит все данные формы, в которой на-
' ходится данная текстовая область. Это позволяет разработчику получить специфические
данные о форме.
В листинге 8.496 на странице находятся текстовая область и кнопка. После щелчка на
кнопке на экран выводятся значения трех свойств формы. Значения этих свойств опре-
определяются с помощью свойства form текстовой области.
boo Часть III. Справочник по JavaScript
Листинг 8.496. Получение доступа к форме с помощью свойства form экземпляра
объекта Textarea
<html>
<head>
<script language="JavaScript" type="text/javascript">
< ! --
// Объявить функцию openKin, которая будет вызываться при щелчке
// на кнопке.
function openKin(){
// Для упрощения доступа к свойству form текстовой области
// поместить ссылку на нее в переменную.
var formData = document.myForm.mylextArea.form;
// Открыть окно результатов.
var myWin = open("", "","width=450,height=200");
// Вывести в окно результатов значения свойств,
// полученных с помощью свойства form.
myWin.document.write("Имя формы: " + formData.name + "<br>");
myWin.document.write("Значение текстовой области: ");
myWin.document.write(formData.myTextArea.value + "<br>");
myWin.document.write("Имя кнопки: ") ;
myWin.document.write(formData.elements[1].name + "<br>");
// Закрыть поток, направленный в окно.
myKin.document.close();
}
// —>
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button" value=6pa6o>raTb" name="myButton"
onclick="openKin()">
</form>
</body>
</html>
Textarea.handleEvent() JavaScriPti.2+,^Script3.o+
textarea.handleEvent(событие)
f Метод handleEvent() объекта Textarea вызывает обработчик указанного события. Этот метод
появился в JavaScript 1.2.
Код из листинга 8.497 определяет на странице одну текстовая область. Сценарий указы-
указывает браузеру перехватывать все события Click и передавать их на обработку в функцию
myClickHandler. В этой функции для обработки щелчков используется метод handleEventO
текстовой области.
Когда пользователь выполняет щелчок на странице, обработчик событий onClick в дес-
дескрипторе <textarea> вызывает функцию, которая изменяет текст в текстовой области. В
данном случае в роли текста выступает число, которое увеличивается при каждом шел-
чке.
Листинг 8.497. Использование метода handleEventO объекта Textarea для
обработки всех щелчков на странице
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<!--
// Инициализировать счетчик количества щелчков.
var counter = 0;
Гвва 8. Клиентская сторона
689
// Указать браузеру перехватывать ВСЕ события CLICK
// на странице и объявить функцию для их обработки,
window.captureEvents(Event.CLICK)
window.onclick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий CLICK,
function myClickHandler(e){
// Передавать все события CLICK для обработки текстовой области.
window.document.myForm.myTextArea.handleEvent(e);
}
// Эта функция вызывается обработчиком события onClick текстовой
// области.Она выводит на экран количество щелчков,
function changeText(){
document.myForm.myTextArea.value = counter++;
>
// —>
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0" onclick='changeText()'>
Это пример текста в текстовой области.
</textarea>
</form>
</body>
</html>
Textarea.name JavaScripti.o+ jscripti.o+
Nav2+, IE3+, Opera3+
textarea.name
& Свойство name экземпляра объекта Textarea возвращает имя текстовой области. Доступ к
' этому свойству часто осуществляется через массив elements объекта Form с целью опре-
определения имени текстовой области. Оно оказывается предельно полезным, если на стра-
странице находится несколько форм. В этом случае знание имени позволяет определить то,
какую функцию следует выполнять.
j Код из листинга 8.498 определяет на странице текстовую область и кнопку. Для опреде-
ления и вывода на экран имени текстовой области в окне предупреждения использует-
используется массив elements объекта Form.
Листинг8.498,Использование свойства пате для определения имени текстовой области
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Вывести на экран окно предупреждения, в котором
// указывается имя текстовой области.
function getName(){
alert("Имя текстовой области " + document.myForm.elements[0].name);
>
// —>
</script>
</head>
<body>
<form name-"myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button" уа1ие="Определить имя" name="myButton"
oncli ck='getSame() '>
</form>
</body>
</htrol>
690 Часть III. Справочник по JavaScript
Textarea.onBlur JavaScripti.o+ JScriPti.o+
Nav2+, IE3+, Opera3+
onblur="команда"
f Обработчик событий onBlur экземпляра объекта Textarea вызывается в случае потери
фокуса текстовой областью. При использовании этого обработчика событий следует быть
особенно осторожным, поскольку в результате применения обработчика событий onFocus
или метода focus() существует опасность попасть в бесконечный цикл.
Код из листинга 8.499 определяет на странице три текстовых области, в дескрипторе од-
одной из которых установлен перехват событий onBlur. Третья текстовая область исполь-
используется в качестве счетчика количества вызовов обработчика событий onBlur.
В сценарии при возникновении события Blur вызывается обработчик события, который,
в свою очередь, вызывает функцию, переносящую фокус на первую текстовую область.
В результате, когда пользователь пытается перенести фокус с первой текстовой области,
значение счетчика увеличивается, а фокус возвращается на первую область. Как можно
будет увидеть при выполнении кода листинга 8.513, значение счетчика увеличивается
даже при щелчке мышью на других окнах или на строке адреса.
Листинг 8.499. Пример использования обработчика событий onBlur
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
/ / Инициализировать счетчик количества щелчков.
var counter = 0;
// Перенести фокус на первую текстовую область и увеличить
// значение счетчика в последней текстовой области,
function comeBack(){
document.myForm.myTextAreal.focus();
document.myForm.counter.value = counter++;
//
</script>
</head>
<body onload='comeBack() ' >
<form name="myForm">
<textarea name="myTextAreal" rows=" cols=0" onblur=' comeBack ()'>
Это пример текста в текстовой области.
</textarea>
<textarea name="myTextArea2" rows=" cols=0">
Это пример текста в текстовой области.
< / textar еаХЬг >
<input type="text" size=" value="" name="counter">
</form>
</body>
</html>
Textarea.onChange Javas«ipti.o+ jscripti.o+
э Nav2+, IE3+, Opera3+
onchange="команда"
Обработчик событий onChange экземпляра объекта Textarea вызывается при изменении
текста в текстовой области. При использовании этого обработчика событий следует быть
особенно осторожным, поскольку в результате применения обработчиков событий или
методов, которые вызываются при получении или потере фокуса, существует опасность
попадания в бесконечный цикл.
Код из листинга 8.500 определяет на странице текстовую область. При изменении тек-
текста в текстовой области и перемещении фокуса из текстовой области в область вносит-
вносится значение, которое установлено для него по умолчанию.
Глава 8. Клиентская сторона Ь Э 1
Листинг 8.500. Пример использования обработчика событий onChange для
установки в текстовой области значения, заданного по умолчанию.
<html>
<head>
<script languages"JavaScript" type="text/;javascript">
// При изменении пользователем текста заменить его значением,
// определенным по умолчанию. Обратите внимание, что для этого
// пользователь должен покинуть текстовую область
// или нажать клавишу Enter или Return,
function changeBack(){
document.myForm.myTextArea.value =
document.myForm.myTextArea.defaultValue;
>
// —>
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0" onchange='changeBack()'>
Это пример текста s текстовой области.
</textarea>
</form>
</body>
</html>
Textarea.onFocus javaScriPti.o+ jscnpti.o+
Nav2+, IE3+, Opera3+
onfocus="команда"
f Обработчик событий onFocus экземпляра объекта Textarea вызывается при получении
текстовой областью фокуса. При использовании этого обработчика событий следует быть
особенно осторожным, поскольку в результате применения обработчика событий onBlur
или метода Ыиг() существует опасность попасть в бесконечный цикл.
Код из листинга 8.501 определяет на странице три текстовых области, в дескрипторе од-
одной из которых установлен перехват событий onFocus. Третья текстовая область исполь-
используется в качестве счетчика количества вызовов обработчика событий onBlur.
В сценарии при возникновении события Focus вызывается обработчик события, который
в свою очередь, вызывает функцию, переносящую фокус на вторую текстовую область.
В результате, когда пользователь пытается перенести фокус на первую текстовую область,
значение счетчика увеличивается, а фокус возвращается на вторую область.
Листинг 8.501. Пример использования обработчика событий onFocus
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Инициализировать счетчик количества щелчков.
var counter = 0;
// Перенести фокус на вторую текстовую область и увеличить
// значение счетчика в последней текстовой области.
function sendAway(){
document.myForm.myTextArea2.focus();
document.myForm.counter.value = counter++;
}
// —>
</script>
</head>
<body onload='sendAway() ' >
<form name="myForm">
<textarea name="myTextAreal" rows=" cols=0" onfocus='sendAway()'>
Это пример текста в текстовой области.
</textarea>
и У с. Часть III. Справочник по JavaScript
<textarea name="myTextArea2" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<Ьг>
<input type="text" size=" value="" name="counter">
</form>
</body>
</html>
Textarea.onKeyDown JavaScriPti.2+. JScript3.ot
1 Nav4+, IE4+
onkeydown= " команда "
t Обработчик событий onKeyDown экземпляра объекта Textarea вызывается при нажатии
клавиши клавиатуры внутри текстовой области. При использовании этого обработчика
событий следует быть особенно осторожным, поскольку в результате применения дру-
других обработчиков событий или методов, которые вызываются при потере или получе-
получении фокуса, а также других событий клавиатуры, существует опасность попасть в бес-
бесконечный цикл. Обработчик событий onKeyDown вызывается перед вызовом обработчика
onKeyPress.
Код из листинга 8.502 определяет на странице одну текстовая область. При нажатии кла-
клавиши на клавиатуре в то время, когда фокус находится на тестовой области, на экран
выводится окно предупреждения.
Листинг 8.502. Обработчик событий onKeyDown выводит на экран окно
предупреждения
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
// При нажатии клавиши вывести на экран окно предупреждения,
function showDialog(){
alert("Была нажата клавиша");
)
// — >
</script>
</head>
<body>
<form name="myForm">
<textarea name=5!',myTextArea" rows=" cols=0" onkeydown='showDialog0 '>
Это пример текста в текстовой области.
</textarea>
</form>
</body>
</html>
Textarea.onKeyPress JavaScriPti.2+ JScriPt3 o+
* Nav4+, IE4+
onkeypress="команда"
k Обработчик событий onKeyPress экземпляра объекта Textarea вызывается при нажатии
клавиши клавиатуры внутри текстовой области. При использовании этого обработчика
событий следует быть особенно осторожным, поскольку при в результате применения
других обработчиков событий или методов, которые вызываются при потере или полу-
получении фокуса, а также других событий клавиатуры, существует опасность попасть в бес-
бесконечный цикл. Обработчик событий onKeyPress вызывается после вызова обработчика
onKeyDown.
В листинге 8.503 на странице находится одна текстовая область. При нажатии клавиши
на клавиатуре в то время, когда фокус находится на тестовой области, на экран выво-
выводится окно предупреждения, в котором указывается тип произошедшего события. Пер-
Первым вызывается обработчик onKeyDown, а затем обработчик onKeyPress.
Глава 8. Клиентская сторона ЬУо
Листинг 8.503. Обработчики событий onKeyDown и onKeyPress выводят на зкран
окно предупреждения
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// При нажатии клавиши вывести на экран окно предупреждения.
function showDialog(type){
alert("Только что произошло событие onKey" + type);
>
// —>
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0"
onkeydown='showDialog("Down") '
onkeypress='showDialog("Press")'>
Это пример текста в текстовой области.
</textarea>
</form>
</body>
</html>
Textarea. on KeyUp JavaScriPti.2+ jscript3.o+
* r Nav4+, IE4+
onkeyup="команда"
Обработчик событий onKeyUp экземпляра объекта Textarea вызывается при отпускании
клавиши клавиатуры внутри текстовой области. При использовании этого обработчика
событий следует быть особенно осторожным, поскольку в результате применения дру-
других обработчиков событий или методов, которые вызываются при потере или получе-
получении фокуса, а также других событий клавиатуры, существует опасность попасть в бес-
бесконечный цикл. Обработчик событий onKeyUp вызываться после вызова обработчика
onKeyPress.
В коде из листинга 8.504 на странице определяется одна текстовая область. При отпуска-
отпускании клавиши на клавиатуре в то время, когда фокус находится на тестовой области, на
экран выводится окно предупреждения.
Листинг 8.504. Обработчик событий onKeyUp выводит на экран окно
предупреждения
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// При нажатии клавиши вывести на экран окно предупреждения,
function showDialog(){
alert("Была отпущена клавиша клавиатур»");
>
// -->
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0" onkeyup='showDialog()'>
Это пример текста в текстовой области.
</textarea>
</form>
</body>
</html>
694 Часть III. Справочник по JavaScript
Textarea.onSelect JavaScriPti.o+. JScriptiot
lh IM6tb
l
onselect="команда"
Обработчик событий onSdect экземпляра объекта Textarea вызывается в случае выделе-
выделения текста в текстовой области. При использовании этого обработчика событий следует
быть особенно осторожным, поскольку в результате применения обработчиков событий
или методов, которые вызываются при получении текстовой областью фокуса, существует
опасность попадания в бесконечный цикл.
ПРИМЕЧАНИЕ
Обратите внимание на то, что в Netscape эта функция появилась в
JavaScript 1.0, но полностью она была реализована только в Netscape 6. Браузеры
Opera эту функцию не поддерживают.
В листинге 8.505 на странице находятся две текстовых области. При выделении текста в
первой текстовой области во второй области выводится текст, который установлен по
умолчанию для первой области.
Листинг 8.505. Пример использования обработчика событий onSelect для установки
текста во второй текстовой области.
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// При выделении текста в первой текстовой области ивненить текст
// во второй области на текст, установленный
// по умолчанию для первой области.
function setText(){
document:.myForm.myTextArea2.value =
document.myForm.myTextAreal.defaultvalue;
>
// —>
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextAreal" rows=" cols=0" onselect="setText() '>
Это пример текста в текстовой области.
</textarea>
<Ьг>
<textarea name="myTextArea2" rows=" cols=0">
</textarea>
</form>
</body></html>
Textarea.select() JavaScriptfo+, JScriPti.o+
w Nav2+, IE3+, Opera3+
textarea.select()
k Метод select() объекта Textarea используется для выделения текста в текстовой области.
При использовании этого обработчика событий следует быть особенно осторожным, по-
поскольку в результате применения методов blur() или focus() в совокупности с данным
обработчиком существует опасность попасть в бесконечный цикл.
В листинге 8.506 на странице находятся текстовая область и кнопка. При нажатии на кноп
ку выделяется текст в текстовой области. Обратите внимание, что фактически для выде-
выделения текста используется метод focus().
Листинг 8,506. Использование метода select!) для выделения текста в текстовой
области.
■ihtml>
<head>
Глава 8. Клиентская сторона
<script language="JavaScript" type="text/javascript">
<! —
//Объявить функцию selectText,которая вызывается при щелчке на кнопке
function selectText(){
//Выделить текст в текстовой области и переместить иа нее фокус.
document.myForm.myTextArea.select();
document.myForm.myTextArea.focus();
}
// —>
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button" value="Bbi6paTb текст" name="myButton"
onclick="selectText() ">
</form>
</body>
</html>
Textarea.type
textarea.type
Свойство type экземпляра объекта Textarea возвращает тип текстовой области. Для тек-
текстовой области будет всегда иметь место тип textarea.
В листинге 8.507 на странице находятся текстовая область и кнопка. При щелчке на кнопке
на экран выводится окно предупреждения, в котором указывается значение свойства type
текстовой области.
Листинг 8.507. Вывод в окне предупреждения значения свойства type
<html>
<head>
<script language="JavaScriptl.1" type="text/javascript">
// Вывести на экран окно предупреждения, в котором
// указывается тип текстовой области,
function getType(){
alert("Тип этой текстовой области " +
document.myForm.elements[0].type);
1
// -->
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button" уа1ие=пределить тип" name="myButton"
onclick='getType()'>
</form>
</body>
</html>
Textarea. unwatch() JavaScript 1.2+
Nav4+
textarea. unwatch (.свойство)
ЗЪ Метод unwatchQ объекта Textarea используется для прекращения отслеживания свойства,
• указанного в параметре свойство.
696 Часть III. Справочник по JavaScript
В листинге 8.508 приведен пример использования метода unwatch() для прекращения
отслеживания свойства value.
Листинг 8.508. Пример использования метода unwatch().
<html>
<head>
<script type="text/javascript" languages"JavaScriptl.2">
//При ивменеиии значения текстовой области вывести на экран сообщение
function alertme(id, oldValue, newValue){
document.writeln ("ID (" + id + ") изменилось с "+ oldValue + " на ") ;
document.writeln(newValue + "<br>");
return newValue;
// Начать отслеживание изменения свойства value в текстовой
// области, а затем, перед прекращением отслеживания, изменить его.
function check(){
document.myForm.myltem.watch("value", alertme);
document.myForm.myItern.value="Переслать";
document.myForm.myItem.unwatch("value");
</script>
</head>
<body onload="check() ">
<form name="myForm">
<textarea name="myltem" rows=" cols=0">nepefla!rb</textarea>
</form>
</body>
</html>
Textarea.value JavaScriPti.o+ JScriPti.o+
Nav2+, IE3+, Opera3+
textarea.value
^ Свойство value экземпляра объекта Textarea возвращает текущее значение текстовой об-
области. Обратите внимание, что это не значение по умолчанию, которое возвращается с
помощью свойства Textarca.defaultValue. Оно часто используется для установки содержи-
содержимого текстовой области.
Код из листинга 8.509 определяет на странице текстовую область и кнопку. Отредакти-
Отредактируйте текст в текстовой области и для восстановления текста щелкните на кнопке Reset
(Сброс).
Листинг 8.509. Восствновление значения текстовой области, установленного по
умолчанию
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Восстановить значение, установленное для текстовой области по
умолчанию.
function resetText(){
document.myForm.myTextArea.value =
document.myForm.myTextArea.defaultValue;
</script>
</head>
<body>
<form name="myForm">
<textarea name="myTextArea" rows=" cols=0">
Это пример текста в текстовой области.
</textarea>
<input type="button" value="C6poc" name="myButton" onclick=' resetTextf) '>
</form></body></html>
Глава 8. Клиентская сторона Ь 9 /
Textarea.Watch() JavaScript 1.2+
w Nav4+
textazea.. wa tch (свойство, функция)
|§| Метод watch() объекта Textarea используется для установки отслеживания свойства, ука-
" занного с помощью параметра свойство. При изменении значения свойства property после
вызова метода watch() вызывается функция function.
|/|В листинге 8.510 приведен пример использования метода watch() для установки отсле-
Р* живания свойства value.
Листинг 8.510. Пример использования метода watchO
<html>
<head>
<script type="text/javascript" language="JavaScriptl.2">
function alertme(id, oldValue, newValue){
document.writeln ("ID (" + id+") изменилось с "+ oldValue + " на ") ;
document.writeln(newValue + "<br>");
return newValue;
function check(){
document.myForm.myltem.watch("value" , alertme);
document.myForm.myItern.value="Переслать";
</script>
</head>
<body onload="check()">
<form name="myForm">
<textarea name="myltem" rows=" cols=0" value="nepefla!Tb"></
textarea>
</form>
</body>
</html>
UntaintO JavaScriptri
1 Nav3
untaint(свойство)
untaint(переменная)
untaint(функция)
untaint(объект)
f Метод untaintO определяет меры безопасности, которые были реализованы только в
JavaScript 1.1. Этот метод позволяет разработчику разрешать использование и распрост-
распространение возвращаемых значений данного сценария другими сценариями. Этот метод не
изменяет передаваемый ему в качестве аргумента элемент, он просто возвращает немар-
немаркированную ссылку на указанный элемент.
Поскольку метод untaintO и функция маркирования данных в версиях, начиная с
JavaScript 1.2, были изъяты, следует избегать применения данного метода. Его можно
использовать только в случае необходимости обеспечения определенного уровня безопас-
безопасности при установке совместимости с браузерами Navigator 3. Более подробная инфор-
информация о модели безопасности в браузерах Navigator приводится в главе 1.
В листинге 8.511 снимается маркировка с переменной, которая объявлена в отдельном окне.
Листинг 8.511. Пример использования метода untaintO, который уже не
поддерживается.
<script language="JavaScriptl.1" type="text/javascript">
// Сохранить немаркированную переменную из второго окна
// в переменной utMyVar.
var utMyvar = untaint(myWin.myVar);
</script>
698 Часть III. Справочник по JavaScript
Window JavaScript1.O+, JScript1.0+
Nav2+, IE3+, Opera3+
Основной обтьект клиентской части языка JavaScript.
# Объект Window является одним из объектов верхнего уровня языка JavaScript, который
создается с помощью дескрипторов <body>, <frameset> или <frame>. Кроме того, эк-
экземпляры этого объекта можно создать с помощью метода Window.open(). Свойства и
методы объекта Window перечислены в табл. 8.39.
Таблица 8.39. Методы и свойства объекта Window
Тип
Метод
Элемент
alertf)
atob()
back()
blur()
btoa()
captureEvents()
clearlnterval()
clearTimeoutO
close()
confirm()
crypto.random()
crypto.signText()
disableExtemalCapture()
Описание
Выводит на экран диалоговое окно с указанным текстом.
Декодирует строку, которая была закодирована с помощью
кодирования по основанию 64.
Загружает в окно предыдущую страницу.
Убирает фокус с окна.
Шифрует строку с помощью метода кодирования по
основанию 64.
Указывает окну перехватывать все события указанного типа.
Сбрасывает интервал, установленный с помощью метода
setlnterval.
Сбрасывает время задержки, установленное с помощью
метода setTimeout.
Закрывает экземпляр окна.
Выводит на экран диалоговое окно подтверждения.
Возвращает случайную строку, длина которой соответствует
количеству байт, переданных данному методу.
Возвращает строку кодированных данных, которая
представляет собой подписанный объект.
Запрещает перехват внешних событий.
enableExternalCapture() Разрешает перехват внешних событий для страниц,
загруженных с других серверов.
find() Выводит на экран диалоговое окно Find (Найти), в которое
пользователь может ввести текст, который требуется найти
на текущей странице.
focus()
forward ()
handleEventO
home()
moveByO
moveTo()
openf)
Устанавливает фокус на указанный экземпляр окна.
Загружает в окно следующую страницу.
Вызывает обработчик указанного события.
Загружвет в данный экземпляр окна страницу,
установленную пользователем в качестве начальной
(домашней).
Перемещает окно на указанное расстояние.
Перемещает окно в указанное место.
Открывает экземпляр окна.
Глава 8.
Тип
Клиентская сторона
Элемент
print()
prompt()
releaseEvents()
resizeBy()
resizeTo()
Описание
Выводит на экран диалоговое окно Print (Печать),
позволяет напечатать текущую страницу.
Выводит на экран диалоговое окно запроса.
Освобождает перехваченные события указанного
Изменяет размеры окна на указанные величины.
Изменяет размеры окна до указанных величин.
699
, который
типа.
routeEvent()
scrollO
unwatch()
watch ()
innerWidth
Передает события указанного типа их стандартному
обработчику.
Прокручивает документ в окне до указанной позиции.
scrollBy()
scrollTo()
setHotKeys()
setlnterval()
setResizeable()
setTimeoutO
setZOptions()
stop()
Прокручивает документ в окне на указанную величину.
Прокручивает документ в окне как по горизонтали, так и по
вертикали до указанной позиции.
Разрешает или запрещает использование горячих клавиш в
окне, в котором отсутствует меню.
Периодически вызывает функцию или вычисляет выражение
по истечению указанного количества миллисекунд.
Указывает, может ли пользователь изменять размеры окна.
Вызывает функцию или вычисляет выражение по истечению
указанного количества миллисекунд.
Устанавливает поведение z-порядка окна.
Прекращает загрузку данных в окно.
Используется для прекращения отслеживания изменений
указанного свойства.
Используется для установки отслеживания изменений
указанного свойства.
Свойство closed
crypto
defaultStatus
document
frames
history
innerHeight
Указывает, закрыт ли данный экземпляр окна.
Фактически представляет собой подобъект объекта Window,
который предоставляет доступ к средствам шифрования
браузера.
Сообщение, которое выводится по умолчанию в строке
состояния окна.
Содержит всю информацию о документе, который находится
в данном окне. Более подробную информацию можно
отыскать в описании объекта Document.
Содержит всю информацию о фреймах, которые находятся
в данном окне. Более подробную информацию можно
отыскать в описании объекта Frame.
Содержит список посещенных URL-адресов.
Содержит высоту области отображения текущего окна в
пикселах.
Содержит ширину области отображения текущего окна в
пикселах.
/ш
Тип
Элемент
length
location
locationbar
menubar
name
offScreenBuffering
opener
Честь ill. Справочник по JavaScript
Описание
Содержит количество фреймов в текущем окне.
Содержит URL загруженной в окно страницы.
Содержит ссылку на адресную строку браузера.
Содержит ссылку на строку меню.
Имя окна.
Указывает, будет ли производится обновление окна во
внеэкранном буфере.
Содержит имя окна, из которого было открыто данное окно.
outerHeight
Содержит высоту внешней области текущего окна (в
пикселах).
outerWidth Содержит ширину внешней области текущего окна (в
пикселах).
pageXOffset
pageYOffset
parent
personalbar
screenX
screenY
scrollbars
self
status
statusbar
toolbar
top
window
Содержит координату х текущего окна.
Содержит координату у текущего окна.
Ссылка на самое верхнее окно, которое отображается в
текущем фрейме.
Ссылка на личную строку браузера.
Содержит координату х левого края окна.
Содержит координату у верхнего края окна.
Ссылка на полосы прокрутки браузера.
Ссылка на текущее окно.
Ссылка на сообщение в строке состояния браузера.
Ссылка на строку состояния браузера.
Ссылка на панель инструментов браузера.
Ссылка на самое верхнее окно, отображаемое в текущем
фрейме.
Ссылка на текущее окно.
Все методы и свойства этого объекта могут использоваться без указания имени экзем-
экземпляра, если они относятся к окну, в котором вызываются. Так, например, установка
значения свойства status приведет к установке состояния текущего окна, в то время как
установка значения свойства myWin.status установит состояние окна myWin. Единствен-
Единственным исключением из этого правила являются свойство location и методы close() and
ореп(), которые при их вызове в обработчике событий должны указываться вместе с
именем экземпляра окна.
ПРИМЕЧАНИЕ
В описании синтаксиса есе методы и сеойстеа объекта Window будут
указываться с именем объекта.
(Код из листинга 8.512 определяет на странице находится кнопку. При щелчке на кноп-
кнопке с помощью метода ореп() создается новый экземпляр окна. Перед закрытием потока
в окно в него записываются данные. Кроме того, в новом окне находится кнопка, ко-
которая позволяет закрыть окно.
Глава 8. Клиентская сторона /См
Листинг 8.512. Создание нового экземпляра объекта Window
<html>
<head>
<script language="JavaScript" type="fcext/javascript">
<!--
// Объявить функцию openWin().
function openWin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window.
var myEars = 'directories=no,location=no,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no";
var myFeatures = myBars + ',' + myOptions;
var myReadme = "Добро пожаловать в Pure JavaScript!\ n"
+ « x n,.
+ 'Сюда вы можете ввести свой текст.'
// Открыть окно. Присвоить экземпляру окна имя newDoc, a
// документу в окне — имя my Win.
var newWin = open('', 'myWin', myFeatures);
newWin.document.writeln('<form>');
newWin.document.writeln('<table cellspacing="O" cellpadding="O"
border="l">' ) ;
newWin.document.writeln('<tr valign="top" bgcolor="#000099"Xtd>');
newWin.document.writeln('<font size="-l" color="#ff££ff "Xb>');
newWin. document. writeln (' Snbsp; Snbsp ;Readme</bX/f ont>') ;
newWin.document.writeln ('</tdX/tr>') ;
newWin. document, wri teln ('<tr valign="top"Xtd>') ;
newWin.document.writeln('<textarea cols=5" rows=" wrap="soft">');
newWin.document.writeln(myReadme + '</textarea>');
newWin. document. writeln (' </tdX/tr>' ) ;
newWin.document.writeln('<tr valign="bottom" align="right"');
newWin.document.writeln(' bgcolor="#cOcOcO"Xtd>');
newWin.document.writeln("<input type="button" value="Закрыть"');
newWin.document.writeln(' onclick="window.close()">');
newWin.document.writeln( '</tdX/tr>') ;
newWin. document. writeln ( '</ tablex/f orm>') ;
// Закрыть поток в документ и перенести окно на передний план.
newWin.document.close();
newWin.focus();
1
// —>
</script>
</head>
<body>
<form>
<Ь>Для открытия нового окна щелкните на этой кнопке:</Ь>
<input type="button" value="OTKpbiTb" onclick='openWin()'>
</form>
</body></html>
wind0W.alert() JavaScripti.0+, JScripti1.0
Nav2+, 1E3+, Opera3+
window.alert(строка)
> Метод alert() объекта Window выводит на экран окно предупреждения, в котором ука-
указывается строка, переданная методу в качестве аргумента.
i В коде из листинга 8.513 при загрузке сценария на экран выводится окно предупрежде-
предупреждения. Результат выполнения сценария показан на рис. 8.4.
Рисунок 8.4.
ОКНО предупреждения,
созданное с помощью
метода window. alertQ
7Uc Часть III. Справочник по JavaScript
Листинг 8,513. Окно предупреждения
<script language="JavaScript" type="text/javascript">
<!--
alert("Это окно предупреждения.");
// —>
</script>
wind0W.at0b() JavaScrlpti.2
w Nav4
window.atob(данные)
$3| Метод atob() объекта Window, который был реализован только в Navigator 4, исполь-
«> зуется для декодирования данных (параметр данные), которые были закодированы с по-
помощью кодирования по основанию 64.
В листинге 8.514 приведен пример кодирования данных с помощью метода btoa() и их
декодирования с помощью метода atob().
Листинг 8.514. Использование метода atobl) для декодирования данных
<html>
<body>
<script type="text/javascript" language="JavaScriptl.2">
var myString = new String();
myString = "Здравствуй, мир!";
// Вывести на зкран кодированный и декодированный текст,
document.write(window.btoa(myString));
document.write(window.atob(myString));
II—>
</script>
</body>
</html>
wind0W.back() JavaScript1.2+ JScrlpO.0
w Nav4+, 1E4+
window.back()
Метод back() объекта Window имитирует щелчок пользователем в окне браузера на кноп-
ке Back (Назад). При этом происходит возврат к предыдущей странице или фрейму в
окне браузера.
Код из листинга 8.515 определяет на странице две кнопки. Одна из кнопок загружает в
браузер предыдущую страницу, а вторая — следующую страницу. Обратите внимание, что
для того, чтобы кнопки выполняли какие-либо действия, необходимо, чтобы в брау-
браузер были загружены предыдущая и следующая страницы.
Листинг 8.515. Использование метода backO
<html>
<body>
<£orm>
<input type="button" value="Hasafl" onclick="window.back()">
<input type="button" value="Bnepefl" onclick="window.forward()">
</form>
</body>
</html>
WindOW.blur() JavaScript1.O+ JScript1.O+
w Nav2+. IE3+, Opera3+
window.blur()
Метод blur() объекта Window убирает с окна фокус. Будьте осторожны при использова-
использовании этого метода совместно с методом focus(). При этом может произойти зациклива-
зацикливание операций получения/снятия фокуса, когда браузер снимает с окна фокус сразу же
после его получения и наоборот.
Глава 8. Клиентская сторона /Uo
|/|Код из листинга 8.516 определяет на странице две кнопки. Когда пользователь щелкает
ir на кнопке Open (Открыть), открывается второе окно меньших размеров. После щелчка
на кнопке Blur (Переместить фокус) фокус из родительского окна переносится в дочер-
дочернее окно.
Листинг 8.516. Использование метода Ыиг() для снятия фокуса с окна
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! —
// Объявить функцию openWin().
function openWinО{
// Создать переменные, в которых будут храниться различные
// опции, которые можно будет установить при создании нового
// экземпляра объекта Window.
var myBars = "directories=no,location=no,menubar=no,status=no";
myBars += ",titlebar=no,toolbar=no";
var myOptions = "scrollbars=no,width=400,height=200,resizeable=no";
var myFeatures = myBars + "," + myOptions;
// Открытие дочернего окна.
newWin = open("", "myDoc", myFeatures);
newWin.document.writeln("Это дочернее окно);
// Закрыть поток, направленный в документ.
newWin.document.close();
// Вернуть фокус в родительское окно.
self.focus();
1
// Объявить функцию blurWin().
function blurWin(){
// Перенести фокус из родительского окна в дочернее.
self.blur();
newWin.focus();
}
// —>
</script>
</head>
<body>
<form>
<input type="button" уа1ие="Открыть" onclick='openWin()'>
<input type="button" values"Переместить фокус"
onclick='blurWin()'>
</form>
</body>
</html>
Window.btoa() JavaScripts
Nav4
window.btoa{данные)
f Метод btoa() объекта Window, который был реализован только в Navigator 4, исполь-
используется для кодирования данных, определенных параметром данные, с помощью коди-
кодирования по основанию 64.
В листинге 8.517 приведен пример кодирования данных с помощью метода btoa() и их
декодирования с помощью метода atob().
Листинг 8.517. Использование метода btoa() для кодирования данных
<html>
<body>
<script type="text/javascript" language="JavaScriptl.2">
<! —
var myString = new String{);
myString = "Здравствуй, мир!";
// Вывести на экран кодированный и декодированный тексты,
document.write(window.btoa(myString));
704 Часть III. Справочник по JavaScript
document.write(window.atob(myString))
II—>
</script>
</body>
</html>
windOW.CaptureEvents() JavaScript1.2+ JScriptf 0+
r " Nav4+, IE4+
window.captureEvents(событие)
window.captureEvents(событие! | событие2 | событие!?)
\ Метод captureEventsO объекта Window перехватывает все события указанного типа. По-
Поскольку можно указать события, обрабатываемые по умолчанию самим языком, програм-
программисты могут объявить функцию, которая будет обрабатывать события требуемым обра-
образом. Если необходимо перехватывать события нескольких типов, их нужно разделять
символом |. Перехватывать можно события следующего типа:
Event.ABORT
Event.BLUR
Event.CHANGE
Event.CLICK
Event.DBLCLIC
Event.DRAGDRO
Event.ERROR
Event.FOCUS
Event.KEYDOW
Event.KEYPRES
Event.KEYUP
Event.MOUSEDO
Event.MOUSEM
Event.MOUSEOU
Event.MOUSEOV
Event.MOUSEUP
Event.MOVE
Event.RESET
Event.RESIZE
Event.SELECT
Event.SUBMIT
Event.UNLOAD
Event.LOAD
После перехвата события можно определить функцию, которая будет выполнять обра-
обработку этого события вместо стандартного обработчика.
В листинге 8.518 на странице находится одно текстовое поле. В дескрипторе <head> до-
документа указана функция, которая будет выполнять обработку всех событий onCIick окна.
Для этого необходимо, чтобы метод captureEventsO перехватывал все события типа
Event.CLICK. При выполнении щелчка на самой странице увеличивается значение счет-
счетчика, размешенного в текстовом поле.
Листинг 8.518. Перехват событий с помощью метода Window.captureEventsO
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Объявить счетчик.
var counter = 0;
// Указать браузеру перехватывать ВСЕ события CLICK.
// на странице и объявить функцию обработки этих событий.
window.captureEvents(Event.CLICK)
window.onCIick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий CLICK.
function myClickHandler(e){
// Передавать все события событию onCIick текстового поля.
window.document.myForm.myText.handleEvent(e);
1
// Эта функция вызывается обработчиком onCIick текстового поля-
// Она выводит в окне количество щелчков мышью.
function changeText(){
document.myForm.myText.value = counter++;
1
// —>
</script>
</head>
Главв 8. Клиентская сторона / UO
<body>
<form name="myForm">
<input type="text" size=" value*"" name="myText"
onclick='changeText()'>
</form>
</body>
</html>
WifldoW.ClearlntervalO
window.clearInterval(интервал)
Метод clearlnterval() объекта Window сбрасывает интервал, передаваемый методу в ка-
честве аргумента. Этот интервал должен быть заранее установлен с помощью метода
setlnterval().
Код из листинга 8.519 в дескрипторе <head> документа, на странице которого в тек-
стовом поле находится счетчик, устанавливается интервал. Интервал используется для об-
обновления значения счетчика каждые пять секунд. Кроме того, на странице находится
кнопка, щелчок на которой приводит к сбросу интервала и прекращению обновления
счетчика.
Листинг 8.519. Сброс интервала с помощью метода clearlnterval()
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<!--
// Объявись счетчик.
var counter = 1;
// Объявись функцию, которая будет обновлять счетчик.
function startCounter (){
document.myForm.myText.value = counter++;
}
// Объявить функцию, которая сбросит обновление счетчика,
function stopCounter(){
window.clearlnterval(mylnterval);
}
// Установить интервал обновления счетчика каждые 5 секунд,
var mylnterval = window.setlnterval("startCounter()", 5000)
// —>
</script>
</head>
<body onload="startCounter()">
<form name="myForm">
<input type="text" size=" value="" name="myText">
<input type="button" value="Сбросить интервал"
onclick="stopCounter()">
</form>
</body>
</html>
window. clearTimeout() JavaScripti.o+ JScriPti.o+
" Nav2+, IE3+, Opera3+
window.clearTimeout(таймаут)
Метод dearTimeout() объекта Window сбрасывает время задержки, переданное методу в
качестве аргумента. Эта задержка должна быть ранее установлена с помощью метода
sctTimeout().
В листинге 8.520 на странице находятся кнопка и область ввода текста. По умолчанию
время будет отображаться в текстовом поле по истечении пяти секунд. Это реализовано
за счет использования метода setTimeout(). При щелчке на кнопке вызывается функция,
которая, в свою очередь, вызывает метод cIearTimeout(), предотвращая таким образом
вывод времени в текстовом поле.
70b Часть III. Справочник по JBVBScript
Листинг 8.520. Использование метода clearTimeoutl)
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! --
// Объявить функцию, которая будет выводись аа экране время.
function showTime(){
myTime = new Date();
myTime = myTime.getHours() + ":" + myTime.getMinutes() + ":";
myTime += myTime.getSeconds();
document.myForm.myText.value = myTime;
}
// Объявить функцию, которая предотвращает вывод времени на экран,
function stopTime(){
window.clearTimeout(myTimeout);
}
// Установить время задержки, равное 5 секундам.
var myTimeout = window.setTimeout("showTime()", 5000)
// —>
</script>
</head>
<body>
<form name="myForm">
<input type="text" size=" value="" name="myText">
<input type="button" value="C6pocHib задержку" onclick="stopTime() ">
</form>
</body>
</html>
~WindOW.clOSe() JavaScript1.0+. JScript1.<H
w Nav2+, IE3+, Opera3+
window.close()
# Метод close() объекта Window и используется для закрытия окна браузера. Поскольку этот
метод впервые появился в JavaScript 1.0, он претерпел некоторые изменения. В первой
его версии метод применялся для закрытия любых окон. В JavaScript 1.1 с помощью этого
метода можно было закрыть только те окна, которые открывались с помощью JavaScript.
Для закрытия любого окна в JavaScript 1.2 требуется уровень привилегий
UniversalBrowserWrite.
i^0 Код из листингп 8.521 определяет на странице кнопку, которая используется для откры-
&~ тия окна. Во вновь открытом окне находится кнопка Close (Закрыть), при щелчке на
которой вызывается метод close(), в результате чего окно закрывается.
Листинг 8.521. Использование метода closed для закрытия окна
<html>
<head>
<script language="JavaScript" type="text/javascript">
<! --
// Объявить функцию openWin().
function openwin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window.
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no';
var myFeatures = myBars + ',' + myOptions;
var myReadme = "Добро пожаловать в Pure JavaScript!\ n" +
"Для вызова метода close () и закрытия окна " +
"щелкните на кнопке Закрыть."
// Открыть окно. Дать экземпляру окна имя newDoc, a
// документу в окне — имя myDoc.
var newWin = open('', 'myDoc', myFeatures);
newWin.document.writeln('<form>');
пава 8. Клиентская сторона
707
newWin.document.writeln('<table cellspacing=" cellpadding=:"O"
border="l">' ) ;
newWin.document.writeln('<tr valign="top" bgcolor="#000099"Xtd>');
newWin.document.writelnDfont size="-l" color="#ffffff"><b>');
newWin . document .writeln (' Snbsp; Snbsp,"Readme</b></font>' ) ;
newWin.document .writeln ('</tdX/tr>' ) ;
newWin. document .writeln ('<tr valign="top"Xtd>' ) ;
newWin.document.writeln('<textarea cols=5" rows=" wrap="scft">'5 ;
newWin.dpcument.writeln(myReadme + '</textarea>');
newWin. document .writeln (' </tdx/tr>') ;
newWin.document.writeln('<tr valign="bottom" align="right"');
newWin. document, writeln (' bgcolor="#cOcOcO"xtd>') ;
// Объявить метод close() для нового окна.
// Вызвать его с поноць» события onClick.
newWin.document.writeln('<input type="button" уа1ие=акриь"'j;
newWin. document .writeln (' onclick="window. close ()">') ."
newWin.document.writeln ('</tdX/tr>') ;
newWin. document. writeln( '</tableX/f orm> ' ) ;
// Закрыть поток, направленный в документ,
// и переместишь окно на передний план.
newWin.document.close() ;
newWin.focus();
}
// — >
</script>
</head>
<body>
<form>
<Ь>Для открытия нового окна щелкните на эфой кнопке:</Ъ>
<input type="button" value="Открыть" onclick='openWin()'>
</form>
</body>
</html>
Window.closed JavaScript1.1+, JScript1.0+
Nav3+, IE3+, Opera3+
window.closed
^Свойство closed возвращает булево значение, указывающее на то. закрыт ли экземпляр
* окна, к которому относится данное свойство. Если окно открыто, свойство возвращает
значение false, если же закрыто — значение true.
j/jKofl из листинга 8.522 определяет на странице две кнопки. При щелчке на кнопке Open
<?* (Открыть) открывается второе окно, на которое перемешается фокус. При щелчке на
кнопке Check (Проверить) сценарий проверяет, открыто ли окно. Если окно открыто,
текст в текстовой области второго окна изменяется. Если окно закрыто, на экран выво-
выводится окно предупреждения.
Листинг 8.522. Использование свойства closed для проверки того, открыто пи окно
<html>
<head>
<script language="JavaScriptl.1" type="text/javascript">
// Объявишь функцию openWin().
function openWin()[
// Создать переменные, в которых будут кранйтьсяг различные опции,
II устанавливаемые при создании нового экземпляра объекта Window.
var myBars = 'directories=no,location=^o,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=40C,height—200,resizeable=no';
var myFeatures = myBars + ',' + myOptxons;
var myReadme = "Добро пожаловать в Pure JavaScript !\ n" +
"Для вызова метода close() к. Закрытия окна " +
"щелкните на кнопке Close."
708
Часть III. Справочник по JavaScript
// Открыть окно. Дать экземпляру окна имя newDoc, a
// документу в окне - имя myDoc.
newWin == open(' ' , 'myDoc' , myFeatures) ;
newWin.document.writeln('<form name="secondForm">');
newWin.document.writeln('<table cellspacing=" cellpadding="O"
border="l">') ;
newWin.document.writeln('<tr valign="top" bgcolor="#000099"Xtd>') ;
newWin.document.writeln('<font size="-l" color="(tffffff"Xb>') ;
newWin.document.writeln(' Readme</bX/font>');
newWin.document .writeln ('</tdX/tr>') ;
newWin. document, wri teln ('<tr valign="top"Xtd>') ;
newWin. document. writeln ("<textarea name="myTextArea" cols=S" rows="T");
newWin.document.writeln(' wrap="soft">' + myReadme + '</textarea>') ;
newHin. document. writeln ('</tdX/tr>') ;
newWin.document.writeln('<tr valign="bottom" align="right"');
newWin.document.writeln(• bgcolor="#c0c0c0"><td>');
newWin.document.writeln('<input type="button" value=aKpbrab" ') ;
newWin.document.writeln('onclick="window.close()">');
newWin.document.writeln( '</tdX/tr>') ;
newWin.document.writeln('</table></form>');
// Закрыть поток, направленный в документ,
// и переместить окно на передний план.
newWin.document.close() ;
newWin.focus ();
}
function checkWin(){
// Использовать свойство closed для проверки того,
// закрыто ли окно.
if(newWin.closed)(
alert("Извините, окно закрыто.");
} else{
var myText = "Это окно все еще открыто";
newWin.document.secondForm.myTextArea.value = myText;
newWin.focus ();
</script>
</head>
<body>
<form>
<input type="button" уа1ие=ткрыть" onclick='openWin()'>
<input type="button" value="Проверить" onclick='checkwin()•>
</form></bodyX/html>
WindoW.COnfirmQ JavaScript1.O+. JScriptlO
w Nav2+, 1E3+, Opera3+
window.confirm {строка)
Метод confirm() объекта Window выводит на экран диалоговое окно подтверждения. В окне
подтверждения отображается строка, передаваемая методу в качестве аргумента. В окне
находятся кнопки ОК и Cancel (Отмена). Метод возвращает булево значение true, если
пользователь щелкнул на кнопке ОК, и false, если на кнопке Cancel.
Код из листинга 8.523 при загрузке сценария на экран выводит окно подтверждения,
в котором пользователю задается вопрос, желает ли он продолжать загрузку. После по-
получения ответа пользователя сценарий выводит его на экран. Результат выполнения сце-
сценария показан на рис. 8.5.
Рисунок 8.5.
Окно подтверждения,
созданное с помощью
метода Window.confirmO
Глава 8. Клиентская сторона /СЗУ
Листинг 8.523. Вывод на экран окна подтверждения с помощью метода confirm().
<script language^"JavaScript" type="text/javascript">
// Спросить пользователь хочет ли он продолжать.
if(confirm("Вы уверены, что хотите продолжить?")){
document.write("Вы щелкнули на кнопке ОК") ;
} else{
document.write("Вы щелкнули на кнопке Cancel");
// Закрыть поток, направленный в документ,
document.close();
</script>
Window.CryptO Ja^aScripti.2
* r Nav4
window.crypto.метод
f Свойство crypto объекта Window используется для получения доступа к функциям шиф-
шифрования браузера Navigator 4.
В листинге 8.524 приведен пример использования свойства crypto для получения досту-
доступа к методу random() из состава функций шифрования браузера Navigator.
Листинг 8.524. Пример использования свойства crypto для получения доступа к
функциям шифрования
<html>
<body>
<script type="text/javascript" languages"JavaScriptl.2">
// Вывод на экран случайного числа,
document.write(crypto.randomA6));
II—>
</script>
</body>
</html>
Window.CryptO.random() JavaScripts
Jr " Nav4
window.crypto.random(число)
& Метод random объекта window.crypto используется для генерации случайного числа, ко-
количество байт в котором определяется параметром число. Этот метод входит в состав фун-
функций шифрования браузера Navigator 4.
В листинге 8.525 приведен пример использования свойства crypto для получения досту-
доступа к методу random(), относящемуся к функциям шифрования браузера Navigator.
Листинг 8.525. Использование метода randomO для генерирования случайного числа
<html>
<body>
<script type="text/javascript" language="JavaScriptl.2">
// Вывод на экран случайного числа,
document.write(crypto.randomA6));
II—>
</script>
</body>
</html>
window.crypto.signText() JavaScriNa1V4
window.crypto.signText(текст, стиль)
window.crypto.signText(текст, с-гиль, полномочия!, ..., полномочиям)
710 Часть III. Справочник по JavaScript
# Метод signText() объекта window.crypto используется для подписывания текста, опреде-
определенного параметром текст. В зависимости от стиля подписи, заданного параметром стиль,
который может быть ask или auto, браузер выводит на экран диалоговое окно со спис-
списком сертификатов, с помощью которых можно подписать текст. Метод signText() в ка-
качестве аргументов также может принимать один или несколько необязательных параметров
полномочия, которые позволяют передавать полномочия на использования сертификатов.
После кодирования и отправки серверу, последний декодирует и проверяет полученные
данные. При обнаружении ошибки возвращается один из следующих кодов:
• error: noMatchingCert — указывает, что сертификат пользователя не соответствует од-
одному из переданных аргументов полномочия.
• error: userCancel — указывает, что пользователь закрыл диалоговое окно без переда-
передачи сертификата.
• error: internalError — указывает, что при обработке данных произошла внутренняя
ошибка.
В листинге 8.526 пользователю предлагается ввести текст, а затем выводится приглаше-
приглашение подписать введенный текст. После подписания текст можно передавать на сервер.
Листинг 8.526. Использование метода signTextO
<html>
<script type="text/javascript" language=" JavaScript!.. 2">
<! --
// Вывести запрос на ввод текста.
myText = window.prompt("Пожалуйста, введите lerci", "");
// Подписать текст,
crypto.signText(myText, ask) ;
II —>
</script>
</html>
window.defaultStatus" ~ JavaScripti.o+ jscriPti.o+
Nav2+, IE3+, Opera3+
window.defaultStatus = строка.
& Свойство defaultStatus объекта Window содержит сообщение, которое выводится в стро-
"" ке состояния браузера. Обратите внимание на то, что в JavaScript 1.1 это свойство было
маркированным. Более подробная информация о модели безопасности и маркировании
данных, используемых в JavaScript, приведена в главе 1.
В листинге 8.527 приведен пример настройки сообщения, которое будет выводиться по
умолчанию в строке состояния после загрузки документа. В сценарии совместно со свой-
свойством defaultStatus используется обработчик событий on Load, расположенный внутри дес-
дескриптора <body>.
Листинг 8.527. Установка сообщения в строке состояния, выводимого по умолчанию
<body onload="window.defaultStatus=
'Пожалуйста, сделайте ваш выбор'">
window.disableExternalCapture()
window.disableExternalCapture()
Метод disableExternalCapture() объекта Window запрещает перехват внешних событий, ус-
танонленный с помощью метода enableExternalCaptureO- Этот метод позволяет перехва-
перехватывать события во фреймах, загруженных с разных серверов. Для того чтобы разрешить
перехват внешних событий, необходимо запросить уровень привилегий
UniversalBrowserWrite. После получения требуемого уровня привилегий и вызова мето-
метода disableExternalCapture() для указания типов перехватываемых событий используется
метод Window.captureEventsQ.
Глава В. Клиентская сторона /11
Более подробная информация об уровнях привилегированности, модели
безопасности JavaScript и подписанных сценариях приведена в главе 1.
,/$ В листинге 8.528 при загрузке документа разрешается перехват внешних событий. В са-
Р* мом документе находится кнопка, после щелчка на которой вызывается функция, зап-
запрещающая перехват внешних событий.
Листинг 8.528. Запрет перехвата внешних событий
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
^i
// Запросить у пользователя уровень привилегий UniversalBrowserWrite.
netscape.securi ty.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
// Разрешить перехват внешних событий.
window.enableExternalCapture() ;
// Указать перехват событий submit.
window.captureEvents(Event.SUBMIT);
//Объявить функцию, которая будет отключать перехват внешних событий
function turnOffEvents()(
window.disableExternalCapture();
alert("Перехват внешних событий успешно отключен");
}
// — >
</script>
</head>
<body>
<form>
<input type="button" values"Запретить перехват внешних событий"
onclick=ITturn0ffEvents () ">
</form>
</body>
</html>
window.documenT р^
Nav2+, IE3+, Opera3+
Создает экземпляр объекта Document.
window.document.событие
window, document.метод()
window.document.свойство
f Свойство document, которое является дочерним объектом объекта Window, представляет
собой основной объект языка JavaScript, который определяется с помощью дескриптора
<body>. Свойства, методы и события объекта document приведены в табл. 8.40.
Таблица 8.40. Обработчики событий, методы и свойства объекта Window.document
Tun Элемент Описание
Обработчик onClick Выполняет указанный код при щелчке мышью на документе,
событий
onDblClick Выполняет указанный код при двойном щелчке мышью на
документе.
onKeyDown Выполняет указанный код при нажатии клавиши на клавиатуре.
Этот обработчик вызывается перед обработчиком onKeyPress.
Обработчик onKeyDown появился в JavaScript 1.2.
onKeyPress Выполняет указанный код при нажатии клавиши на клавиатуре.
Этот обработчик вызывается непосредственно после
обработчика onKeyDown. Обработчик onKeyPress появился в
JavaScript 1.2.
712
Тип
Элемент
onKeyUp
onMouseDown
onMouseUp
Описание
Выполняет
клавиатуре
Выполняет
Выполняет
Часть III. Справочник по JavaScript
указанный код при отпускании клавиши на
. Обработчик on Key Up появился в JavaScript 1.2.
указанный код при нажатии кнопки мыши.
указанный код при отпускании кнопки мыши.
Метод captureEvents() Позволяет перехватывать все события передаваемые
документу указанного типа. Обратите внимание, что данный
метод появился в JavaScript 1.2.
close ()
Закрывает поток, направленный в документ.
getSelection() Возвращает выделенный в документе текст.
handleEvent() Вызывает обработчик события указанного типа. Данный метод
появился в JavaScript 1.2.
ореп()
Открывает поток, направленный в документ.
releaseEvents() Освобождает перехваченные события указанного типа.
Обратите внимание, что данный метод появился в JavaScript
1.2.
routeEvent() Передает перехваченные события указанного типа стандартным
обработчикам. Обратите внимание, что данный метод появился
в JavaScript 1.2.
Свойство
write ()
writeln()
alinkColor
anchors
applets
bgColor
cookie
Выводит в документе заданную строку.
Выводит в документе заданную строку, за которой следует
символ начала новой строки.
Содержит значение атрибута alink дескриптора <body>.
Массив, в котором содержатся все дескрипторы <а>
документа.
Массив, в котором содержатся все дескрипторы <applet>
документа. Обратите внимание, что данный метод появился в
JavaScript 1.1.
Содержит значение атрибута bgcolor дескриптора <body>.
Определяет cookie-набор.
domain Содержит домен документа. Обратите внимание, что данный
метод появился в JavaScript 1.1.
embeds Массив, в котором содержатся все дескрипторы <embed>
документа. Обратите внимание, что данный метод появился в
JavaScript 1.1.
fgColor
Содержит значение атрибута fgcolor дескриптора <body>.
formName
Действительные имена всех объектов form в документе.
forms
Массив, в котором содержатся все дескрипторы <form>
документа. Обратите внимание, что данный метод появился в
JavaScript 1.1.
images Массив, в котором содержатся все дескрипторы <img>
документа. Обратите внимание, что данный метод появился в
JavaScript 1.1.
lastModified Содержит дату внесения в документ последнего изменения.
Глава 8. Клиентская сторона
713
Тип
Элемент
layers
linkColor
links
plugins
Описание
Массив, в котором содержатся все дескрипторы <1ауег> документа.
Обратите внимание, что данный метод появился в JavaScript 1.2.
Содержит значение атрибута link дескриптора <body>.
Массив, в котором содержатся все дескрипторы <а> и <агеа>
документа.
Массив, в котором содержатся все подключаемые модули в документе.
Обратите внимание, что данный метод появился в JavaScript 1.1.
referrer
title
Содержит URL документа, на котором находится ссылка на текущий
документ.
Содержит текст, который находится между дескрипторами <title> и
URL
Содержит URL текущего документа.
vlinkColor
Содержит значение атрибута vlink дескриптора <body>.
Более подробная информация по указанным обработчикам событий, методам и свойствам
приведена в описаниях соответствующих элементов объекта Document.
В листинге 8.529 приведен пример использования метода write() свойства document для
вывода на странице заданного текста.
Листинг 8.529. Использование методов свойства document
<script language="JavaScript" type="text/javascript">
<! —
// Выводит на страницу текст "Здравствуй, мир!"
window.document.write("Здравствуй, мир!");
// — >
</script>
JavaScriptl.2+
Nav4+
window.enabieExternalCaptureO
window.enableExternalCapture(событие)
\ Метод enableExternalCapture() объекта Window разрешает перехват передаваемых ему
внешних событий. Данный метод позволяет осуществлять перехват событий во фреймах,
загруженных с другого сервера. Перед включением перехвата внешних событий необхо-
необходимо получить уровень привилегий UniversalBrowserWrite. В результате получения этого
уровня привилегий на экран выводится диалоговое окно безопасности, которое дает воз-
возможность пользователю принять запрос или отказаться от него.
После получения требуемого уровня привилегий и вызова метода enabieExternalCaptureO
для указания типов перехватываемых событий используется метод Window.captureEventsO.
Для отключения перехвата внешних событий применяется метод
Window.disableExternalCapture(). Перехватывать можно события следующих типов:
Event-ABORT
Event.BLUR
Event.CHANGE
Event.CLICK
Event.DBLCLICK
Event.DRAGDROP
Event.ERROR
Event.FOCUS
Event.KEYDOWN
Event.KEYPRES
Event.KEYUE
Event.LOAD
Event.MOUSEDOWN
Event.MODSEREMOVE
Event.MODSEODT
Event.MOUSEOVER
Event.MOUSEUP
Event.MOVE
Event.RESET
Event.RESIZE
Event.SELECT
Event.SUBMIT
Event.UNLOAD
/ 1ч- Часть III. Справочник по JavaScript
Дополнительные сведения об уровнях привилегий, модели безопасно-
безопасности JavaScript и подписанных сценариях приведены в главе 1.
,f /% В листинге 8.530 при загрузке документа включается перехват внешних событий.
Листинг 8.530. Включение перехвата внешних событий
<script language="JavaScriptl.2" type="text/javascript">
<! --
// Запросить уровень привилегий UniversalBrowserWrite.
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite") ;
// Включить перехват внешних событий.
window.enableExternalCapture();
// Перехварывать события submit.
window.captureEvents(Event.SUBMIT);
// —>
</script>
windOW.find() JavaScripti.2, JScripftO
yt Nav4, IE4
window, find (}
^J Метод find() объекта Window выводит на экран диалоговое окно поиска. Это окно по-
Р зволяет пользопателю осуществлять поиск заданной строки на странице, на которой оно
было вызвано.
Э! Это метод поддерживался топько в браузерах версии 4. В более по-
поздних версиях метод find() отсутствует.
'/<0 ^ код из листинга 8.531 включена функция, при вызове которой выводится на экран
С--'' диалоговое окно поиска.
Листинг 8.531. Диалоговое окно поиска, которое можно использовать для поиска в
документе указанной строки
<script language^"JavaScriptl.2" type="text/javascript")
^ i __.
// Вывести на экран диалоговое окно поиска
function mySearch(){
window.find():
}
// —>
</script>
window.focusO JScripti.i+. jscripti.o+
w Nav3+, IE3+, Opera3+
window.focus()
Й^ Метод focus() объекта Window переносит фокус на окно. Будьте осторожны при исполь-
* зовании этого метода совместно с методом blur(). В этом случае может произойти зацик-
зацикливание при получении/снятии фокуса, когда браузер снимает с окна фокус сразу же
после его получения и наоборот.
\f/(% Код из листинга 8.532 определяет па странице кнопку. Когда пользователь щелкает на
?"* кнопке Open (Открыть) открывается второе окно меньших размеров, а фокус перено-
переносится на родительское окно.
Листинг 8.532. Использование метода focus() для переноса фокуса на окно
<html>
<hee.d>
<script language="JavaScript" type="text/javascript">
Глава 8. Клиентская сторона / I U
// Объявишь функцию openKi.nO.
function openKin(){
// Создашь переменные, в которых будут хранишься различные
// опции, которые можно будет устанавливать при создании нового
// экземпляра объекта Window.
var myBars = "directories=no,location=no,menubar=no,status=no";
myBars += ",titlebar=no,toolbar=no";
var myOptions = "scrollbars=no,width=400,height=200,resizeable=no";
var myFeatures = myBars + "," + myOptions;
// Открыть дочернее окно.
newWin = open!"", "myDoc", myFeatures);
newHin.document.wr iteln j"Э«о дочернее окно");
// Закрыть поток, направленный в документ.
newWin.document.close();
// Вернуть фокус родительскому окну.
self.focus();
}
// —>
</script>
<body>
<form>
<input type="button" value="Открыть" onclick='openWin()'>
</form>
</body>
</html>
WindOW.forwardO " JavaScript1.2+ JscripOO
Nav4+, IE4+
window.forward()
f Метод fonvardO объекта Window имитирует щелчок пользователем на кнопке Forward
(Вперед) браузера. В результате этого действия происходит переключение на следующую
страницу/фрейм в окне браузера.
Код из листинга 8.533 определяет страницу с двумя кнопками. Одна из кнопок загру-
загружает в браузер предыдущую страницу, а вторая — следующую страницу. Обратите вни-
внимание на то, что для того, чтобы кнопки выполняли какие-либо действия, необходи-
необходимо, чтобы в окно браузера были загружены предыдущая и следующая страницы.
Листинг 8.533. Использование метода forward()
<html>
<body>
<form>
<input type="button" value="Hasafl" onclick="window.back()">
<input type="button" value="Bnepefl" onclick="window.forward()">
</form>
</body>
</html>
window.frames Javas«ipti^77scripti.o+
Nav2+, IE3+, Opera3+
window, frames [ "иия_фрейма"]
window.frames[число]
j| Свойство frames объекта Window содержит массив, в котором хранятся все экземпляры
объекта Frame документа, созданные с помощью дескриптора <frame>. Доступ к элемен-
элементам массива можно получить либо путем индексирования в массиве, либо по имени,
которое указано в атрибуте name дескриптора <frame>.
В листинге 8.534 для получения доступа к именам фреймов окна используется свойство length
массива frames и цикл for. Данные по именам фреймов выводятся в окне документа.
Листинг 8.534. Пример использования свойства frames
<script language="JavaScript" type="text/javascript">
716 Часть III. Справочник по JavaScript
// Для вывода на экран имен всех фреймов воспользоваться циклон for.
for(var i = 0; i <= window, frames .length; i++) {
newWin.document.write("Имя фрейма »" + i + " : "
+ window.frames[i].name + "<br>");
}
// —>
</script>
window.frames.length JavaScripti.o+ jscr!pti.o+
э Nav2+, IE3+, Opera3+
window.frames["имя_фрейма"].length
window, frames[число].length
#Подсвойство length свойства frames объекта Window определяет количество фреймов в
документе.
В листинге 8.535 для получения доступа к именам фреймов окна используется свойство
length массива frames и цикл for. Данные по именам фреймов выводятся в окне доку-
документа.
Листинг 8.535. Пример использоввния свойства length
<script language="JavaScript" type="text/javascript">
<f--
// Для вывода на экран имен всех фреймов воспользоваться циклом
for.
for(var i = 0; i <= window, frames .length; i++) {
newWin. document, write ("Имя кадра №" + i + ":"
+ window.frames[i].name + "<br>");
}
// -->
</script>
window, handleEvent() JavaScripti.2+. jscripe.o+
w Nav4+, IE4+
window.object.handleEvent(событие)
Метод handleEvent() объекта Window вызывает обработчик указанного события заданного
объекта. Этот метод появился в JavaScript 1.2.
Код из листинга 8.536 определяет на странице одиночное текстовое поле. В сценарии пе-
редаются указания браузеру относительно того, что необходимо перехватывать все события
Click а для их обработки вызывать функцию myClickHandler. В этой функции для обра-
обработки событий используется метод handleEvent() текстового поля.
При щелчке мышью на странице обработчик событий onClick в дескрипторе <input
type="text"> вызывает функцию, которая изменяет текст в текстовом поле. При выпол-
выполнении щелчка на самой странице увеличивается значение счетчика щелчков мышью,
который находится в текстовом поле.
Листинг 8.536. Использоввние метода handleEventO объвкта Window для
обрвботки всех щелчков мышью нв странице
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Объявишь счетчик.
var counter = 0;
// Указать браузеру перехватывать ВСЕ события CLICK
// на странице и объявить функцию обработки этих событий.
window.captureEvents(Event.CLICK)
window.onClick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий CLICK.
function myClickHandler(e){
// Передавать все события событию onClick текстового поля.
Глава 8. Клиентская сторона
717
window.document.myForm.myText.handleEvent(e);
}
// Эта функция вызывается обработчиком onClick текстового поля.
// Она выводит на экран количество щелчков мышью,
function changeText(){
document.myForm.myText-value = counter++;
</script>
</head>
<body>
<form name="myForm">
<input type="text" size=" value=""
onclicks'ohangeTsxt() '>
</form>
</body>
</html>
name="myText"
JavaScript1.1+, JScript1.0+
Nav3+, 1ЁЗ+. Opera3+
window.history
window.history[число]
window.history.метод()
window.history.свойство
Свойство History объекта Window является одним их основных объектов языка JavaScript.
Он содержит массив имен и URL-адреса посещенных страниц. Доступ к определенному
URL в массиве history можно получить с использованием индекса число, указывающе-
указывающего на URL-адрес, данные о котором требуется получить.
Кроме того, как указано в описании синтаксиса, для программирования доступны методы
и свойства объекта history. Соответствующие методы и свойства перечислены в табл. 8.40.
Таблица 8.40. Методы и свойства объекта Window.history
Тип
Метод
Свойство
Элемент
back
forward
go
current
length
next
previous
Описание
Содержит URL-адрес предыдущей страницы.
Содержит URL-адрес следующей страницы.
Загружает переданный методу URL-адрес. Переданный URL-адрес
может указывать по отношению к текущему URL-адресу или
представлять собой строку, которая является полным URL-адресом.
Содержит текущий URL-адрес окна. Это свойство было введено в
JavaScript 1.1.
Содержит количество URL-адресов в журнале посещений окна.
Содержит следующий URL-адрес в журнале посещений окна.
Это свойство появилось в JavaScript 1.1.
Содержит предыдущий URL-адрес в журнале посещений окна.
Это свойство появилось в JavaScript 1.1.
Дополнительные сведения по указанным методам и свойствам приведены в описаниях
соответствующих элементов объекта History.
В листинге 8.537 на странице находятся две кнопки, которые дают возможность пользо-
пользователю переходить вперед и назад в журнале посещений.
Листинг 8.537. Использование массива history для загрузки посещенных страниц
<html>
<body>
<£orm>
718
Часть III. Справочник по JavaScript
<input type="button" value="Hasan."
onclick="window.history.back()">
<input type="button" value="Вперед"
onclick="window.history.forward О">
</form>
</body>
</html>
WindOW.homeO JavaScript1.2+. JScripGO
v* Nav4+, IE4+
window.home()
^\ Метод home() объекта Window имитирует щелчок пользователем на кнопке Home (До-
^' мой) браузера. Метод загружает в браузер установленную начальную (домашнюю) стра-
страницу.
i ^ В листинге 8.538 на странице находится одна кнопка, в результате щелчка на которой
■9"' загружается начальная (домашняя) страница.
Листинг 8.538. Использование метода homef] для перехода на начальную
(домашнюю) страницу пользователя
<form>
<пЗ>Домой, Джеймс!</h3>
<input type—"button" value="$owioft" onclick="window.home() ">
</form>
window. innerHeight JavaScripti.2+
window.innerHeight
Щ& Свойство innerHeight объекта Window опреедляет высоту документа внутри фрейма бра-
*^ узера (выражается в пикселах). В эту высоту входят все панели инструментов и другие
составляющие самого фрейма.
\t s% В листинге 8.539 на странице находится кнопка, при щелчке на которой открывается вто-
^' рое окно меньших размеров. В новом окне содержится значение свойства innerHeight.
Листинг 8.539. Использование свойства innerHeight
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
*£ i
// Объявить функцию, которая открывает маленькое окно,
function openWin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window.
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no';
var myFeatures = myBars + ',' + myOptions;
// Открып, окно. Присвоить экземпляру окна имя newDoc,
// а документу в окне — myDoc.
var newWin = open (' ' , 'myDoc' , myFeatures) ;
// Вывести в окне значения его высоты и ширины.
newKin.document.writeln('<Ь4>Свойства этого окна</Ь4>');
newWin.document.writeln('innerHeight: ' +newKin.innerHeight+ '<br>');
newWin.document.writeln('innerWidth: '+ newWin.innerwidth + '<br>');
newWin.document.writeln('outerHeight: ' + newWin.outerHeight + '<br>');
newWin.document.writeln('outerWidth: ' + newWin.outerWidth + '<br>');
newWin.document.wri teln('<form>') ;
newKin.document.writeln('<input type="button" value="Закрыть"');
newWin.document.writeln(' onclick="window.close()">');
newWin.document.writeln('</form>');
// Закрыть поток, направленный в документ.
newWin.document.close();
Глава 8. Клиентская сторона / I У
</script>
</head>
<body>
<form>
<input type="button" value="Открыть" onclick="openKin()">
</fortn>
</body>
</html>
Nav4+
window.innerWidth
Свойство innerWidth объекта Window определяет ширину документа внутри фрейма бра-
браузера (задается в пикселах). В эту высоту входят все панели инструментов и другие со-
составляющие самого фрейма.
Код из листинга 8.540 определяет на странице кнопку, при щелчке на которой откры-
открывается второе окно меньших размеров. В новом окне содержится значение свойства
innerHeight.
Листинг 8.540. Использование свойства innerWidth
<html>
<head>
<script language^"JavaScriptl.2" type="text/javascript">
<!--
// Объявить функцию, которая открывает маленькое окно.
function openWin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window,
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no';
var myFeatures = myBars + ',' + myOptions;
// Открыть окно. Присвоить экземпляру окна имя newDoc,
// а документу в окне — myDoc.
var newKin = open (' ' , 'myDoc' , myFeatures) ;
// Вывести в окне значения его высоты и ширины.
newWin.document.writeln('<Ь4>Свойства этого oKHa</h4>');
newWin.document.writeln('innerHeight: ' +newWin.innerHeight+ '<br>');
newKin.document.writeln('innerWidth: ' +newKin.innerKidth + '<br>');
newWin.document.writeln('outerHeight: ' + newKin.outerHeight + '<br>');
newKin.document.writeln('outerKidth: '+newKin.outerKidth + '<br>');
newWin.document.writeln{'<form>');
newWin.document.writeln('<input type="button" уа1ие=акрыть"');
newWin.document.writeln(' onclick="window.close()">');
newWin.document.writeln('</form>');
// Закрыть поток, направленный в документ.
newKin.document.close();
}
// — >
</script>
</head>
<body>
<form>
<input type="button" value="OTKpbrab" onclick="openWin() ">
</form>
</body>
</html>
window.length" "" iavaScripti.o+. jscripti.o+
э Nav2+, IE3+, Opera3+
window.length
/ С. U Часть III. Справочник по JBvaScript
$S Свойство length объекта Window определяет количество фреймов в окне. Это свойство
"» идентично свойству Window.frames.length.
В листинге 8.541 приведен пример определения количества фреймов в окне.
Листинг 8.541. Использование свойства length объекта Window
<script language="JavaScript" type="texfc/javascript">
// Объявить функцию, которая возвращает
// количество фреймов в указанном окне.
function numFrames(win){
return win.length;
</script>
WindOW.location Ja~vaScript1.O+ JScrfpt1.O+
Nav2+, IE3+, Opera3+
window.location
Свойство location объекта Window возвращает текущий URL-адрес документа в окне.
В листинге 8.542 на экран выводится окно предупреждения, в котором содержится URL-
адрес текущего окна.
Листинг 8.542. Использование свойства location объекта Window
<script language="JavaScript" type="text/javascript">
// Вывести в окне предупреждения текущий URL-адрес,
alert(window.location);
</script>
WindOW. locationbar JavaScript1.2+
Nav4+
window.locationbar.свойство
k Свойство locationbar объекта Window само по себе является, в некоторой степени, объек-
объектом. Оно используется для получения доступа к своему свойству visible, которое опре-
определяет, отображается ли на экране адресная строка.
ПРИМЕЧАНИЕ
На момент написания данной книги свойство locationbar содержало
только одно подсвойство, visible.
Пример использования свойства locationbar приведен в описании свойства
Window, locationbar .visible.
window.locationbar .visible JavaScripti.2+
Nav4+
window.locationbar.visible
\ Подсвойство visible свойства locationbar объекта Window используется для определения,
отображается ли на экране пользователя адресная строка. Если адресная строка отобража-
отображается, подсвойство возвращает значение true, в противном случае возвращается значение
false.
В листинге 8.543 определяется, отображаются ли на экране некоторые из панелей брау-
браузера. В приведенном примере для определения состояния адресной строки используется
свойство visible.
Листинг 8.543. Использование свойства visible свойства locationbar
<script language="JavaScript" type="text/javascript">
Глава 8. Клиентская сторона / С. I
// Отображение на странице состояния панели браузера. Если
// соответствующее значение равно true, панель выведена на экран.
document.writeln('<ЬЗ>Состояние панелей браузера</ЬЗ>')
document.writeln('Строка меню: ' + window.menubar.visible + '<br>');
document.writeln('Панель инструментов: '
+ window.toolbar.visible + '<br>');
document.writeln('Адресная строка: '
+ window.locationbar.visible + '<br>');
document.writeln('Личная панель: '
+ window.personalbar.visible + '<bt>');
document.writeln('Полосы прокрутки: '
+ window.scrollbars.visible + '<br>');
document.writeln('Строка состояния: '
+ window.statusbar.visible + '<br>');
// Закрыть поток, направленный в документ,
document.close();
// —>
</script>
window.menubar ^^
Nav4+
.свойство
Свойство menubar объекта Window само по себе является, в некоторой степени, объек-
объектом. Оно используется для получения доступа к своему свойству visible, которое опре-
определяет, отображается ли на экране строка меню.
ПРИМЕЧАНИЕ
На момент написания данной книги свойство menubar содаржало
только одно подсвойство, visible.
Пример использования свойства menubar приведен в описании свойства
Window.menubar. visible.
window, menubar .visible JavaScripti.2+
Nav4+
window.menubar.visible
Подсвойство visible свойства menubar объекта Window используется для определения,
отображается ли на экране пользователя строка меню. Если строка отображается, подсвой-
подсвойство возвращает значение true, в противном случае возвращается значение false.
В листинге 8.544 определяется, выведены ли на экран некоторые из панелей браузера. В
приведенном примере для определения состояния панели меню используется свойство
visible.
Листинг 8.544. Использование свойства visible свойства locationbar
<script language="JavaScript" type="text/javascript">
<! —
// Вывести на страницу состояние панели браузера. Если
// соответствующее значение равно true, панель выведена на экран.
document.writeln('«СИЗМ^остояние панелей брауэера</ЬЗ>')
document.writeln('Строка меню: ' + window.menubar.visible + '<br>');
document.writeln('Панель инструментов: '
+ window.toolbar.visible + '<br>');
document.writeln('Адресная строка: '
+ window.locationbar.visible + '<br>');
document.writeln('Личная панель: '
+ window.personalbar.visible + '<br>');
document.writeln('Полосы прокрутки: '
+ window.scrollbars.visible + '<br>');
document.writeln('Строка состояния: '
+ window.statusbar.visible + '<br>');
/ С. С. Часть III. Справочник по JavaScript
// Закрыть поток, направленный в документ,
document.close () ;
// — >
</script>
WindOW.mOVeByO JawaScript1.2+. JScript3.Of
JW Nav4+, IE4+
window.moveBy(висло_по_гор, число_по_вврт)
Метод moveBy() объекта Window используется для перемещения заданного окна на ука-
указанное количество пикселов. Как видно из описания синтаксиса, первое передаваемое
методу числовое значение соответствует количеству пикселов, на которое необходимо
переместить окно по горизонтали, а второе числовое значение — количеству пикселов,
на которое необходимо переместить окно по вертикали.
Если оба аргумента метода являются положительными числами, окно перемещается вправо
и вниз. Отрицательные значения приводят к перемещению окна в противоположных на-
направлениях.
Код из листинга 8.545 определяет на странице четыре кнопки: Up (Вверх), Down (Вниз),
Right (Вправо) и Left (Влево). При щелчке на одной из кнопок окно, в которое загру-
загружен документ, перемещается на один пиксел в соответствующем направлении.
Листинг 8.545. Использование метода moveByO Для перемещения окна
<html>
<head>
</head>
<script language="JavaScriptl.2" type="text/javascript">
// Объявить функцию, которая будет перемещать окно,
function moveKin(dir, dist){
// Объявить переменные, в которых будут содержаться
// величины перемещений,
var myVert;
var myHorz;
// Определить тип перемещения,
if(dir == "верт"){
myHorz = О;
myVert = dist;
} else{
myHorz = dist;
myVert = 0 ;
}
// Переместить окно.
window.moveBy(myHorz, myVert);
}
// —>
</script>
<body>
<form>
<table border=0>
<tr>
<tdx/td>
<tdxinput type="button" value="BBepx"
onclick="moveKin('веря',-1)"></td>
<tdx/td>
</tr>
<tr>
<tdxinput type="button" value="BfleBo"
onclick="moveKin('гор',-1)"></td>
<tdx/td>
<tdXinput type="button" value="BnpaBo"
onclick="moveKin('гор',1)"></td>
</tr>
Глава В. Клиентская сторона
723
<tr>
<tdX/td>
«Ctdxinput type="button" value="BHH3"
onclick="moveWin('верт',1)
<td></td>
</tr>
</table>
</£orm>
</body>
</btml>
WindOW.mOVeTo() JavaScript1.2+ JScriptt 0+
w Nav4+, IE4+
window.movelo(чиспоХ, числоУ)
Метод moveTo() объекта Window используется для перемещения заданного окна в ука-
указанную позицию. Как видно из описания синтаксиса, первое передаваемое методу чис-
числовое значение соответствует координате х, куда необходимо переместить окно, а вто-
второе числовое значение — координате у.
Код из листинга 8.546 определяет на странице два текстовые поля и кнопку. После ввода
в текстовые поля целых чисел и щелчке на кнопке окно перемещается в положение,
определенное введенными числами.
Листинг 8.546. Использование метода moveTol) для перемещения окна
<html>
<head>
</head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Объявить функцию, которая будет перемещать окно.
function moveWin(form){
// Объявить переменные, в которых будут содержаться
// величины перемещений.
var myX = form.X.value;
var myY = form.Y.value;
// Переместить окно.
window.moveTo(myX, myY) ;
}
// —>
</script>
<body>
<form>
«СЬЖоордината Х:</Ь>
<input type="text" name="X"Xbr>
<Ь>Координата Y:</b>
<input type="text" name="Y"Xbr>
<input type="button" value="Переместить окно"
onclick="moveKin (this . form) "X/td>
</form>
</body>
</html>
window.name
window.name
Свойство name экземпляра объекта Window возвращает имя окна. Это свойство содержит
имя, указанное при создании нового окна с помощью метода Window.open(). В JavaScript
1.0 свойство паше было доступно только для чтения, а в JavaScript 1.1 оно стало дос-
доступно и для записи. Благодаря этому можно присваивать имена и окнам, которые не
создавались через метод Window.open(). Кроме того, в JavaScript 1.1 свойство name ста-
стало маркированным.
Часть III. Справочник по JavaScript
B листинге 8.547 на странице находится кнопка, с помощью которой открывается вто-
рое окно. Имя нового окна задается с помощью свойства паше объекта Window.
Листинг 8.547. Использование свойства name для определения имени окна
<html>
<head>
<script language3"JavaScript" type="text/javascript">
<! —
// Объявить функцию, которая открывает маленькое окно,
function openWin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window,
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no';
var myFeatures = myBars + ',■ + myOptions;
// Открыть окно. Присвоить экземпляру окна имя newKin,
// а документу в окне — myDoc.
var newKin = open (' ', 'myDoc1, myFeatures);
// Вывести в новом окне его имя.
newftfin.document.writeln('Имя этого окна: ' + newWin.name + '<br>');
newKin.document.writeln('<fons>');
newKin.document.writeln('<input type="button" уа1ие=акркть"');
newKin.document.writeln(' onclick="window.close()">');
newwin.document.writeln('</form>');
// Закрыть поток, направленный в документ.
newWin.document.close();
}
// -->
</script>
</head>
<body>
<form>
<input type="button" value="Открыть" onclick="openKin()">
</form>
</body>
</html>
window.offscreenBuffering JawaScripti.2. JScriPt3.o+
3 Nav4+, IE4+
window.offscreenBuffering - boolean
Свойство offscreen Buffering объекта Window используется для явного указания браузеру
использовать внеэкранную буферизацию данных. Без использования внеэкранной буфе-
буферизации при перерисовке содержимого страницы экран может мигать. Свойство
offscreenBuffering может содержать булевы значения true или false.
листинге 8.548 приведен пример запрещения внеэкранной буферизации данных.
Листинг 8.548. Использование свойства offscreenBuffering
<script type="text/javascript" language="JavaScriptl.2">
// Запретить внеэкранную буферизацию.
window.offscreenBuffering = false;
//-->
</script>
windoW.OnBlur JavaScript1.0+ JScript1.0+
Nav2+, IE3+, Opera3+
onblur="команда"
Обработчик событий onBIur объекта Window вызывается при потере данным окном фо-
фокуса. При использовании этого обработчика событий следует быть особенно осторожным,
поскольку в результате применения обработчика событий onFocus или метода focus()
Глава 8. Клиентская сторона 725
существует опасность попасть в бесконечный цикл. Обратите внимание, что когда этот
обработчик события вызывается внутри дескриптора <body>, он подменяется в случае,
когда в дескрипторе <frame> используется этот же обработчик.
ПРИМЕЧАНИЕ
Некоторые браузеры Navigator 3 не полностью поддерживают этот
обработчик событий при его использовании в дескрипторе <frameset>.
yj В листинге 8.549 на странице находится набор фреймов, состоящий из двух фреймов. В
ь^ дескрипторе первого фрейма, toe, указан обработчик событий onBIur. При потере этом
фреймом фокуса вызывается функция myBIurFunc().
Листинг 8.549. Пример использования события onBIur
<frameset cols=50,*">
<frame name="toc"
src="/toc.htm"
onblur='myBlurFunc()'
marginwidth="l" roarginheight="l" scrolling="auto">
<frame name="body"
src="/body.htm"
marginwidth="l" marginheight=" scrolling="auto">
</frameset>
WindOW.OnDraqDrop JavaScript1.2+
Nav4+
ondragdrop="команда"
f Обработчик событий onDragDrop свойства объекта Window вызывается, когда пользо-
пользователь перетаскивает объект, например, файл, в данный экземпляр окна.
Код из листинга 8.550 функционирует таким образом, что, если пользователь попыта-
попытается перетащить в браузер новый файл, в то время когда загружена данная страница,
на экран будет выведено окно подтверждения этой операции. Если пользователь подтвер-
подтвердит выполнение операции, будет загружена страница. Если пользователь отменит опера-
операцию, страница загружаться не будет.
Листинг 8.550. Пример использования события onDragDrop
<html>
<body ondragdrop=
1 return(confirm("Вы уверены, что хотите продолжить?")) '>
Попытайтесь перетащить элемент на эту страницу.
</body>
</html>
window.onError ^Fli4 J^f
Nav3+, IE3+, Opera3+
onerror="команда"
Обработчик событий опЕггог объекта Window вызывается при возникновении ошибки во
время загрузки страницы. Его можно использовать для осуществления повторной загрузки
страницы с помощью метода reload() объекта Location.
В листинге 8.551 приведен пример использования обработчика событий опЕггог в дес-
дескрипторе <body>. Если при загрузке страницы происходит ошибка, на экран выводит-
выводится окно предупреждения.
Листинг 8.551. Пример использования обработчика событий опЕггог
<body onerror=
'alert("Ошибка: При загрузке этой страницы возникла ошибка.")'>
windOW.onFoCUS JavaScript1.0+, JScriptlO+
Nav2+, IE3+, Opera3+
onfocus="команда"
/С-О Часть III. Справочник по JavaScript
# Обработчик событий onFocus объекта Window вызывается при получении данным окном
фокуса. При использовании этого обработчика событий следует быть особенно осторож-
осторожным, поскольку в результате применения обработчика событий onBlur или метода blurQ
существует опасность попасть в бесконечный цикл. Обратите внимание на то, что когда
этот обработчик события вызывается внутри дескриптора <body>, он подменяется в слу-
случае, если в дескрипторе <frame> используется этот же обработчик.
ПРИМЕЧАНИЕ
Некоторые браузеры Navigator 3 не полностью поддерживают этот
обработчик событий при его использовании е дескрипторе <frameset>.
В листинге 8.552 на странице находится набор фреймов, включающий два фрейма. В дес-
крипторе первого фрейма, toe, указан обработчик событий onFocus. При получении этом
фреймом фокуса вызывается функция myFocusFunc() (не показана).
Листинг 8.552. Пример использования события onFocus
<frameset cols=50,*">
<frame name="toc"
src="/toc.htm"
onfocus='nyFocusFunc()'
marginwidth="l" marginheight="l" scrolling="auto">
<frame name="body"
src="/body.htm"
marginwidth="l" marginheight=" scrolling="auto">
</frameset>
WJndow.OnLoad JavaScript1.O+ JScript1.O+
Nav2+, IE3+, Opera3+
onload="команда"
Обработчик событий onLoad объекта Window вызывается по завершении загрузки стра-
страницы в данный экземпляр окна.
ПРИМЕЧАНИЕ
Обработчик событий onLoad в дескрипторе <body> документе, кото-
который загружается во фрейм, будет вызываться перед соответствующим обработчиком
событий, указанным е дескрипторе <fremeset> документа.
В листинге 8.553 при окончании загрузки страницы на экран выводится окно предуп-
предупреждения.
Листинг 8.553. Пример использования события onLoad
<body onload='alert("Документ полностью загружен.")'>
Window.onMove JavaScript1.2+
Nav4+
onmove="команда"
& Обработчик событий onMove объекта Window вызывается при перемещении окна. Указан-
Указанное событие происходит как при перемещении окна пользователем, так и при переме-
перемещении окна сценарием.
В листинге 8.554 при перемещении окна на экран выводится окно предупреждения.
Листинг 8.554. Пример использования события onMove для вывода на экран окна
предупреждения.
<body onmove='alert("НЕ перемещайте это окно!")'>
WJndoW.onResize JavaScript!*
Nav4+
oncesize—"команда"
Глава 8. Клиентская стороне I С. I
f Обработчик событий OnResize объекта Window вызывается при изменении размеров окна.
Указанное событие происходит как при изменении размеров окна пользователем, так и
при изменении размеров окна сценарием.
В листинге 8.555 при изменении размеров окна на экран выводится окно предупрежде-
ния.
Листинг 8.555. Пример использования события OnResize для вывода на экран окна
предупреждения
<body onresize='alert("HE изменяйте размеры этого окна!")'>
WindOW.OnUnload JavaScript 1.0+ JScript Ш
Nav2+, 1E3+, Opera3+
onunload="команда"
Обработчик событий onUnload свойства объекта Window вызывается при выгрузке стра-
страницы из окна. Указанное событие происходит, когда пользователь переходит с данной
страницы на другую.
ПРИМЕЧАНИЕ
Обработчик событий onUnload в дескрипторе <body> документа, заг-
загруженного во фрейм, будет вызываться перед соответствующим обработчиком событий,
указанным в дескрипторе <frameset> документа.
В листинге 8.556 при выгрузке страницы из окна на экран выводится окно предупреж-
предупреждения.
Листинг 8.555. Пример использования события onUnLoad
<body onunload='alert("Пожалуйста, не покидайте эту страницу!")'>
windOW.Open() JavaScript1.O+ JScript1.O+
r " Nav2+, 1E3+, ОрегаЗ+
window. open (СЖХ_с!гракицы, имя, параметры)
k Метод ореп() объекта Window создает новый экземпляр окна. Он загружает в новое окно
страницу с адресом иИЬ_стршшцы, учитывая параметры, заданные с помощью аргумента
параметры. Атрибут action дескриптора <form> и атрибут target дескриптора <а> могут
ссылаться на открытое окно по имени имя.
Большинство передаваемых параметров, которые указываются без пробелов и запятых,
включаются и выключаются за счет присваивания, соответственно, значений yes или по.
Кроме того, для включения и выключения параметров можно воспользоваться числами
1 и 0. При этом для работы с определенным параметром в сценарии следует применять
только один из указанных типов значений (yes/no или 1/0). Различные типы параметров
и метод их включения/выключения перечислены в табл. 8.42.
ПРИМЕЧАНИЕ
Если в строке параметров имеется пробел, опции восприниматься не
будут. Убедитесь, что в строке пераметров опции разделены запятыми, а пробелы в
строке отсутствуют.
Таблица 8.42. Параметры, которые могут передаваться при создании нового экземпляра объекта
Window с помощью метода ореп()
Параметр Значение Описание
alwaysLowered yes/no Этот параметр указывает браузеру, что создаваемое окно
должно находится позади остальных окон. Его необходимо
устанавливать в подписанных сценариях, поскольку он
относится к защищенным возможностям. Данный параметр был
реализован в JavaScript 1.2.
728
Часть III. Справочник по JavaScript
Параметр Значение Описание
alwaysRaised yes/no
location
Этот параметр указывает браузеру, что создаваемое окно
должно находится поверх всех остальных окон. Его необходимо
устанавливать в подписанных сценариях, поскольку он
относится к защищенным возможностям. Данный параметр был
реализован в JavaScript 1.2.
dependant yes/no Этот параметр открывает окно в качестве дочернего окна
родительского окна. При закрытии родительского окна
закрывается и дочернее окно. Данный параметр был
реализован в JavaScript 1.2.
directories yes/no Указывает, будет ли в новом окне выводится панель папок,
относящаяся к Navigator 2 и 3.
height количество Устанавливает высоту окна (задана в пикселах).
пикселов Этот параметр, хотя он все еще существует для целей
обратной совместимости, в JavaScript 1.2 был устранен и
заменен параметром innerHeight.
hotkeys yes/no Запрещает использование всех горячих клавиш в окнах без
строки меню, за исключением горячих клавиш, имеющих
отношение к безопасности, и горячей клавиши выхода. Данный
параметр был реализован в JavaScript 1.2.
innerHeight количество Устанавливает высоту документа в окне (задается в пикселах),
пикселов Данный параметр был реализован в JavaScript 1.2.
innerWidth количество Устанавливает ширину документа в окне (задается в пикселах),
пикселов Данный параметр был реализован в JavaScript 1.2.
yes/no
Указывает, будет ли в новом окне выводиться адресная строка.
menubar
resizable
titlebar
yes/no
Указывает, будет ли в новом окне выводиться строка меню.
outerHeight количество Устанавливает высоту документа в окне (задается в пикселах),
пикселов включая панели браузера. Данный параметр был реализован в
JavaScript 1.2.
outerWidth количество Устанавливает ширину документа в окне в пикселах, включая
пикселов панели браузера. Данный параметр был реализован в
JavaScript 1.2.
yes/no
Указывает, можно ли изменять размеры окна.
screenX количество Устанавливает положение окна относительно левого края
пикселов экрана в пикселах. Данный параметр был реализован в
JavaScript 1.2.
screenY количество Устанавливает положение окна относительно верхнего края
пикселов экрана в пикселах. Данный параметр был реализован в
JavaScript 1.2.
scrollbars yes/no Указывает, будут ли в новом окне выводиться полосы
прокрутки.
yes/no Указывает, будет ли в новом окне выводиться строка
заголовка.
toolbar yes/no Указывает, будет ли в новом окне выводиться панель
инструментов.
Глава 8. Клиентская сторона
729
Параметр Значение Описание
width количество Устанавливает ширину окна (задается в пикселах).
пикселов Этот параметр, хотя он все еще существует для обратной
совместимости, в JavaScript 1.2 был удален и заменен
параметром innerWidth.
z-lock yes/no Указывает, что при активизации окна оно не должно находится
поверх всех остальных окон. Данный параметр был реализован
в JavaScript 1.2.
ПРИМЕЧАНИЕ!
Существует возможность открывать окне, которые не будут находиться
на физическом экране. Однако эта возможность относится к защищенным и может
быть реализована только в подписанных сценариях.
Код из листинга 8.557 определяет на странице кнопку, при щелчке на которой откры-
открывается новое окно. Как видно из строки создания окна, для задания вида окна могут
передаваться различные параметры.
Листинг 8.557. Использование метода ореп() для открытия нового окна
<html>
<script language="JavaScript" type="text/javascript">
// Объявить функцию openWin().
function openwin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window,
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ' , titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no';
var myFeatures = myBars + ',' + myOptions;
var myReadme = "Добро пожаловать в Pure JavaScript!\n" +
\n +
'Сюда вы можете ввести свой текст.'
// Открыть окно. Дать экземпляру окна имя newWin, a
// документу в окне — имя myDoc.
var newWin = open (' ', 'myDoc', myFeatures);
newWin.document.writeln('<form>');
newWin.document.writeln('<table cellspacing=" cellpadding="
border="l">' ) ;
newWin.document.writeln('<tr valign="top" bgcolor="#000099"xtd>');
newWin.document.writeln('<font size="-l" color="#ffffff"Xb>");
newWin.document.writeln('Snbsp; Readme</bx/font>');
newWin.document.writeln ('</tdx/tr>') ;
newWin . document.writeln ('<tr valign="top"Xtd>') ;
newWin .document .writeln ('<textarea cols=5" rows=" wrap="soft">' ) -"
newWin.document.writeln(myReadme + '</textarea>'>;
newWin. document, writeln ('</tdx/tr>') ;
newWin.document.writeln('<tr valign="bottom" align="right"');
newWin.document.writeln(' bqcolor="#cOcOcO"Xtd>' ) г
newWin.document.writeln('<input type="button" уа1ие=акрыть"');
newWin.document.writeln(' onclick="window.close()">');
newWin.document.writeln('</tdX/tr>') ;
newWin.document.writeln( '</tableX/form>') ;
// Закрыть поток, направленный в документ,
// и переместить окно на передний план.
newWin.document.close();
newWin.focus();
// —>
</script>
Часть III. Справочник по JavaScript
<body>
<form>
<Ь>Для открытия нового окна щелкните на этой кнопке: </Ь>
<input type="button" value="Открыть" onclick='openWin()'>
</form>
</body>
</html>
Window.opener iavaScript1.1+77ScriPt1.0+
r Nav3+, IE3+, Opera3+
window.opener
window.opener.метод
window.opener.свойство
Свойство opener объекта Window соответствует окну, открывающему данное окно. Свой-
Свойство opener дочернего окна возвращает родительское окно. С помощью этого свойства
можно вызывать методы и использовать свойства окна, открывшего данное окно. Кро-
Кроме того, значение этого свойства можно устанавливать в сценарии, что позволяет бра-
браузеру очищать ссылки на родительское окно при его закрытии перед закрытием дочер-
дочернего окна. В большинстве браузеров существует ограничение на количество одновременно
открытых окон, а за счет очистки ссылок на уже закрытые окна можно получить воз-
возможность открыть большее количество окно. Это реализуется путем установки значения
свойства opener равным null.
Код из листинга 8.558 определяет на странице кнопку, при щелчке на которой откры-
открывается второе окно. Во втором окне находится кнопка, которая закрывает родительское
окно за счет использования свойства opener. После вызова метода close() родительского
окна для очистки ссылки на него значение свойства opener устанавливается равным null.
Листинг 8.558. Использование свойства opener для получения доступа к
родительскому окну
<html>
<head>
<script language^"JavaScript" type="text/javascript">
// Объявить функцию openWin().
function openwin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window,
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no';
var myFeatures = myBars + ',' + myOptions;
var myReadme = "Добро пожаловать в Pure JavaScript!\n" +
II ь l.H I
' Сюда вы можете ввести свой текст.'
// Открыть окно. Дать экземпляру окна имя newWin, a
// документу в окне — имя myDoc.
var newWin = open('', 'myDoc', myFeatures);
newWin.document.writeln('<form>');
newWin.document.writeln('<table cellspacing="O" cellpadding="O"
border="l">');
newWin.document.writeln('<tr valign="top" bgcolor="#000099"xtd>');
newWin.document.writeln('<font size="-l" color="#ffffff"Xb>");
newWin.document.writeln('snbsp;Snbsp;Readme</bX/font>');
newWin.document.writeln('</tdX/tr>' ) ;
newWin.document.writeln('<tr valign="top"Xtd>');
newWin. document.writeln ('<textarea cols=5" rows=" wrap="soft">') ;
newWin.document.writeln(myReadme + '</textarea>');
newWin.document.writeln ( '</tdX/tr>') ;
newWin.document.writeln('<tr valign="bottom" align="right" ') ;
newWin.document.writeln('bgcolor="#cOcOcO"Xtd>');
Глава 8. Клиентская стороне / О I
/ / Закрыть окно, открывшее новое окно, и очистить ссылку
newwin.document.writeln('<input type="button" уа1ие=акрыть"');
var myJS = "window.opener.close ()/window.opener=null"
newWin.document.writeln('onclick="' + myJS + '">');
newWin.document.writeln ('</tdX/tr>') ;
newWin. document, writeln ('</tablex/form>') ;
// Закрыть поток, направленный в документ,
// и переместить окно на передний план.
newWin.document.close();
newWin.focus();
}
// -->
</script>
</head>
<body>
<form>
<Ь>Для открытия нового окна щелкните на этой кнопке:</Ь>
<input type="button" value="Открыть" onclick='openWin()'>
</form>
</body>
</html>
window.outerHeight JavaScripti.2+
э Nav4+
wxndow.outerHeight
f Свойство outerHeight объекта Window определяет высоту окна браузера (задается в пик-
пикселах). Эта величина включает все панели инструментов и другие элементы самого окна.
Код из листинга 8.559 определяет на странице кнопку, при щелчке на которой откры-
открывается второе окно меньших размеров. В новом окне выводится значение его свойства
outerHeight.
Листинг 8.559. Использование свойства outerHeight
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<!--
// Объявить функцию, которая будет открывать новое окно
// меньших размеров.
function openwinО{
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window.
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ',titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no";
var myFeatures = myBars + ' , ' + myOptions;
// Открыть окно. Дать экземпляру окна имя newWin, a
// документу в окне - имя myDoc.
var newWin = open('', 'myDoc', myFeatures);
// Вывести в окне значения его высоты и ширины.
newWin.document.writeln('<Ь4>Свойства этого окна</Ь4>');
newWin.document.writeln('innerHeight: ' +newWin.innerHeight+'<br>');
newWin.document.writeln('innerWidth: '+newWin.innerWidth + '<br>');
newWin.document.writeln('outerHeight: ' + newWin.outerHeight + '<br>');
newWin.document.writeln('outerWidth: '+newWin.outerWidth + '<br>');
newWin.document.writeln('<form>');
newWin.document.writeln('<input type="button" уа1че='3акркть"');
newWin.document.writeln(• onclick="window.close()">');
newWin.document.writeln('</form>');
// Закрыть поток, направленный в документ.
newWin.document.close();
}
// —>
</script>
732
Часть III. Справочник по JevaScript
</head>
<body>
<form>
<input fcype="button" value="OTKpbKTb" onclick="openwin()
</form>
</body>
</html>
window.outerWidth ^
window.outerWidth
Свойство outerWidth объекта Window определяет ширину окна браузера (задается в пик-
пикселах). Эта величина включает все панели инструментов и другие элементы самого окна.
Код из листинга 8.560 определяет на странице кнопку, при щелчке на которой откры-
вается второе окно меньших размеров. В новом окне выводится значение его свойства
outerWidth.
Листинг 8.560. Использование свойства outerWidth
<htrnl>
<head>
<script language="JavaScriptl.2" type="text/javascript">
// Объявить функцию, которая будет открывать новое, меньшее окно,
function openwin(){
// Создать переменные, в которых будут храниться различные опции,
// устанавливаемые при создании нового экземпляра объекта Window.
var myBars = 'directories=no,location=no,menubar=no,status=no';
myBars += ",titlebar=no,toolbar=no';
var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no';
var myFeatures = myBars + ',' + myOptions;
// Открыть окно. Присвоить экземпляру окна имя newWin,
// а документу в окне — myDoc.
var newWin = open (' ', 'myDoc', myFeatures) ;
// Вывести в окне значения его высоты и ширины.
newWin.document.writeln('<Ь4>Свойства этого окна</Ь4>');
newWin.document.writeln('innerHeight: ' +newWin.innerHeight+ '<br>');
newWin. document, wri teln ('innerWidth: '+ newWin^. innerWidth + '<br>');
newWin.document.writeln('outerHeight: ' + newWin.outerHeight + '<br>');
newWin.document.writeln('outerWidth: '+newWin.outerWidth + '<br>');
newWin.document.writeln('<form>');
newWin.document.writeln('<input type="button" уа1ие=акрыть"');
newwin.document.writeln(' onclick="window.close()">');
newWin.document.writeln('</form>');
// Закрыть поток, направленный в документ.
newWin.document.close();
}
// -->
</script>
</head>
<body>
<form>
<input type="button" value="OTKpHTb" onclick="openwin ()">
</form>
</body>
</html>
window.pageXOffset ~ JavaScriPti.2+. JScript3+
r э Nav4+, IE4+
window.pageXOffset
Свойство pageXOffset объекта Window отражает текущее положение верхнего левого угла
документа в окне, отсчитываемое в горизонтальном направлении. В окне, в котором от-
отсутствуют все панели, это свойство можно использовать при перемещении окна с по-
Глава 8. Клиентская сторона 733
мощью метода moveTo(). Это делается перед выполнением самого перемещения для оп-
определения того, нужно ли перемешать окно. Кроме того, свойство можно использовать
при применении метода scrollTo(), поскольку оно возвращает текущее положение ви-
видимой части документа по отношению ко всей странице.
Код из листинга 8.561 на странице определяет кнопку, при щелчке на которой на эк-
экран выводятся координаты х и у окна.
Листинг 8.561. Использование свойства pageXoffSet для определения текущего
положения окна
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
// Объявить функцию, которая будет выводить на экран окно
// предупреждения, содержащее текущие координаты окна,
function showLocation(){
// Сохранить положение окна с помощью переменных.
var х = self.pageXOffset;
var у = self .pageYOff set
// Составить строки для вывода на экран.
var currX = "Координата X: " + х + "\п";
var currY = "Координата Y: " + у;
// Вывести координаты на экран.
window.alert(currX + currY);
}
// ~ >
</script>
</head>
<body>
<form>
<input type="button" уа1ие="Показать положение"
onclick="showLocation ()">
</form>
</body>
</html>
window. pageYOff set Javascripti.2+, jscriPt3+
r Nav4+, IE4+
window.pageYOffset
Ъ Свойство pageYOffset объекта Window отражает текущее положение верхнего левого угла
документа в окне в вертикальном направлении. В окне, в котором полностью отсутствуют
панели, это свойство можно использовать при перемещении окна с помощью метода
uioveTo() перед выполнением собственно перемещения для определения того, нужно ли
перемещать окно. Кроме того, его можно использовать при применении метода scrollTo(),
поскольку оно возвращает текущее положение видимой части документа по отношению
ко всей странице.
Код из листинга 8.562 определяет на странице кнопку, при щелчке па которой на эк-
экран выводятся координаты х и у окна.
Листинг 8.562. Использование свойства pageYOffset для определения текущего
положения окна
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Объявить функцию, которая будет выводить на экран окно
// предупреждения, содержащее текущие координаты окна,
function showLocation(){
// Записать положение окна в переменные.
var х = self.pageXOffset;
Часть III. Справочник по JavaScript
var у = self.pageYOffset
// Составить строки для вывода на экран.
var currX = "Координата X: " + х + "\п";
var currY = "Координата Y: " + у;
// Вывести координаты на экран.
window.alert(currX + currY);
}
// —>
</script>
</head>
<body>
<form>
<input type="button" value="Показать положение"
onclick="showLocation()">
</form>
</body>
</html>
Window.parent JavaScript1.O+, JScripti.O
r Nav2+, IE3+, Opera3+
window.parent.parent[число]
window.parent.имя_фрейма
& Свойство parent объекта Window содержит ссылку на родительское окно загруженных
фреймов. В случае, когда во фрейм А загружена страница с набором фреймов А. 1 и А.2,
родительским окном фреймов AJ и А.2 будет фрейм А, а родительским окном фрейма
А — окно верхнего уровня.
Доступ ко фреймам одного уровня можно лолучить либо с помощью массива frames и
индекса требуемого фрейма, либо с помощью непосредственной ссылки на фрейм по его
имени, которое присвоено в атрибуте паше дескриптора <frame>.
j В листинге 8.563 приведен пример получения доступа к родительскому окну третьего
фрейма на странице.
Листинг 8.563. Использование свойства parent для получения доступа ко фрейму.
var myFrameReference = myWin.parent.frames[2];
window.personalbar JavaScriPti.2+
r Nav4+
window.personalbar.свойство
Свойство personalbar объекта Window само по себе является, в некоторой степени, объек-
объектом. Оно используется для получения доступа к своему свойству visible, которое опре-
определяет, отображается ли на экране персональная панель.
ПРИМЕЧАНИЕ
На момент написения данной книги свойство personalbar содержало
только одно подсвойство: visible.
yj Код из листинга 8.564 определяет, выведены ли на экран некоторые из панелей брау-
^ зера. В приведенном примере для определения состояния персональной панели исполь-
используется свойство visible.
Листинг 8.564. Использование свойства visible свойства personalbar
<script language="JavaScript" type="tejtt/3avascript">
<! —
// Вывести на страницу состояние панели браузера. Если
соответствующее значение равно true,
// панель выведена на экран.
document .writeln ('<пЗ>Сос!гояние панелей браузера</пЗ>')
document.writeln('Строка меню: ' + window.menubar.visible + '<br>');
document.writeln('Панель инструментов: '
+ window.toolbar.visible + '<br>');
Глава 8. Клиентская сторона / О о
document.writeln('Адресная строка: '
+ window.locationbar.visible + '<br>');
document.writeln('Личная пааель: '
+ window.personalbar.visible + '<br>');
document.writeln('Полосы прокрутки: '
+ window.scrollbars.visible + '<br>');
document.writeln('Строка состояния: '
+ window.statusbar.visible + '<br>');
// Закрыть поток, направленный в документ,
document.close();
// —>
</script>
window.personalbar.visible JavaScripti.2+
r Nav4+
window.personalbar.visible
f Подсвойство visible свойства personalbar объекта Window используется для определения
того, отображается ли на экране пользователя персональная панель. Если панель отобра-
отображается, подсвойство возвращает значение true, в противном случае возвращается зна-
значение false.
Код из листинга 8.565 определяет, отображается ли на экране персональная панель бра-
браузера. В приведенном примере для определения состояния персональной панели исполь-
используется свойство visible.
Листинг 8.565. Использоввние свойства visible свойства locationbar
<script language="JavaScript" type="text/javascript">
<!--
// Вывести на страницу состояние панели браузера.
// Если соответствующее значение равно true,
// панель отображается на экране.
document.writeln('<пЗ>Состояние панелей 6paysepa</h3>*)
document.writeln('Строка меню: ' + window.menubar.visible + '<br>');
document.writeln('Панель инструментов: '
+ window.toolbar.visible + '<br>');
document.writeln('Адресная строка: '
+ window.locationbar.visible + '<br>');
document.writeln('Личная панель: '
+ window.personalbar.visible + '<br>');
document.writeln('Полосы прокрутки: '
+ window.scrollbars.visible + '<br>');
document.writeln{'Строка состояния: '
+ window.statusbar.visible + '<br>');
// Закрыть поток, направленный в документ,
document.close();
// —>
</script>
WindOW.print() JavaScript 1.2+, Script 3.0+
window.print()
k Метод print() объекта Window имитирует щелчок пользователем на кнопке Print (Печать)
браузера. Он указывает браузеру на то, что следует открыть диалоговое окно печати, ко-
которое можно использовать для распечатки содержимого текущей страницы.
Код из листинга 8.566 определяет на странице кнопку. При щелчке на кнопке на экра-
экране отображается диалоговое окно печати, которое дает возможность пользователю распе-
распечатать содержимое текущей страницы.
Листинг 8.566. Использование метода printO Для распечатки текущей страницы
<html>
<body>
736
Часть III. Справочник по JavaScript
<form>
<input
</form>
</body>
</html>
type="button" value="ne4aTb" onclick="window.print()">
JavaScript1.O+, JScripti.O
Nav2+, IE3+. Opera3+
window, prompt ()
window.prompt(строка!, агрока2)
Метод prompt() объекта Window выводит на экран диалоговое окно запроса. Передавае-
Передаваемое методу значение, cmpoml, выводится в диалоговом окне, а значение строка2 на-
находится в текстовом поле диалогового окна. Метод возвращает значение, введенное в
текстовое поле диалогового окна.
В листинге 8.567 при загрузке сценария на экран выводится диалоговое окно запроса
пароля. Если введен верный пароль, загрузка страницы завершается. Результат выполне-
выполнения приведенного сценария показан на рис. 8.6.
Листинг 8.567. использование метода promptl) для вывода на экрен окна запроса.
<script language="JavaScript" type="text/javascript">
// Запрашивать пароль до тех пор, пока он не будет введен правильно,
while(prompt('Введите ваш пароль', 'СЮДА') != 'admin'){
alert('Это неправильный пароль, пожалуйста, попытайтесь ввести
** пароль еще раз ') ;
}
// Эта строка выполняется только при вводе пароля
document.write('Вы ввели верный пароль!');
/
'admin'.
</script>
Рисунок 8.6.
Окно предупреждения,
созданное с помощью
метода Window.protnpt()
[JavaScript Application!
Введите saw пароль
JavaScript1.2+, JScript3.0+
Nav4+, IE4+
window.releaseEvents()
window. releaseEvents (собъюие)
window. releaseEvents (событие! | собаагие2 | событие!!)
. Метод releaseEventsO объекта Window освобождает все ранее перехваченные события ука-
указанного типа, которые могли перехватываться с помошью метода Window.captureEvents().
Перехватывать можно события следующих типов:
Event
Event
Event
Event
Event
Event
Event
Event
Event
Event
Event
Event
.ABORT
.BLUR
.CHANGE
.CLICK
.DBLCLICK
.DRAGDROP
.ERROR
.FOCUS
.KEYDOWN
.KEYPRESS
.KEYUP
.LOAD
• Event.
• Event.
• Event.
• Event.
• Event.
• Event.
• Event.
• Event.
• Event.
• Event.
• Event.
MOUSEDOWN
MOUSEMOVE
MOUSEOUOUT
MOUSEOVER
MOUSEUP
MOVE
RESET
RESIZE
SELECT
SUBMIT
UNLOAD
Глава 8. Клиентская сторона 73/
После перехвата события можно указать функцию, которая будет выполнять обработку
этого события вместо стандартного обработчика. Для освобождения события после его
перехвата используется метод re!easeEvents().
Код из листинга 8.568 определяет на странице текстовое поле и кнопку. В дескрипторе
<head> документа указана функция, которая будет выполнять обработку всех событий
onCiick окна. Для этого необходимо, чтобы метод captureEvents() перехватывал все со-
события типа Event.CLICK. При выполнении щелчка на самой странице увеличивается зна-
значение счетчика, который находится в текстовом поле.
При щелчке на кнопке вызывается обработчик событий onMouseDown, а событие
EventCLICK освобождается и при выполнении щелчка на странице значение счетчика
больше не увеличивается.
Листинг 8.568. Освобождение событий с помощью метода Window.releaseEventsO
<html>
<head>
<script language="JavaScriptl.2" type="text/javasci:ipt">
<! —
// Объявить счетчик количества щелчков.
var counter = О;
// Указать браузеру перехватывать ВСЕ события CLICK
// на странице и объявить функцию обработки щелчков,
window.captureEvents(Event.CLICK);
window.onclick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий CLICK,
function myClickHandler(e){
// Передавать все события событию onCiick текстового поля.
window.document.myForm.myText.handleEvent(e);
}
// Эта функция вызывается обработчиком onCiick текстового поля.
// Она выводит на экран количество щелчков.
function changeTextf){
document.myForm.myText.value = counter++;
}
// Прекращает перехват событий,
function releaseClick() {
window.releaseEvents(Event.CLICK);
}
// —>
</script>
</head>
<body>
<form name="myForm">
<input
type="text" size=" values'" name="myText" onclick= ' changeText() '>
<input type="button" value="Прекратить перехват событий"
onmousedown='releaseClick()'>
</form>
</body>
</html>
WindOW.resizeByO JavaScriPt1.2+.^Script3.O+
window.resizeBy(висло_по_горизон!гали, число по_вер"гикали)
s| Метод resizeBy() объекта Window изменяет размеры указанного окна на переданное ме-
методу количество пикселов. Как видно из описания синтаксиса, первое передаваемое ме-
методу числовое значение соответствует количеству пикселов, на которое необходимо из-
изменить размер окна по горизонтали, а второе числовое значение — количеству пикселов,
на которое необходимо изменить размер окна по вертикали.
/db Часть III. Справочник по JavaScript
Если оба аргумента метода положительные числа, размеры окна увеличиваются. Отрица-
Отрицательные значения приводят к уменьшению размеров окна.
Код из листинга 8.569 определяет на странице четыре кнопки. Две кнопки предназначе-
предназначены для изменения высоты окна и две — для изменения ширины. При щелчке на кноп-
кнопках размеры окна изменяются на 10 пикселов.
Листинг 8.569. Использование метода resizeByO для изменения размеров окна
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Объявить функцию, которая будет изменять размеры окна,
function resizeWin(dir, dist){
// Объявить переменные, в которых будут храниться величины,
// определяющие изменение размеров.
var myVert;
var myHorz;
/ / Определить тип изменения размеров.
if(dir == "верт"){
myHorz = 0;
myVert = dist;
} else{
myHorz = dist;
myVert = 0 ;
}
// Изменить размеры окна.
window.resizeBy(myHorz, myVert);
}
// —>
</script>
</head>
<body>
<form>
<table border=0>
<tr>
<td colspan=">
<input type="button" value="Расширить вниз"
onclick="resizeWin('Bepi',10)">
</td>
</tr>
<tr>
<td>
<input type="button" value="CysHib справа"
onclick="resizeWin('гор',-10)">
</td>
<td>
<input type="button" value="Расширить справа"
onclick="resizeWin('гор',10)">
</td>
</tr>
<tr>
<td colspan=">
<input type="button" value="Cy3MTb снизу"
onclick="resizeWin('верт1,-10)">
</td>
</tr>
</table>
</form>
</body>
</html>
Глава 8. Клиентская сторона / ij У
JavaScript1.2+ JScriptt 0+
Nav4+, IE4+
window. resizeTo (значение_ширины, зяачвние^_высоты)
Метод resizeToO объекта Window изменяет размеры указанного окна до переданных ме-
методу размеров. Как видно из описания синтаксиса, первое передаваемое методу число-
числовое значение соответствует ширине окна, а второе — высоте окна.
| Код из листинга 8.570 определяет два текстовых поля и кнопку. Если пользователь вво-
дит целое число в каждое из полей и щелкает на кнопке, размеры окна изменяются до
введенных значений.
Листинг 8.57Q. Использование метода resizeToO для изменения размеров окна
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
// Объявить функцию, которая будет изменять размеры окна,
function resizeWin(form){
// Объявить переменные, в которых будут храниться иовые размеры.
var myWidth = form.width.value;
var myHeight = form.height.value;
// Изменить размеры окна.
window.resizeTo(myWidth, myHeight);
}
// — >
</script>
</head>
<body>
<form>
<Ь>Новая ширина:</b>
<input type="text" name="width"Xbr>
<Ь>Новая высота:</b>
<input type="text" name="height"Xbr>
<input type="button" уа1ие="Иэменить размеры окна"
onclick="resizeWin(this.form)"></td>
</form>
</body>
</html>
Window.rOUteEvent() JavaScript1.2+ JScript3 0+
w Nav4+, IE4+
window.routeEvent{событие)
f Метод routeEvent() перенаправляет все ранее перехваченные события их стандартным
обработчикам. Перехватывать можно события следующих типов:
• Event.ABORT • Event.MOUSEDOWN
• Event.BLUR • Event.MOUSEMOVE
• Event.CHANGE • Event.MOUSEOUT
• Event.CLICK • Event.MOUSEOVER
• Event.DBLCLICK • Event.MOUSEUP
• Event.DRAGDROP • Event.MOVE
• Event.ERROR • Event.RESET
• Event.FOCUS • Event.RESIZE
e Event.KEYDOWN • Event.SELECT
• Event.KEYPRESS • Event.SUBMIT
• Event.KEYUP • Event.UNLOAD
• Event.LOAD
740 Часть III. Справочник по JavaScript
После перехвата события с помощью метода Window.captureEvents() можно указать фун-
функцию, которая будет выполнять обработку этого события вместо стандартного обработ-
обработчика. Для освобождения события после его перехвата используется метод releaseEvents(),
а для передачи перехваченных событий их стандартным обработчикам — метод
routeEvent().
Код из листинга 8.571 определяет на странице текстовое поле и ссылку. В дескрипторе
<head> документа указана функция, которая будет выполнять обработку всех событий
on Click окна. Для этого необходимо, чтобы метод captureEvents() перехватывал все со-
события типа Event.CLICK. При выполнении щелчка на самой странице увеличивается зна-
значение счетчика, который находится в текстовом поле.
При щелчке на ссылке вызывается обработчик событий onMouseDown, а событие
Event.CLICK перенаправляется стандартному обработчику и при выполнении щелчка на
странице значение счетчика больше не увеличивается.
Листинг 8.571. Перенаправление событий с помощью метода Window.routeEventO
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Определить счетчик количества щелчков.
var counter = 0 ;
// Указать браузеру перехватывать ВСЕ события СЫСК
// на странице и объявить функцию обработки щелчков,
window.captureEvents(Event.CLICK);
window.onClick = myClickHandler;
// Объявить функцию myClickHandler для обработки событий CLICK.
function myClickHandler(e){
// Передавать все события событию onClick текстового поля,
window.document.myForm.myText.handleEvent(e) ;
}
// Эта функция вызывается обработчиком onClick текстового поля.
// Она выводит на экран количество щелчков,
function changeText(){
document.myForm.myText.value = counter++;
}
// Прекращает перехват событий,
function releaseClick(){
window.routeEvent(Event.CLICK);
}
// -->
</script>
</head>
<body>
<form name="myForm">
<input type="text" size=" value="" name="myText"
onclick='changeText()'>
<a href="http://www.purejavascript.com"
onmousedown='window.routeEvent(Event.CLICK)">Нажми ыеня!</а>
</form>
</body>
</html>
WindOW.SCreenX JavaScripts.IScript3.0+
Nav4+, IE4+
window.screenX
3& Свойство screenX объекта Window используется для установки координаты х левого края
• окна. В браузерах Netscape для применения данного свойства требуется уровень приви-
привилегий XJniversalBrowserWrite.
Глава 8. Клиентская сторона
741
В листинге 8.572 на экран выводится окно предупреждения, в котором содержится зна-
значение свойства screenX.
Листинг 8.572. Определение значения свойства screenX
<html>
<body>
<script type="text/javascript" language="JavaScriptl.2">
<!--
alert(window.screenX)
</script>
</body>
</html>
WindOW.SCreenY JavaScript1.2+ JScripU:Л+
Nav4+, IE4+
window.screenY
\k Свойство screenY объекта Window используется для установки координаты у верхнего края
окна. В браузерах Netscape для применения данного свойства требуется уровень приви-
привилегий UniversalBrowserWrite.
В листинге 8.573 на экран выводится окно предупреждения, в котором содержится зна-
значение свойства screenY.
Листинг 8.573. Определение значения свойства screenY
<html>
<body>
<script type="text/javascript" language="JavaScriptl.2">
<! —
alert(window.screenY)
II—>
</script>
</body>
</html>
Window.SCroll() JavaScripti.1 JScript3.0
w Nav3, IE3, ОрегаЗ
window, scroll («ислоХ, чиислоУ)
& Метод scroll() объекта Window прокручивает заданное окно до указанной в аргументах
позиции. Как видно из описания синтаксиса, первое передаваемое методу числовое зна-
значение соответствует координате х, до которой необходимо прокрутить окно по горизон-
горизонтали, а второе числовое значение — координате у, до которой необходимо прокрутить
окно по вертикали.Обратите внимание, что в JavaScript 1.2 этот метод был заменен ме-
методами scrollBy() и scrollTo().
Код из листинга 8.574 определяет на странице два текстовых поля и кнопку. Если пользо-
пользователь вводит целое число в каждое из полей и шелкает на кнопке, окно прокручива-
прокручивается до указанного положения.
Листинг 8.574. Использование метода scrollO для прокрутки содержимого окна
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<! —
// Объявить функцию, которая будет выполнять прокрутку окна.
function scrollWin(dir, dist){
// Объявить переменные, в которых будут храниться координаты.
var myVert;
var myHorz;
// Определить тип прокрутки.
if(dir == "верт"){
myHorz = 0;
myVert = dist;
7 4 С. Часть III. Справочник по JavaScript
} else{
myНогz = dist;
myVert = 0;
}
// Прокрутить содержимое окна.
window.scroll(myHorz, myVert);
}
// — >
</script>
</head>
<body>
<form>
<ЬЖоордината X: </b>
<input type="text" name="X"Xbr>
<ЬЖоордин£та Y:</b>
<input type="text" name="Y"><br>
<input type="button" value="Прокрутить содержимое окна"
onclick="scrollWin (this, form) "X/td>
</form>
</body>
</html>
WindOW.SCrollbarS JavaScript1.2+
Nav4+
window, scrollbars. свойство
# Свойство scrollbars объекта Window само по себе является, в некоторой степени, объектом.
Оно используется для получения доступа к своему свойству visible, которое определя-
определяет, отображаются ли на экране полосы прокрутки.
ПРИМЕЧАНИЕ
На момент написания данной книги свойство scrollbars содержало
только одно подсвойство, visible.
Пример использования свойства scrollbars приведен в описании свойства
Window.scrollbar .visible.
window.scrollbars.visible JavaScripti.2+
Nav4+
window.scrollbars.visible
& Подсвойство visible свойства scrollbars объекта Window используется для определения
того, видны ли на экране пользователя полосы прокрутки. Если полосы прокрутки вид-
видны, подсвойство возвращает значение true, в противном случае возвращается значение
false.
t В листинге 8.575 определяется, выведены ли на экран некоторые из панелей браузера. В
' приведенном примере для определения состояния полос прокрутки используется свой-
свойство visible.
Листинг 8.575. Использование свойства visible свойства locationbar
<script language="JavaScript" type="text/javascript">
<! —
// Вывести на страницу состояние панели браузера.
// Если соответствующее значение равно true,
// панель выведена на экран.
document.writeln('<пЗ>Соетояние панелей 6paysepa</h3>')
document.writeln('Строка меню: ' + window.menubar.visible + '<br>');
document.writeln('Панель инструментов: '
+ window.toolbar.visible + '<br>');
document.writeln('Адресная строка: '
+ window.locationbar.visible + '<br>');
Глава 8. Клиентская сторона
743
document.writeln('Личная панель: '
+ window.personalbar.visible + '<br>');
document.writeln('Полосы прокрутки: '
+ window.scrollbars.visible + '<br>');
document.writeln("Строка состояния: '
+ window.statusbar.visible + '<br>');
// Закрыть поток, направленный в документ,
document.close();
// -->
</script>
WindOW.SCrollBy() JavaScript1.2+, JScripUI.0+
window. scrollBy (висло_по_горизон!галн, 1исло_по_вертикали)
Метод scrollByO объекта Window прокручивает заданное окно на указанное в аргумен-
аргументах количество пикселов. Как видно из опиеайия синтаксиса, первое передаваемое ме-
методу числовое значение соответствует количеству пикселов, на которое необходимо про-
прокрутить окно по горизонтали, а второе числовое значение — количеству пикселов, на
которое необходимо прокрутить окно по вертикали.
Если аргументы метода являются положительными числами, окно прокручивается вверх.
Отрицательные значения приводят к прокрутке окна вниз.
j Код из листинга 8.576 определяет на странице четыре кнопки. Каждая из кнопок про-
кручивает содержимое окна в разных направлениях.
Листинг 8.576. Использование метода scrollByO прокрутки содержимого окна
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
<!--
// Объявить функцию, которая будет выполнять прокрутку окна.
function scrollWin(dir, dist){
//Объявить переменные, в которых будут храниться величины прокрутки
var myVert;
var myHorz;
// Определить тип прокрутки,
if(dir == "верт"){
myHorz = О;
myVert = dist;
) else{
myHorz = dist;
myVert = 0;
}
// Прокрутить содержимое окна,
window.scrollBy(myHorz, myVert);
}
// — >
</script>
</head>
<body>
<form>
■ctable border=0>
<tr>
<td colspan=">
<input type="button" value="BHH3"
onclick="scrollWin('верт',10)">
</td>
</tr>
<tr>
<td>
<input type="button" value="Bnebo"
onclick="scrollWin('гор',-10)">
</td>
/44 Часть III. Справочник по JavaScript
<td>
<input type="button" value="BnpaBo"
onclick="scrollWin('гор1,10) ">
</td>
</tr>
<tr>
<td colspan=">
<input type="button" value="BBepx"
onclick="scrollWin('верт1,-10)">
</td>
</tr>
</table>
</form>
</body>
</html>
VVindOW.SCr0llT0() JavaScripti.2^ JScript3 0+
w Nav4+, IE4+
window. scrollTo(e*tCJloX, числоУ)
# Метод scrollTo() объекта Window прокручивает заданное окно до указанной в аргумен-
аргументах позиции. Как видно из описания синтаксиса, первое передаваемое методу числовое
значение соответствует координате х, до которой необходимо пролистать окно по гори-
горизонтали, а второе числовое значение — координате у, до которой необходимо пролис-
пролистать окно по вертикали.
Код из листингов 8.577 определяет на странице два текстовых поля и кнопку. Если
пользователь вводит целое число в каждое из полей и щелкает кнопке, окно прокручи-
прокручивается до указанного положения.
Листинг 8.577. Использование метода scrollToO для прокрутки содержимого окна.
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
// Объявить функцию, которая будет выполнять прокрутку окна,
function scrollWin(form){
// Объявить переменные, в которых будут храниться координаты.
var myX = form.X.value;
var myY = form.Y.value;
// Прокрутить содержимое окна.
window.scrollTo(myX, myY);
}
// —>
</script>
</head>
<body>
<form>
<ЬЖоордината X: </Ь>
<input type="text" name="X"Xbr>
<ЬЖоординта Y:</b>
<input type="text" name="Y"Xbr>
<input type="button" value="Прокрутить содержимое окна"
onclick="scrollWin(this.form)"></td>
</form>
</body>
</html>
windOW.self JavaScript1.0+, JScriptLO
Nav2+, IE3+, ОрегаЗн-
window.self.метод
window.self.свойство
Глава 8. Клиентская сторона 745
# Свойство self объекта Window содержит ссылку на текущее окно. Это позволяет без оши-
ошибок вызывать функции или использовать свойства текущего окна при отображении на
экране нескольких окон.
В листинге 8.578 показан пример закрытия текущего окна с помощью свойства self.
Листинг 8.578. Использование свойства self для получения доступа к текущему окну
<script language="JavaScript" type="text/javascript">
// Определить функцию, которая будет закрывать текущее окно,
function closeWin(){
self.close()
</script>
window. setHotKeys() Javascriptu
' Nav4
window. setHotKeys (boolean)
i| Метод setHotKeys() объекта Window разрешает или запрещает использование горячих
клавиш в окнах без строки меню. Метод принимает булево значение, при этом значе-
значение true разрешает использование горячих клавиш, a false — запрещает.
В листинге 8.579 приведен пример отключения горячих клавиш заданного окна.
Листинг 8.579. Использование метода setHotKeysO
<script type="text/javascript" languages"JavaScriptl.2">
setHotKeys(false)
II —>
</script>
window.setlnterval() JavaScriPti.2+. JScriPt3.o+
" Nav4+, IE4+
window. setlnterval(выражение, миллисекунды)
window.setlnterval(функция, миллисекунды)
window.setlnterval{функция, миллисекунды, aprl, ..., aprN)
h Метод setlnterval() объекта Window устанавливает интервал вызова выражения или фун-
функции, передаваемой методу. Выражение выражение или функция функция вызываются по
истечении временного промежутка, заданного параметром миллисекунды. Как видно из
описания синтаксиса, методу setlnterval() можно передавать аргументы вызываемой функ-
функции. Установленный интервал можно сбросить с помощью метода dearlnterval().
В листинге 8.580 в дескрипторе <head> документа устанавливается интервал, который
используется для вывода в текстовое поле текущего времени. Интервал установлен таким
образом, что он используется только для обновления каждые пять секунд текста в тек-
текстовом поле. На странице, кроме того, находится кнопка, которая позволяет сбросить
установленный интервал.
Листинг 8.580. Установка интервала с помощью метода setlntervaK)
<html>
<head>
<script language="JavaScriptl.2" type="text/javascript">
// Объявить счетчик,
var counter = 1 ;
// Объявить функцию, которая будет обновлять счетчик,
function startCounter(){
document.myForm.myText.value = counter++;
/46 Часть III. Справочник no JavaScript
// Объявить функцию, которая сбросит обновление счетчика,
function stopCounter(){
window.clearlnterval(mylnterval);
}
II установить интервал обновления счетчика каждые 5 секунд,
var mylnterval = window.setlnterval("startCounter()", 5000)
// —>
</script>
</head>
<body onload="startCounter()">
<form name="myForm">
<input type="text" size=" value="" name="myText">
<input type="button" value="C6pocHTb интервал"
onclick="stopCounter() ">
</form>
</body>
</html>
window.setResizable() JavaScripti.2
v/ Nav4
window.setResizable(boolean)
Метод setResizabIe() объекта Window разрешает или запрещает возможность изменения
пользователем размеров окна. Метод принимает булево значение, при этом значение true
разрешает изменение размеров окна, a false — запрещает.
% В листинге 8.581 приведен пример запрета изменения размеров окна.
Листинг 8.581. Использование метода setResizableO.
<script type="text/javascript" language="JavaScriptl.2">
setResizable(false)
II —>
</script>
window. setTimeoutn iavascripti.o+. JScriPti.o+
w Nav2+, IE3+, Opera3+
window.setTimeout(выражение, миллисекунда)
window.setTimeout(функция, миллисекунды)
window.setTimeout(функция, миллисекунды, aprl, ..., aprN)
k Метод setTimeout() объекта Window устанавливает время задержки вызова передаваемо-
передаваемого методу выражения или функции. Выражение выражение или функция функция вызы-
вызываются по истечении времени, заданного параметром миллисекунды. Как видно из опи-
описания синтаксиса, методу setTimeout() можно передавать аргументы вызываемой функции.
Установленный интервал можно сбросить с помощью метода clearTimeont().
Код из листинга 8.582 определяет на странице кнопку и текстовое поле. По умолчанию
время будет выводится в текстовое поле по истечении пяти секунд. Это реализовано за
счет использования метода setTimeout(). При щелчке на кнопке вызывается функция,
которая, в свою очередь, обращается к методу с1еагТйпеои1:(),таким образом предотвра-
предотвращая вывод времени в текстовое поле.
Листинг 8.582. Использование метода setTimeoutU
<html>
<head>
<script language1"JavaScript" type="text/javascript">
<! —
// Объявить функцию, которая будет выводить на экран время.
function showTime(){
myTime = new Date();
myTime = myTime.getHours() + ":" + myTime.getMinutesО + " : " ;
myTime += myTime.getSeconds();
document.myForm.myText.value = myTime;
)
Глава 8. Клиентская сторона IQI
II Объявить функцию, которая предотвращает вывод времени на экран.
function stopTime(){
window.clearTimeout(myTimeout);
}
// Установить время задержки равным 5 секундам.
var myTimeout = window.setTimeout("showTime()", 5000)
// -->
</script>
</head>
<body>
<form name="myForm">
<input type="text" size=" value="" nanie="myText">
<input type="button" value="C6pocMQ!b задержку"
onclick="stopTime()">
</form>
</body>
</html>
window.setZOptions()
window.setZOptions(тип)
Метод setZOptions() объекта Window устанавливает поведение z-порядка заданного окна.
В качестве аргумента метод принимает параметр тип, который указывает тип поведения
окна. Ниже перечислены возможные значения параметра тип. Для установки порядка окна
необходимо иметь уровень привилегий UniversalBrowserWrite.
• alwaysLowered — новое окно создается под другими окнами, независимо от того ак-
активно оно или нет.
• alwaysRaised — новое окно создается над другими окнами, независимо от того активно
оно или нет.
» z-Iock — создается новое окно, которое при его активации не будет находиться по-
поверх других окон.
В листинге 8.583 приведен пример установки поведения z-порядка окна.
Листинг 8.583. Использование метода setZOptionsf)
<script type="text/javascript" language="JavaScriptl.2">
// Установить порядок alwaysLowered.
setZOptions(alwaysLowered)
II—>
</script>
windOW.StatUS JavaScript1.O+ JScript1.O+
Nav2+, IE3+, Opera3+
window.status = строка
k Свойство status объекта Window позволяет задать строку, которая будет выводиться в
строке состояния браузера.Обратите внимание, что в JavaScript 1.1 это свойство было
маркированным. Более подробная информация о модели безопасности и маркированию
данных, используемых в JavaScript, приведена в главе 1.
ПРИМЕЧАНИЕ
При установке значения свойства Window.status необходимо убе-
убедиться в том, что функция возвращает значение true. Это же относится \л к установке
значения этого свойства внутри HTML-двскриптора.
В листинге 8.584 приведен пример задания содержимого строки состояния при переме-
перемещении указателя мыши над ссылкой.
748 Честь III. Справочник по JavaScript
Листинг 8.584, Задание содержимого строки состояния
<а href="http://www.purejavascript.com/book"
onMouseOver="window.status=
'Пожалуйста, посетите нашу онлайновую книгу!'; return true"
onMouseOut="window.status='Документ: Выполнено1 ">Щелкните эдесь!</а>
window, statusbar Javasoipti.2+
Nav4+
window, statusbar.свойство
# Свойство statusbar объекта Window само по себе является, в некоторой степени, объектом.
Оно используется для получения доступа к своему свойству visible, которое определя-
определяет, видна ли на экране строка состояния.
ПРИМЕЧАНИЕ!
На момент написания данной книги свойство statusbar содержало
только одно подсвойство, visible.
Пример использования свойства statusbar приведен в описании свойства
Window.statusbar. visible.
window.statusbar.visible Javasoipti.2+
Nav4+
window.statusbar.visible
t Подсвойство visible свойства statusbar объекта Window используется для определения
того, видна ли на экране пользователя строка состояния. Если строка состояния отобра-
отображается, подсвойство возвращает значение true, в противном случае возвращается зна-
значение false.
В листинге 8.585 определяется, выведены ли на экран некоторые из панелей браузера. В
приведенном примере для определения состояния строки состояния используется свой-
свойство visible.
Листинг 8.585. Использование свойства visible свойства statusbar
<script language="JavaScript" type="text/javascript">
<!--
// Вывести на страницу состояние панели браузера.
// Если соответствующее значение равно true,
// панель выведена на экран.
document.writeln('<ЬЗ>Состояние панелей 6paysepa</h3>')
document.writeln('Строка меню: ' + window.menubar.visible + '<br>');
document.writeln('Панель инструментов: '
+ window.toolbar.visible + '<br>');
document.writeln('Адресная строка: '
+ window.locationbar.visible + '<br>');
document.writeln('Личная панель: '
+ window.personalbar.visible + '<br>');
document.writeln('Полосы прокрутки: '
+ window.scrollbars.visible + '<br>');
document.writeln('Строка состояния: '
+ window.statusbar.visible + '<br>');
// Закрыть поток, направленный в документ,
document.close() ;
// —>
</script>
windowTstop(j JawaScript1.2+^JscripejO
window.s top ()
% Метод stop() объекта Window имитирует щелчок на кнопке Stop (Остановить) браузе-
pa. Он прекращает загрузку и визуализацию текущей страницы.
Глава 8. Клиентская сторона / 4 У
Код из листинга 8.586 на странице определяет кнопку и ссьшка на несуществующее изоб-
ражение. Браузер будет выполнять попытки загрузить изображение до истечения време-
времени тайм-аута или до прекращения загрузки. Щелчок на соответствующей кнопке прекра-
прекращает загрузку.
Листинг 8.586. Использование метода stopO для прекращения загрузки страницы
<html>
<body>
<form>
<input type="button" value="Остановить" onclick="window.stop()">
</form>
<table border="l"color= bgcolor="#FF0000">
<tr>
<td>
<img src="http://www.purejavascript.com/images/fake.gif"
width=468 height=60>
</td>
</tr>
</table>
</body>
</html>
VtfindOW.tOOlbar JavaScript!^
Nav4+
window.toolbar.свойство
Свойство toolbar объекта Window само по себе является, в некоторой степени, объек-
объектом. Оно используется для получения доступа к своему свойству visible, которое опре-
определяет, видна ли на экране панель инструментов.
ПРИМЕЧАНИЕ
Не момент написания данной книги свойство toolbar содержало толь-
только одно подсвойство, visible.
Пример использования свойства toolbar приведен в описании свойства
Window, toolbar .visible.
window.toolbar.visible Javascripti.2+
Nav4+
window.toolbar.visible
I Подсвойство visible свойства toolbar объекта Window используется для определения того,
видна ли на экране пользователя панель инструментов. Если панель инструментов вид-
видна, подсвойство возвращает значение true, в противном случае возвращается значение
false.
В листинге 8.587 определяется выведены ли на экран некоторые из панелей браузера. В
приведенном примере для определения состояния панели инструментов используется
свойство visible.
Листинг 8.587. Использование свойства visible свойства toolbar.
<script language="JavaScript" type="text/javascript">
<!--
// Вывести на страницу состояние панели браузера.
// Если соответствующее значение paSHO true,
// панель выведена на экран.
document.writeln('<ЬЗ>Состояние панелей браузера</ЬЗ>')
document.writeln("Строка меню: ' + window.raenubar.visible + '<br>');
document.writeln('Панель инструментов: '
+ window.toolbar.visible + '<br>');
/ 3U Часть III. Справочник по JavaScript
document.writeln('Адресная строка: '
+ window.locationbar.visible + '<br>'|;
document.writeln('Личная панель: '
+ window.personalbar.visible + '<br>');
document.writeln('Полосы прокрутки: '
+ window.scrollbars.visible + '<br>');
document.writeln('Строка состояния: '
+ window.statusbar.visible + '<br>');
// Закрыть поток, направленный в документ,
document.close();
// -->
</script>
il ravaScriptUH~JSaipt1.0
Nav2+, IE3+, Opera3+
window.top.фреймы[число]
window, top. гшя_фрейма
window.top.метод
window.top.свойство
Свойство top объекта Window содержит ссылку на окно высшего уровня браузера лю-
бого загруженного фрейма или страницы. В случае, когда во фрейм А загружена страница
с набором фреймов А.1 и А.2, окном высшего уровня для фреймов АЛ и А.2 будет
окно, в которое загружен фрейм А. Окном высшего уровня для фрейма А будет то же
самое окно.
Как видно из описания синтаксиса, доступ ко фреймам одного уровня можно получить
либо через массив frames и индекс нужного фрейма, либо за счет непосредственной
ссылки на фрейм по его имени, которое присвоено в атрибуте name дескриптора <frame>.
Получить доступ к окну высшего уровня, выполнить его метод или использовать его
свойство можно с текущей страницы и любого фрейма.
Предполагая, что страница в приведенном сценарии находится в наборе фреймов, в
листинге 8.588 приводится пример вызова функции, которая объявлена в окне высше-
высшего уровня.
Листинг 8.588. Использование свойства top для вызова функции окна высшего уровня
<script language="JavaScript" type="text/javascript">
// Вызвать функцию окна высшего уровня.
top.myFunc(myVarl, myVar2);
// —>
</script>
Wind0W.unwatch() JavaScript 1.2+
v/ Nav4+
window.unwatch(свойство)
Метод unwatch() объекта Window используется для прекращения отслеживания измене-
изменений свойства property.
В листинге 8.589 приведен пример использования метода unwatch() для прекращения
отслеживания свойства outerHeight объекта Window после изменения его значения.
Листинг 8.589. Пример использования метода unwatchO объекта Window
<script type="text/javascript" language="JavaScript">
function alertme(id, oldValue, newValue){
document.write ("ID ("+id+") изменилось с " + oldValue + " на ");
document.write(newValue + "<br>");
return newValue;
Глава 8. Клиентская сторона / О I
// Начать отслеживание.
window.watch("outerHeight", alertme);
// Изменить значение.
window.outerHeight = 100;
// Прекратить отслеживание,
window.unwatch("outerHeight");
// — >
</script>
windOW.WatCh() JavaScript 1.2+
w Nav4+
window.watch(свойство)
■ Метод watch() объекта Window используется для установки отслеживания за изменени-
изменениями свойства, указанного с помощью параметра свойство.
В листинге 8.590 приведен пример использования метода watch() для установки отсле-
отслеживания свойства outerHeight объекта Window после изменения его значения.
Листинг 8.590. Пример использования метода watch() объекта Window
<script type="text/javascript" language="JavaScript">
<! —
function alertme(id, oldValue, newValue){
document.write("ID (" + id + ") изменилось с " + oldValue
+ " на ") ;
document.write(newValue + "<br>");
return newValue;
}
// Начать отслеживание.
window.watch("outerHeight", alertme);
// Изменить значение,
window.outerHeight = 100;
// Прекратить отслеживание.
window.unwatch("outerHeight");
// — >
</script>
Window.Window JavaScript1.0+, JScripti 0
Nav2+, IE3+, Opera3+
window.метол
window.свойство
^Свойство window объекта Window содержит ссылку на текущее окно. Это позволяет без
ошибок вызывать функции или использовать свойства текущего окна в случае отобра-
отображения на экране нескольких окон.
В листинге 8.591 показан пример закрытия текущего окна с помощью свойства window.
Листинг 8.591. Использование свойства window для получения доступа к текущему
окну
<script language="JavaScript" type="text/javascript">
<! —
// Объявить функцию, которая будет закрывать текущее окно,
function closeWinO {
window.close()
// -->
</script>
4 Глава 9
Серверная сторона
Настоящая глава содержит подробное описание всех основных составляющих сер
верной части языка JavaScript. Описывается реализация языка, доступная в
Netscape и iPlanet Web Server Enterprise Edition, которая в дальнейшем будет име-
именоваться Enterprise Server (ES). В среде активных серверных страниц (ASP) компа-
компании Microsoft рассматривается реализация языка, доступная через Internet
Information Server (IIS) или Personal Web Server (PWS).
Поскольку компании Microsoft и Netscape используют различные подходы в своих
решшзациях серверного программного обеспечения, следует уточнить поддерживае-
поддерживаемые среды для каждой конкретной реализации. Также необходимо ознакомиться с
главой 5, где содержатся дополнительные сведения, относящиеся к применению
описываемых ре&аизаций программного обеспечения.
Как и в других главах части III, в этой также рассматривается структура языка.
Каждый абзац включает сведения о версии, синтаксисе, описании и примере каж-
каждого элемента языка, отражающего особенности серверной версии.
В главе объекты JavaScript расположены по алфавиту, что позволяет быстро по-
получать доступ к описанию методов, свойств, функций и обработчиков событий для
каждого серверного объекта. Все упомянутые элементы располагаются в алфавитном
порядке после соответствующего родительского объекта с использованием точечной
нотации.
addClientO
addClient (URL)
Функция addClientO является функцией верхнего уровня, которая не связана с каким-
либо основным объектом ядра. Эта функция используется для сохранения значений свой-
свойства объекта client при генерировании динамических ссылок или же в случае примене-
применения функции redirect(). Для функции addClientQ в качестве единственного параметра
используется URL.
В данном примере демонстрируется методика использования функции addClientO, при-
применяемой для динамического конструирования ссылок. В листинге 9.1 ссылка определя-
определяется с помощью свойства объекта project.
Глава 9. Серверная сторона / DvD
Листинг 9.1. Применение функции addClientd при динамическом конструировании
ссылки
<а href='<server>addClient("/myApp/page" + project.pagenum
+ ".html")</server>'>
Пожалуйста, перейдите на следующую страницу</а>
В листинге 9.2 функция addClient() применяется вместе с функцией redirectO- В результате
пользователь направляется по URL-ацресу, который указан в функции addCIient().
Листинг 9.2. Применение функции addClientO в комбинации с функцией redirect!)
<server>
// Проверка на предмет того, является ли используемый
// 6paysep Internet Explorer.
if(request.agent.indexOf("MSIE') != -1){
redirect(addClient("/iepages/index.html"));
// Перенаправление на другу» страницу в случае,
// если тип браузера отличен ош IE.
}else{
redirect(addClient("/defaultpages/index.html"));
}
</server>
addResponseHeader() ES3+
addResponseHeader{ключ, значение)
f Функция addResponseHeader() является функцией верхнего уровня, которая не связа-
связана с каким-либо основным объектом ядра. Эта функция используется для добавления
полей и значений в заголовок HTTP, который пересылается обратно клиенту. Посколь-
Поскольку при пересылке реального заголовка используется массив данных, перед вызовом фун-
функций flush() или redirect() необходимо удостовериться в том, что все поля и значения
установлены соответствующим образом.
ПРИМЕЧАНИЕ
Поскольку в JavaScript механизм времени выполнения выгружает
содержимое выходного буфере после того, как обьем накопленных данных составит 64
Кб, следует убедиться, что функция addResponseHeader() вызывается до наступления
момента выгрузки.
В листинге 9.3 демонстрируется, каким образом можно отправлять обратно браузеру ди-
динамически сформированный внешний исходный файл JavaScript вместе с подходящим
полем и значением заголовка типа содержимого (content-type).
Листинг 9.3. Применение функции addResponseHeader() для установки типа
содержимого файла, отсылаемого обратно браузеру
<server>
// Добавление поля в заголовок
addResponseHeader("content-type", "application/x-javascript");
</server>
Application ASP1+
Основной объект среды ASP
k Объект Application является основным объектом среды ASP. Применяется для разделения
информации между всеми пользователями данного приложения, которое содержит все
файлы .asp наряду со всеми виртуальными каталогами и их подкаталогами. В табл. 9.1
перечислены методы, коллекции и события, связанные с этим объектом.
754
Тип
Коллекция
Событие
Метод
Часть III. Справочник no JavaScript
Таблица 9.1. Методы, коллекции и события объекта Application
Элемент
Contents
StaticObjects
Application_OnEnd
Application_OnStart
Contents. Remove()
Contents. RemoveAII()
Lock()
UnlockO
Описание
Содержит все элементы, добавленные в приложение с
помощью команд сценария.
Содержит все обьекты, добавленные в сеанс с
помощью дескриптора <object>.
Происходит после завершения выполнения приложения.
Происходит перед созданием первого нового сеанса.
Удаляет элемент из коллекции Contents объекта
Application.
Удаляет все элементы из коллекции Contents обьекта
Application.
Препятствует изменению свойств обьекта Application
со стороны других клиентов.
Позволяет другим клиентам обновлять свойства
объекта Application.
В листинге 9.4 демонстрируется определение и вывод версии приложения, реализуемого
пользователями.
Листинг 9.4. Применение объекта Application
<script runat="server" type="text/jscript" language="JScript">
Application("version") = .0"
var appVer = Application("version") ;
Response.Write(appVer);
</script>
Application.Application OnEnd ASP1+
function Application_OnEnd() {
код
Событийная функция Application_OnEml объекта Application вызывается в ситуации, когда
происходит событие Application_OnEnd. Это случается при завершении приложения, что,
в свою очередь, имеет место после вызова события Session_OnEnd.
В листинге 9.5 показывается, каким образом можно добавить строку в конец журналь-
журнального файла для последнего запроса приложения.
Листинг 9,5. Применение события ApplicationJDnEnd
<script runat="server" type="text/jscript" language="JScript">
function Application__OnEnd() {
Response.AppendToLog("Ваше приложение завершило выполнение");
}
</script>
Application. ApplicationOnStart ASP1+
function Application_OnStart() {
код
Событийная функция Application_OnStart объекта Application вызывается в ситуации, когда
происходит событие Application_OnEnd. Это случается при запуске приложения, которое,
в свою очередь, имеет место перед генерацией события Session_OnEnd.
Глава 9. Серверная сторона 755
В листинге 9.6 демонстрируется, каким образом можно добавить строку в конец журналь-
журнального файла при первом запросе приложения.
Листинг 9.6. Применение события Application_OnStart
<script runat="server" type="text/jscript" language="JScript">
function Application_OnStart(){
Response.AppendToLog("Ваше приложение запущено");
</script>
Application. Contents ASP1+
Application.Contents(имя)
i Коллекция Contents объекта Application содержит все элементы, которые были добавле-
добавлены в приложение в результате выполнения команд сценария. Для получения доступа к
определенному элементу требуется указать соответствующий параметр пате.
В листинге 9.7 демонстрируется, каким образом применяется метод Remove() из коллек-
коллекции Contents для удаления элемента myltem, который был добавлен к приложению.
Листинг 9.7. Применение коллекции Contents.
<script runat="server" type="text/jscript" language="JScript">
// Добавление элемента в коллекцию.
Application("myltem") = "Меня Бовут Аллен";
// Удаление элемента.
Application.Contents.Remove("myltem");
</script>
Application.Contents.RemoveQ ASP1+
Application.Contents.Remove(имя)
Application.Contents.Remove(номер)
jfe Метод Remove() из коллекции Contents объекта Application применяется для удаления
^ элемента из коллекции приложения. Для ссылки на этот элемент может использоваться
его имя, передаваемое в параметре имя, или индекс, передаваемый в параметре номер.
j В листинге 9.8 демонстрируется, каким образом воспользоваться методом Remove() из
коллекции Contents для удаления элемента myltem, который был добавлен к приложе-
приложению.
Листинг 9.8. Применение метода Removed
<script runat="server" type="text/jscript" language="JScript">
// Добавление элемента в коллекцию.
Application("myltetn") = "Меня зовут Аллен";
// Удаление элемента.
Application.Contents.Remove("myltem");
</script>
Application.Contents.RemoveAII() ASP1+
Application.Contents.RemoveAll()
k Метод RemoveAll() из коллекции Contents объекта Application применяется для удаления
всех элементов из коллекции приложения.
В листинге 9.9 показано, каким образом можно воспользоваться методом Remove() из
коллекции Contents для удаления всех элементов, добавленных в приложение.
Листинг 9.9. Применение метода RemoveAIIO
<script runat="server" type="text/jscript" language="JScript">
// Добавление двух элементов в коллекцию
Application("myltem") = "Меня зовут Аллен";
Application("yourltem") = "Тебя sosyT Читатель";
756
Часть III. Справочник по JavaScript
// Удаление всех элементов.
Application.Contents.RemoveAll();
</script>
Application. Lock() ASP1+
Application.Lock()
Метод Lock() объекта Application запрещает другим клиентам обновлять какие-либо эле-
элементы, хранящиеся в объекте Application. Для разблокировки объекта необходимо выз-
вызвать метод Unlock(). Сервер выполнит разблокировку либо по завершении обработки стра-
страницы, либо по истечении времени обработки.
В листинге 9.10 перед обновлением элемента счетчика происходит его блокирование. Этот
элемент может применяться для подсчета пользователей, обратившихся к данному при-
приложению.
Листинг 9.10. Применение метода LockO
<script runat="server" type="text/jscript" language="JScript">
// Инициализация счетчика, которая должна выполняться ТОЛЬКО на
// первой странице приложения.
Application("counter") = 0;
// Блокировка приложения перед приращением Значения счетчика.
Application.Lock()
// Приращение значения счетчика.
Application("counter") += 1;
// Отмена блокировки счетчика, что позволяет другим пользователям
// изменять его значение.
Application.Unlock();
</script>
Application.StaticObjects ASP1+
Application.StaticObjects(кия)
Коллекция StaticObjects объекта Application сохраняет все объекты, которые созданы на
данной странице ASP с помощью элементов <object>. Для ссылки используется пара-
параметр имя, который соответствует каждому экземпляру этих элементов.
В листинге 9.11 показано, каким образом на текущей странице ASP захватывается эк-
земпляр элемента myControl.
Листинг 9.11. Применение коллекции StaticObjects
<script runat=°server" type="text/jscript" language="JScript">
Application.StaticObjects("myControl");
</script>
Application.Unlock()
Application.Unlock()
Метод Unlock() объекта Application выполняет разблокирование предварительно заблоки-
заблокированного объекта Application. Для реализации первичной блокировки объекта необходимо
вызвать метод Lock(). Если вызов метода Unlock() оказался неудачным, сервер выпол-
выполнит разблокировку по завершении обработки страницы или по окончании работы.
В листинге 9.12 блокируется элемент счетчика перед его обновлением. Этот элемент мо-
может использоваться для подсчета количества пользователей, которые работают с данным
приложением. После завершения изменения блокировка отменяется, что дает возможность
другим пользователям получать доступ и вносить изменения.
Листинг 9.12. Применение метода Unlock!)
<script runat="server" type="text/jscript" language="JScript">
// Инициализация счетчика, которая должна выполняться ТОЛЬКО на
// первой странице приложения.
Глава 9. Серверная сторона
757
Application("counter") = 0;
// Блокировка приложения перед тем, как счетчик получит приращение.
Application.Lock()
// Приращение значения счетчика.
Application("counter") += 1;
// Разблокировка счетчика, в результате чего другие
// пользователи смогут изменять его значение.
Application.Unlock();
</script>
ASPError
Основной объект среды ASF
§| Объект ASPError является основным объектом среды ASP. Свойства и методы этого
• объекта применяются для выборки информации об ошибках, которые имели место на
данной странице. Этот объект возвращается с помощью метода Server.GetLastError() и
имеет свойства, предназначенные только для чтения. В табл. 9.2 приводится перечень
свойств объекта.
Таблица 9.2. Свойства объекта ASPError
Свойство Описание
ASPCode Возвращает код ошибки, сгенерированный Web-сервером IIS.
ASPDescription Возвращает подробное описание ошибки, имеющей отношение к ASP.
Category Указывает источник ошибки, которая является внутренней для ASP,
может относиться к языку написания сценариев либо быть связанной с
объектом.
Column Указывает позицию в строке в файле .asp, который генерирует ошибку.
Description Возвращает краткое описание ошибки.
File Указывает название файла .asp, обработка которого выполняется в
случае возникновения ошибки.
Line Указывает строку, которая генерирует ошибку.
Number Возвращает код стандартной ошибки СОМ.
Source Возвращает фактический исходный код для строки, которая породила
ошибку.
В листинге 9.13 показывается, каким образом можно записать краткое описание ошиб-
ошибки, выявленной с помощью объекта ASPError.
Листинг 9.13. Применение объекта ASPError
<script runat="server" type="text/jscript" language="JScript">
Response.Write(ASPError.Description);
</script>
ASPError.ASPCode
ASPError.ASPCode
f Свойство ASPCode объекта ASPError включает код ошибки, который генерируется сер-
сервером ITS.
Код из листинга 9.14 сохраняет значение свойства ASPCode.
/ 5 О Часть III. Справочник по JavaScript
Листинг 9.14. Применение свойства ASPCode
<script runat="server" type="text/jscript" language="JScript">
Response.Write(ASPError.ASPCode);
</script>
ASPError.ASPDescription
ASPError.ASPDescription
Свойство ASPDescription объекта ASPError содержит детализированное описание возвра-
возвращаемой ошибки.
B листинге 9.15 выводится значение свойства ASPDescription
Листинг 9.15. Применение свойства ASPDescription
<script runat="server" type="text/jscript" language="JScript">
Response.Write(ASPError.ASPDescription);
</script>
ASPError. Category
ASPError.Category
Свойство Category объекта ASPError указывает, является ли источник ошибки внутренним
для ASP, JScript или для объекта.
В листинге 9.16 выводится значение свойства Category.
Листинг 9.16. Применение свойства Category
<script runat="server" type="text/jscript" language="JScript">
Response.Write(ASPError.Category);
</script>
ASPError.Column
ASPError.Column
Свойство Column объекта ASPError включает позицию в строке файла ASP, в котором
возникла ошибка.
В листинге 9.17 выводится значение свойства Column.
Листинг 9.17. Применение свойства Column
<script runat="server" type="text/jscript" languages"JScript">
Response.Write(ASPError.Column);
</script>
ASPError. Description
ASPError.Description
• Свойство Description объекта ASPError содержит краткое описание ошибки.
В листинге 9.18 выводится значение свойства Description*
Листинг 9.18. Применение свойства Description
<script runat="server" type="text/jscript" languages"JScript">
Response.Write(ASPError.Description),-
</script>
ASPError.File ASP3T
ASPError.File
]i Свойство File объекта ASPError содержит имя файла ASP, который обрабатывался на
момент возникновения ошибки.
Глава 9. Сераврная сторонв / ЬУ
В листинге 9.19 выводится значение свойства Ffle.
Листинг 9.19. Применение свойства File
<script runat="server" type="text/jscript" languages"JScript">
Response.Write(ASPError.File) ;
</script>
ASPError.Line
ASPError.Line
$e& Свойство Line объекта ASPError содержит номер строки, где появилась ошибка,
i /% В листинге 9.20 выводится значение свойства Line.
Листинг 9.20. Применение свойства Line
<script runat="server" type="text/jscript" language="JScript">
Response.Write(ASPError.Line);
</script>
ASPError.Number
ASPError.Number
$j& Свойство Number объекта ASPError содержит стандартный код ошибки COM.
B листинге 9.21 выводится значение свойства Number.
Листинг 9.21. Применение свойства Number
<script runat="server" type="texfc/jscript" language="JScript">
Response.Write(ASPError.Number);
</script>
ASPError.Source
ASPError.Source
f Свойство Source объекта ASPError содержит фактический исходный код (если он дос-
доступен), в котором возникла ошибка.
В листинге 9.22 осуществляется вывод значения свойства Source.
Листинг 9.22. Применение свойства Source
<script runat="server" type="text/jscript" language="JScript">
Response.Write(ASPError.Source);
</script>
b!ob() (функция)
blob {путь,)
S| Данные BLOB представляют собой большие двоичные объекты (binary large objects), кото-
' рые могут сохраняться в базе данных. В результате в базе данных можно хранить различную
информацию, например, изображения, видео- и звуковые файлы.
ПРИМЕЧАНИЕ
Обязательно изучите документацию, связанную с определенной базой
данных, что даст информацию о каких-либо ограничениях по типам данных BLOB.
Функция ЫоЬ() применяется для хранения данных типа BLOB в базе данных. Эта фун-
функция в качестве единственного параметра использует путь к файлу BLOB. Обратите вни-
внимание, что в этом случае применяется не относительное, а абсолютное имя пути.
В листинге 9.23 экземпляр cursor создается для выполнения запроса к базе данных для
нахождения определенной строки. Затем на эту строку переносится фокус, а функция
blob() применяется для присваивания данных столбцу. На заключительном шаге процесса
для фиксации изменения используется метод updateRow().
/ bU Часть III. Справочник по JavaScript
Листинг 9.23. Использование функции ЫоЬ() для вставки данных BLOB в базу
данных
<server>
// Оператор SQL и выполняющий его экземпляр курсора.
var myStatement = 'SELECT * FROM family WHERE pic = null';
var myCursor = database.cursor(royStatement);
// Итерация по возвращаемым строкам,
while(myCursor.next()){
// Назначение 'blank.gif в столбне PIC для возвращаемых строк.
myCursor.pic = blob("/pictures/blank.gif");
myCursor.updateRow("family");
}
// Закрытие курсора и вывод его на страницу
// в случае возникновения ошибок,
var dbError = myCursor.close();
if(dbError) write(myCursor.close());
</server>
blob (объект) ES2+
Основной объект, созданный с применением методов ЫоЬ.ЫоЫшадеО и ЫоЬ.ЫоЬЫпк().
Объект верхнего уровня blob содержит методы, позволяющие сохранять и осуществлять
выборку в базе данных blob-данных Данные BLOB представляют собой большие двоичные
объекты (binary large objects), которые могут храниться в базе данных. Таким образом
можно сохранять в базе данных различную информацию, например, изображения, ви-
видео- и звуковые файлы.
Обязательно изучите документацию по базв данных и уточните, суще-
существуют ли какие-то ограничения, связанные с типами BLOB данных.
Основной объект blob создается при использовании методов этого объекта. В табл. 9.3 пе-
перечислены методы объекта blob вместе с описаниями их функциональных возможностей.
Таблица 9.3. Методы объекта blob
Метод Описание
bloblmageO Выбирает и отображает экземпляр данных BLOB, который хранится в базе
данных.
blobLink() Выбирает и отображает ссылку, которая связана с экземпляром данных
BLOB, хранящихся в базе данных.
unmatch() Устанавливает отслеживание определенного свойства.
watch() Отменяет отслеживание определенного свойства.
Э из листинга 9.24 запрашивает из базы данных определенное изображение, создавая
при выборке данных экземпляр объекта blob. Затем с помощью методов wri(e() и
bloblmageO осуществляется вывод изображения на страницу. Ниже приводится факти-
фактический дескриптор, создаваемый в этом случае:
<IMG ALT= ' 'Click' ' ALIGN=' ' lef t' ' WIDTH=' ' 468 ' ' HEIGHT=' ' 60 ' '
BORDER= ''01' ISMAP=''false''>
Листинг 9.24. Применение метода bloblmageO для форматирования дескриптора <img>
<server>
// Найти изображение, которое необходимо отобразить.
myCursor = myConn.cursor("SELECT path FROM images WHERE img = 1");
Глава Э. Серверная сторона
761
//Вывести на страницу дескриптор <img> со следующим набором атрибутов
write(myCursor.path.bloblmage("gif",
60, 0,
/ / Закрыть курсор.
myCursor.close () ;
</server>
"Click",
false));
"left"
468,
blob.bloblmageQ
cursor, col шгш. bloblmage
ES2+
(fileType, altText, align,
width, height, border, ismap)
\ Метод bloblmageO выбирает и отображает BLOB-изображение, которое хранится в базе
данных. Этот метод на самом деле возвращает код HTML для дескриптора <irog>, ко-
который используется при выводе на экран изображения. Атрибут href дескриптор <img>
ссылается на экземпляр этого изображения в памяти и ие содержит "нормального" URL-
адреса для данного изображения.
Этот метод может использовать до семи параметров, устанавливающих различные атри-
атрибуты дескриптор <img>. Соответствующие атрибуты перечислены в табл. 9.4. Как мини-
минимум, для изображения необходимо указать параметр fileType.
Таблица 9.4. Свойства, устанавливаемые с помощью метода ЫоЫшадеО
Атрибут,
устанавливаемый
с помощью
Параметр параметра
Описание
fileType
нет
Этот параметр не устанавливает какой-либо атрибут. Он
указывает тип отображаемого файла, такой как gif или jpeg.
altText
alt
Эта строка выводится в случае, если браузер не настроен
на отображение изображений или если в указанный период
времени курсор мыши находится поверх изображения.
align
width
height
align
width
height
Может иметь значения LEFT, RIGHT или другие значения,
которые поддерживаются целевым браузером.
Ширина изображения (в пикселах).
Высота изображения (в пикселах).
border border- Целое значение, определяющее размер рамки, которая
может появиться вокруг изображения, если изображение
заключено в пару дескрипторов <а>.
ismap
ismap
Определяет, имеет ли изображение ассоциированный с ним
файл карты, предназначенный для обработки щелчков
мышью в области изображения. Этот параметр
устанавливается путем указания значения true в случае, если
данное изображение имеет ассоциированный с ним файл
карты, или же значения false, если связанного файла нет.
Код из листинга 9.25 запрашивает базу данных на предмет наличия определенного изобра-
изображения. Затем изображение выводится на страницу с помощью методов writeO и bloblmage().
Ниже приводится фактический дескриптор, который создается в данном случае:
<IMG ALT="Click" ALIGN="left" WIDTH=68"
HEIGHT=0" BORDER=" BISMAP="false">
Листинг 9.25.Применение метода bloblmage ( ) для форматирования дескриптора <img>
<server>
// Найти
myCursor
изображение, которое впоследствии будет отображаться.
= myConn.cursor("SELECT path FROM images WHERE img = 1");
/ОС. Часть lit. Справочник по JavaScript
//Вывести на страницу дескриптор <img> со следующим набором атрибутов
write(myCursor.path.bloblmage("gif", "Click", "left",
468, 60, 0, false)) ;
// Закрыть курсор.
myCursor.close();
</server>
blob.blobL.ink()
curs or. column. blobLink (!РипМ1Л1е, текст)
Метод blobLink() выбирает BLOB-данные, хранящиеся в базе данных, создавая при этом
временную ссылку на них. Этот метод на самом деле возвращает HTML-код для деск-
дескриптора <а>, который применяется для отображения ссылки. Атрибут href дескриптора
<а> реализует ссылку на BLOB-данные, хранящиеся во временной памяти, и не содер-
содержит "нормальный" URL-адрес. Эти данные хранятся в памяти до тех пор, пока пользо-
пользователь не щелкнет на ссылке или пока не истечет 60 секунд.
Метод принимает в качестве параметров тип MIME (munMime) для файла, на который
формируется ссылка, а также текст, отображаемый для пользователя в форме ссылки.
Код из листинга 9.26 формирует запрос в базу данных с целью выборки определенного '
изображения. Затем изображение выводится на страницу с помощью методов \mte() и
hlol)Link(). Ниже показан дескриптор, который создается в этом случае:
<а href="LIVEWIRE_TEMPl">Click Неге!</а>
Листинг 9.26. Применение метода blobLinkO для форматирования дескриптора <а>
<server>
// Найти изображение, которое впоследствии будет отображаться.
myCursor = myConn.cursor("SELECT path FROM images WHERE img = 1");
// Вывести на страницу дескриптор <а> со следующим набором атрибутов
write(myCursor.path.blobLink("image/gif", "Click Here!"));
/ / Закрыть курсор.
myCursor.close();
</server>
callC()
callC( JSFuncMame, aprl, a.pr2, .-.,
Функция callCO, возвращающая строковые значения, является функцией верхнего уров-
ня. Она не ассоциируется с каким-либо основным объектом, а применяется для вызова
функции JavaScript, которая ссылается на некоторую функцию С в общедоступной биб-
библиотеке. Эти библиотеки представляют собой предварительно созданные файлы .dll на
компьютерах, функционирующих под управлением Windows, и файлы .so на компью-
компьютерах, где установлена система Unix. Функция са11С() принимает JavaScript-имя, назна-
назначенное функции С, а также все аргументы, которые требуется передать в эту функцию.
Перед тем, как можно будет вызывать функцию, необходимо зарегистрировать библио-
библиотеку С, используя серверную JavaScript-функцию registerCFunction().registerCFunction()
получает в качестве параметров JavaScript-имя, через которое можно ссылаться на фун-
функцию, путь к библиотеке, а также имя функции С.
Код из листинга 9.27 регистрирует внешнюю библиотеку С, extlib.dll, которая содержит
функцию под названием getMyDate. В процессе регистрации этой функции выполняет-
выполняется присваивание имени JSExtLib, которое используется в сценарии. Если регистрация
функции завершилась успешно, функция са!!С( ) применяется для вызова функции С
и передачи ей двух параметров. Результаты выводятся на пользовательскую страницу.
Листинг 9.27. Использование зарегистрированной функции С при помощи callCO
<server>
// Зарегистрировать библиотеку и функцию путем присваивания им
имени JavaScript-функции
Главе 9. Серверная сторона / О «J
var myExternalLib = registerCFunction("JSExtLib",
"с:/winnt/extlib.dll", "getMyDate")
// Если библиотека зарегистрирована без ошибок, обратиться к ней с
// помощью функции са11С()•
// Если произошел сбой, сообщить об ошибке на странице.
if (myExternalLib) {
write(callC("getMyDate", 1999, 2000));
(else)
write("Ошибка при обработки данной функции из внешней библиотеки");
)
</server>
client
Основной объект, который создается при каждом
подключении клиента к приложению.
f Экземпляр объекта client создается при каждом подключении пользователя к приложе-
приложению. Этот объект используется при перемещении по страницам приложения с целью
поддержки переменных сеанса, относящихся к данному пользователю. Поскольку этот
объект создается только при подключении пользователя к приложению, его нельзя ис-
использовать на первой странице приложения.
ПРИМЕЧАНИЕ
Объект client создеется при каждом подключении пользователя к
любому приложению, которое создеется с помощью серверной части языка JavaScript.
Поэтому пользователь, подключенный к двум приложениям, располагает двумя постро-
построенными объектами client.
Объект блокируется самостоятельно, если пользователь неактивен в течение установлен-
установленного периода времени или же в случае, если объект уничтожен. За время блокировки
механизм времени выполнения JavaScript очищает объект. Заданный по умолчанию ин-
интервал таймаута составляет десять минут. Этот интервал можно изменить с помощью
метода expiration() или же отменить его установку в ручном режиме, воспользовавшись
методом destroy().
Объекты client не имеют заданных по умолчанию свойств, однако, свойства можно со-
создавать. Обратите внимание, что поскольку данный метод применяется для поддержки
пользовательских сеансов, все свойства преобразуются в строки. Если формируется свой-
свойство, оцениваемое числовым значением, при его обработке следует применять методы
parselnt() и parseFloat().
Если в качестве свойства сохраняется объект, тогда в объектах project или server необ-
необходимо создать массив объектов. Затем можно создать свойство, в котором будет хранить-
храниться индекс данного объекта в объекте client.
Код из листинга 9.28 представляет форму, куда пользователь вносит свое имя, адрес
электронной почты и номер телефона. При щелчке на кнопке Submit (Отправить) све-
сведения заносятся в форму и с помощью сценария просматривается введенная информа-
информация. Затем введенные данные присваиваются трем созданным свойствам объекта client,
после чего информация выводится на страницу.
Листинг 9.28. Присваивание свойств объекту client
<html>
<head>
<title>Osing the client object</title>
</head>
<body>
<server>
// Выяснить, отправлены ли данные, или же требуется заполнить форму,
if(request.method == "POST"){
7 Ь 4 Часть 111. Справочник по JavaScript
// Присвоить соответствующие значения свойствам client,
client.name = request.name;
client.email = request.email;
client.phone = request.phone;
// Вывести на страницу информацию о пользователе.
write('Hello ' + client.name + '!<br>');
write ('Please confirm your email, ' + client.email + ', and ');
write('phone number, ' + client.phone);
>else{
// Если данная страница вызвана, а форма еще не была отправлена.
write('<form name="myForm" method="post">') ;
write('<table border="l"xtrxtd>') ;
write('<table border=">');
write('<tr align="left" valign="top">');
write (' <tdXb>Name :</b></td> ■) ;
write ('<tdXinput type="text" name="name" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">');
write (' <tdXb>E-mail: </bX/td>') ;
write ('<t<3Xinput type="text" name="email" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">');
write (' <tdXb>Phone : </bX/td>') ;
write ( '<tdxinput type="text" name="phone" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">') ;
write ('<td colspan=" align="right"Xinput type="submit"');
write(' value="Submit"X/td>') ;
write('</tr>');
write('</table>•);
write('</tdX/trX/fcable>');
write('</£orm>');
}
</server>
</body>
</html>
client.destroyO Es2+
client.destroy()
Й& Метод destroy() объекта client явно разрушает данный экземпляр объекта и все ассоци-
■ ированные с ним свойства. Если этот метод не был вызван, механизм времени выпол-
выполнения JavaScript удалит этот объект по истечении 10 минут или по завершению интер-
интервала времени, заданного с помощью метода client.expiration().
Если для поддержки объекта client применяются cookie-наборы, вызов метода destroyO
приводит к аналогичному результату. Однако, при использовании этого метода не уда-
удаляются данные, которые хранятся в cookie-файле браузера. Для удаления cookie-инфор-
cookie-информации потребуется установить с помощью метода client.expiration() время окончания
срока действия равным 0 секунд.
Если для поддержки объекта client применяется кодирование URL, метод destroyO Уда-
ляет информацию за исключением ссылок, созданных до того, как данный метод вы-
вызова сохранит соответствуюшие свойства. В этой связи хорошим тоном будет вызов этого
метода в верхней или нижней части страницы.
В листинге 9.29 показано, как удалять свойства пользовательского объекта client.
Листинг 9.29. Применение метода destroy!) для удаления свойств объекта client
<server>
// Удалить свойства client,
client.destroy()
</server>
Глава 9. Серверная сторона
765
client. expiration() ES2+
client.expirtation(секунды)
> Метод expirationO объекта client устанавливает значение, переданное в параметре секун-
секунды, для периода бездействия пользователя, по завершении которого механизм време-
времени выполнения JavaScript удаляет все свойства, связанные с данным сеансом.Если это
свойство не установлено явно, заданный по умолчанию интервал таймаута составляет 10
минут. Кроме того, этот метод ничего не выполняет, если для поддержки объектов client
применяется кодирование URL.
ПРИМЕЧАНИЕ
При установке знвчения, рввного О, удаляются все cookiB-наборы,
связанные с объектом client, если для поддержки сеансов применяются cookie-наборы
на клиентской стороне.
из ЛИСТИЬ1га 9.30 устанавливает порядок действий по удалению объекта client, вы-
полняемых после пяти минут отсутствия активности со стороны пользователя.
Листинг 9.30. Применение метода expiration!) объекта client
<server>
// Установить для периода иссечения интервал в 5 минут,
client.expirationC00)
</server>
client.property ES2+
client.свойство
Если параметр свойство определяется для экземпляра объекта client, он будет исполь-
использоваться при передаче информации формы. Если необходимо получить доступ к переда-
передаваемому на сервер элементу формы, который определялся при помощи атрибута name,
следует воспользоваться синтаксисом вида client.ceoucmeo. При этом параметр свойство
представляет собой значение атрибута name.
J Влистинге 9.31 демонстрируется, каким образом в серверном JavaScript-сцеиарии обес-
печивается доступ к значению zip формы. Это значение формы присваивается экземп-
экземпляру объекта client. Если значение было назначено, величина, которая хранится м свой-
свойстве, выводится на пользовательскую страницу.
Листинг 9.31. Получение доступа к свойству Client
<server>
// Проверить, была ли отправка,
if(request.method == "POST"){
// Присвоить свойству client соответствующее значение.
client.zip = request.zip;
>
// Вывести на страницу значение, переданное черев форму,
write(client.zip) ;
</server>
client.unwatch() ES3+
client.unwatch (свойство)
Метод unwatch() объекта client применяется для отмены слежения за свойством, указан-
указанным в параметре свойство.
Код из листинга 9.32 демонстрирует, как при помощи метода unwatch() прекратить от-
отслеживания свойства zip-
766 Часть III. Справочник по JavaScript
Листинг 9.32. Пример использования метода unwatch[)
<server>
// Функция, которая вызывается при изменении значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменилось с " + oldValue
+ " на " + newValue);
return newValue;
}
// Проверить, была ли отправка,
if(request.method == "POST"){
// Присвоить значение свойству client.
client.zip = request.zip;
>
// Начать отслеживание свойства,
client.watch("zip", alertme);
// Изменить значение,
client.zip = null;
// Отключить отслеживание свойства,
client.unwatch("zip");
// Снова изменить значение.
client.zip = 3;
</server>
client.watch() ES3+
client.watch(свойство, функция)
# Метод watch() объекта client применяется для включения отслеживания определенного
свойства, указанного в параметре свойство. Если свойство, определенное с помощью
этого параметра, изменяется после вызова метода watch(), выполняется функция, ука-
указанная в параметре функция.
уЗ В листинге 9.33 демонстрируется, как при помощи метода watch() начать отслеживание
^ свойства пр.
Листинг 9.33. Пример использования метода watch(J
<server>
// Функция, которая вызывается при ивменении значения свойства
function alertme(id, oldValue, newValue)(
write ("ID (" + id + ") изменилось с " + oldValue
+ " на " + newValue);
return newValue;
}
// Проверить, была ли отправка,
if(request.method == "POST"){
// Присвоить значение свойству client.
client.zip = request.zip;
>
// Начать отслеживание свойства,
client.watch("zip", alertme);
client.zip = null;
</server>
Connection ES3+
Основной объект, создаваемый при вызове метода
DbPool.connection() .
# Объект Connection представляет данное соединение, читаемое из "пула' и направляемое
в базу данных. Объект имеет единственное свойство, prototype, используемое при добав-
добавлении свойств к объекту. В табл. 9.5 описаны методы, связанные с этим объектом.
Глава 9. Сервернвя сторона
767
необходимости создавать пул, воспользуйтесь для такого соединения объектом database.
Метод
beginTransaction()
commitTransaction()
connected()
cursor()
execute()
majorErrorCode()
majorErrorMessage()
minorErrorCode()
minorErrorMessage()
release()
rollbackTransaction()
SQLTable()
storedProc()
Таблица 9.5. Методы объекта Connection
Описание
Начинает новую транзакцию SQL.
Фиксирует текущую транзакцию SQL.
Проверяет, подключен ли к базе данных пул соединений.
Создает объвкт Cursor для указанного SQL-оператора SELECT.
Выполняет переданный SQL-оператор, отличный от SELECT.
Возвращает числовое значение кода главной ошибки,
возвращенного базой данных или ODBC.
Возвращает строку сообщения кода главной ошибки,
возвращенного базой данных или ODBC.
Возвращает числовое значение кода вторичной ошибки,
возвращенного базой данных или ODBC.
Возвращает строку сообщения кода вторичной ошибки,
возвращенного базой данных или ODBC.
Освобождает указанное соединение, возвращая его обратно в пул.
Откатывает указанную транзакцию.
Форматирует результаты запроса, выполненного с помощью
оператора SELECT, в форме HTML-таблицы <table> для простого
вывода клиенту.
Создает объект Stproc и запускает на выполнение указанную
хранимую процедуру.
toStringO
unwatch()
Возвращает строковое представление указанного объекта.
Отключает отслеживание указанного свойства.
watch()
Включает отслеживание указанного свойства.
Код из листинга 9.34 формирует пул соединений с базой данных Oracle и инициализи-
инициализирует соединение из этого пула. С учетом введенных идентификатора (UID) и имени
пользователя выполняется запрос базы данных (на основе UID) с целью нахождения
информации о пользователе, после чего реализуется обновление имени пользователя.
Если соединение не установлено, на экран возвращается код ошибки и сообщение.
Листинг 9.34. Создание и использование объекта Connection
<server>
// Присвоить свойствам объекта client идентификатор и имя
пользователя.
client.uid = request.uid;
client.name = request.name;
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, отобразить сообщение об ошибке.
var myConn = myPool.connection('Employees' , 15) ;
7 6 О Часть III. Справочник по JavaScript
i f(myConn.connected()){
// Запустишь новую SQL-транзакцию для выполнения оператора SELECT.
myConn.beginTransaction() •
var currRow = myConn.cursor('SELECT * FROM employees
WHERE uid = ' + client.uid);
// Переместись фокус на эту строку, изменить значение столбца
// с именем для данного пользователя и обновить строку.
currRow.next();
currRow.name = client.name;
currRow.updateRow("employees");
// Закрыть курсор.
currRow.close <);
// Если соединение не установлено, вывести сообщение об ошибке.
}е1эе{
write(*Error ('+myConn.ma3orErrorCode()+'): *'
+ myConn.majorErrorMessage();
}
</server>
Connection.beginTransaction{) ES3+
connection.beginTransaction()
$б& Метод beguiTransaction() объекта Connection начинает новую SQL-транзакцию. Выполня-
>» ется группировка всех действий, связанных с базой данных до тех пор, пока пользова-
пользователь не завершит работу со страницей либо не обратится к методам conunitTransaction()
или rollbackTransaction(). После завершения пользователем работы со страницей транзак-
транзакция либо фиксируется, либо откатывается назад, в зависимости от установки флажка
commit. Эта установка определяется при создании экземпляра объекта DbPooI.
ПРИМЕЧАНИЕ
Создание вложенных трвнзакций невозможно.
Код в листинге 9.35 создает пул соединений с базой данных Oracle, затем с помощью
этого пула устанавливается одно из соединений. После подтверждения соединения вы-
вызывается метод beginTransaction() и выполняется SQL-запрос. С помощью метода
SQLTableO результаты форматируются в таблицу и затем отображаются на странице
пользователя.
Листинг 9.35. Запуск новой транзакции с помощью метода beginTransactionO
<server>
// Присвоить свойству объекту client переданный ID пользователя.
client.uid = request.uid;
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if(myConn.connected()){
// Запустить новую транзакцию и вывести результаты на страницу,
// отформатировав их с помощью метода SQLTableO.
myConn.beginTransaction();
write(myConn.SQLTable('SELECT * FROM employees WHERE uid >= '
+ client.uid));
// Зафиксировать транзакцию.
myConn.commitTransaction();
// Если соединение не установлено, вывести сообщение об ошибке.
}else{
write('Error ('+myConn.ma3orErrorCode()+'): '"
+ myConn.majorErrorMessage();
}
</server>
Глава 9. Серверная сторона / Ь У
Connection. commitTransactionQ ES3+
connection.commitTransaction()
f Метод coinmitTransaction() объекта Connection фиксирует новую SQL-транзакцию. Фик-
Фиксируются все действия, выполненные в базе данных с момента последней фиксации. Если
фиксация прошла успешно, возвращается значение 0. Если же возвращается ненулевое
значение, имеет место ошибка. В этом случае для выборки кода ошибки и отображения
сообщения об ошибке можно воспользоваться различными методами объекта Connection.
i/j Код в листинге 9.36 создает пул соединений для базы данных Oracle и извлекает из этого
V* пула одно из соединений. После подтверждения соединения вызывается метод
beginTransaction() и выполняется SQL-запрос. Результаты с помощью метода SQLTabIe()
форматируются в таблицу и отображаются на странице пользователя.
Листинг 9.36. Запуск новой транзакции с помощью метода commitTransactionO
<server>
// Присвоишь свойству объекту client переданный ID пользователя.
client.uid = request.uid;
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
if(myConn.connected() ) {
// Запустить новую транзакцию и вывести результаты на страницу,
// отформатировав их с помощью метода SQLTable().
myConn.beginTransaction();
write(myConn.SQLTable('SELECT * FROM employees WHERE uid >= '
+ client.uid));
// Зафиксировать транзакцию.
myConn.commitTransactionO;
// Если соединение не установлено, вывести сообщение об ошибке.
}else{
write('Error (' + myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
>
</server>
Connection.connected() ES3+
connection.connected()
f Метод connected() объекта Connection указывает, остается ли подключенным пул соеди-
соединений к базе данных.
Код в листинге 9.37 создает пул соединений, а затем извлекает соединение из пула для
дальнейшей обработки. Если соединение установлено, выполняется любой код, содержа-
содержащийся в данном разделе. Если соединение не установлено, на странице отображается со-
сообщение об ошибке.
Листинг 9.37. Тестирование соединения с помощью метода connected!)
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение иэ пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
if (myConn.connected()) {
// Соединение установлено, приступить к выполнению задачи.
}else{
// При соединении с базой данных возникла ошибка.
write('Error ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
</server>
7 /CJ Часть III. Справочник по JavBScript
Connection.cursor() ES3+
connection.cursor(sql)
connection.cursor(sql,boolean)
# Метод cursor() объекта Connection создает объект Cursor, который применяется для вы-
выполнения SQL-запросов, направляемых в базу данных. Метод принимает в качестве па-
параметра SQL-оператор sql. Кроме того, в метод можно передавать необязательное буле-
булево значение boolean, которое указывает, является ли курсор обновляемым.
Код в листинге 9.38 показывает, каким образом с помощью метода cursor() выполня-
выполняется запрос к базе данных. Для вывода результатов на страницу пользователя применя-
применяется цикл while.
Листинг 9.38. Применение метода cursor!) для выполнения запроса к базе данных
<server>
// Установишь выполняемый запрос.
var mySQL = myConn.cursor('SELECT name,title FROM employees1);
// Выполнишь итерацию по результатам и вывести их ма страницу.
while(mySQL.next()){
write(mySQL.name + ': ' + mySQL.title + '<br>'|;
>
</server>
Connection.execute() ES3+
connection.execute(оператор)
% Метод execute() объекта Connection разрешает приложению выполнять запросы DDL (Data
Definiton Language) или DML (Data Manipulation Language). При этом не возвращается
объект Cursor, который поддерживается базой данных. В данном случае могут применять-
применяться такие операторы, как, например, CREATE, ALTER и DROP.
ПРИМЕЧАНИЕ
Убедитесь в том, что применяется язык SQL, совместимый с текущей
базой данных.
Код в листинге 9.39 удаляет все строки, которые содержат определенные идентификаторы
UID, значение которых меньше величины, передаваемой сценарию.
Листинг 9.39. Применение метода execute!) для выполнения DML-запросов
<server>
// Присвоим» объекту client переданный UID.
client.uid = request.uid;
// Выполнить оператор DELETE на основе переданного DXD.
myConn.execute(•DELETE FROM employees WHERE uid < ■ + client.uid);
</server>
Connection.majorErrorCode() ES3+
connection.majorErrorCode()
\ Метод majorErrorMessageO объекта Connection содержит числовой код ошибки ODBC
или базы данных, который возвращается в случае обнаружения ошибки.
Код в листинге 9.40 демонстрирует, каким образом формируется пул соединений, ус-
устанавливается соединение с ним и выполняется тестирование полученного соединения.
Если тестирование приводит к отрицательным результатам, метод majorErrorCode() при-
применяется для вывода на страницу информации об ошибке.
Листинг 9.40 Применение метода majorErrorCodeO для выборки информации об
ошибке соединения с базой данных
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
Глава 9. Сврверная сторона / / 1
// Открыть соединение из пула. Если соединение ме может быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
if (myConn.connected()) {
// Соединение установлено, приступись к выполнению задачи.
}else{
// При соединении с базой данных произошла ошибка.
write('Error ( Ч-myConn.majorErrorCode() + '): ''
+ myConn.majorErrorMessage();
}
</server>
Connection.majorErrorMessage() ES3+
connection.majorErrorMessage()
f Метод majorErrorMessageO объекта Connection содержит строковое сообщение об ошибке
ODBC или базы данных, которое возвращается в случае обнаружения ошибки.
Код в листинге 9.41 демонстрирует, каким образом формируется пул соединений, ус-
устанавливается соединение с ним и выполняется тестирование полученного соединения.
Если тест приводит к отрицательным результатам, метод majorErrorMessageO приме-
применяется для вывода на страницу информации об ошибке.
Листинг 9.41. Применение метода majorErrorMessageO для выборки информации
об ошибке соединения с базой данных
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if (myConn.connected()) {
// Соединение установлено, приступить к выполнению задачи.
}else{
// При соединении с базой данных произошла ошибка.
write('Error ('+myConn.majorErrorCode() + ') : ' '
+ myConn.maJorErrorMessage();
}
</server>
Connection.minorErrorCode( ) ES3+
connection.minorErrorCode()
h Метод minorErrorCode() объекта Connection содержит числовой код вторичной ошибки
ODBC или базы данных, который возвращается в случае обнаружения ошибки.
Код в листинге 9.42 демонстрирует, каким образом формируется пул соединений, ус-
устанавливается соединение с ним и выполняется тестирование этого соединения. Если тест,
приводит к отрицательным результатам, метод minorErrorCode() применяется для вы-
вывода на страницу информации о вторичной ошибке.
Листинг 9.42. Применение метода minorErrorCodeO для выборки информации о
вторичной ошибке соединения с базой данных
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
772 Часть III. Справочник по JavaScript
if (myConn.connected()) {
// Соединение установлено, приступить к выполнению задачи.
}else{
// При соединении с базой данных произошла ошибка.
write('Error ('+myConn.minorErrorCode()+'): '
+ myConn.minorErrorMessage);
}
</server>
Connection.minorErrorMessage() ES3+
connection.minorErroiHessage()
# Метод minorErrorMessage() объекта Connection содержит строковое сообщение о вторич-
вторичной ошибке ODBC или базы данных, которое возвращается в случае обнаружения ошиб-
ошибки.
Код в листинге 9.43 демонстрирует, каким образом формируется пул соединений, ус-
танавливается соединение с ним и выполняется тестирование этого соединения. Если тест
приводит к отрицательным результатам, метод minorErrorMessage() применяется для
вывода на страницу информации о вторичной ошибке.
Листинг 9.43. Применение метода minorErrorMessage( ) для выборки информации о
вторичной ошибке соединения с базой данных
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if (myConn.connected()) {
// Соединение установлено, приступить к выполнению задачи.
}else{
// При соединении с базой данных произошла ошибка.
write('Error ('+myConn.minorErrorCode()+ '): '
+ myConn.minorErrorMessage);
}
</server>
Connection.prototype ES3+
connection.prototype.метод = имя
connect!on.prototype.свойство = Значение
>| Свойство prototype объекта Connection разрешает добавлять к объекту Connection методы
и свойства. Если добавляется метод, то тем самым устанавливается экземпляр, соответ-
соответствующий параметру имя ранее определенного метода.
Код в листинге 9.44 создает новое свойство и метод объекта Connection. Создается экзем-
экземпляр и устанавливается новое свойство. Затем для проверки нового свойства вызывается
новый метод и в случае некорректности (которая может иметь место) на странице ото-
отображается сообщение об ошибке.
Листинг 9.44. Применение свойства prototype для создания нового свойства и метода
<server>
// Определить прототипируемый метод.
function verifyODBC(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение,
if(this.type == "ODBC"){
return true;
}else(
return false;
Глава 9. Сераерная сторона
773
// Создашь новые свойство и метод объекта Connection.
Connection.prototype.type = null;
Connection.prototype.isODBC = verifyODBC;
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула.
var myConn = myPool.connection('Employees', 15);
// Используя уже определенный прототип, установить значение
// свойства type.
myConn.type = "Oracle";
// Проверить тип соединения на предмет его допустимости,
if(myConn.isODBC()){
write(myConn + " имеет допустимый тип " + myConn.type);
}else{
write(myConn + " имеет недопустимый ran " + myConn.type);
>
</server>
Connection.release() ES3+
connection.release()
h Метод release() объекта Connection после закрытия всех курсоров возвращает соединение
с экземпляром DbPool в пул соединений. Если курсор не закрыт, соединение действи-
действительно, пока не завершится заданный интервал времени или же окажется недоступной
переменная, поддерживающая данное соединение, которой присвоено значение едини-
единица. В зависимости от того, каким образом было написано приложение, это может про-
произойти, если приложение завершится, прекратит работу Web-сервер или же элемент
управления покинет HTML-страницу.
Код в листинге 9.45 демонстрирует, каким образом формируется пул, как с ним уста-
устанавливается соединение и выполняется запрос из базы данных. При закрытии курсора
соединение разрывается.
Листинг 9.45. Освобождение и возврат в пул соединения с помощью метода release!)
<server>
//Присвоить свойствам объекта client переданные ID и имя пользователя
client.uid = request.uid;
client.name = request.name;
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Выдать сообщение об ошибке, если
// соединение не может быть установлено.
var myConn = myPool.connection('Employees', 15);
if(myConn.connected() ) {
// Запустить новую SQL-транзакцию для выполнения оператора SELECT.
myConn.beginTransaction();
var currRow = myConn.cursor('SELECT * FROM employees WHERE uid = '
+ client.uid);
// Переместить фокус на эту строку, изменить значение столбца
// name для текущего пользователя и обновить всю строку.
currRow.next();
currRow.name = client.name;
currRow.updateRow("employees");
// Закрыть курсор.
currRow.close();
// Если при установке соединения произошел сбой,
// отобразишь сообщение об ошибке.
}else{
write('Error ('+myConn.majorErrorCode()+'): •'
+ myConn.majorErroxMessageO;
774 Часть III. Справочник no JavBScript
// Разорвать соединение,
myConn.release () ;
</server>
Connection.rollbackTransactionO ES3+
connection.rollbackTransaction()
; Метод rollbackTransactionO объекта Connection отменяет все действия, предпринятые
после последнего вызова метода beginTransaction().
ПРИМЕЧАНИЕ
Создвние вложенных транзакций невозможно.
Код в листинге 9-46 обрабатывает поле commit, переданное пользователем в приложение,
Если его значение равно true, транзакция фиксируется. В противном случае транзакция
откатывается.
Листинг 9.46. Откат транзакции с помощью метода rollbackTransactionO
<server>
// Выяснить, требуется ли пользователю зафиксировать последнюю
// транзакцию.
client.commit = request.commit;
if(client.commit = "YES"){
// Зафиксировать транзакцию.
myConn.coiranitTransaction();
>else{
// Выполнить откат транзакции.
myConn.rollbackTransaction();
</server>
Connection.SQLTable() ES3+
connection.SQLTablelsql>
jk Метод SQLTable() объекта Connection принимает SQL-оператор SELECT в качестве па-
параметра sql и выполняет запрос через соединение, по которому осуществлялся вызов
метода. Возвращается результат, отформатированный в виде HTML-таблицы, который
предназначен для простого отображения на странице клиента Эта простая таблица име-
имеет следующий формат:
<table border="l">
<tr>
<th>столбец 2</th>
N</th>
</tr>
<tr>
<td>SHaveraie 1 столбца l</td>
<Ы>значение 1 столбца 2</td>
<td>3naveHHe 1 столбца N</td>
</tr>
<tr>
<td>s«awe«jfe 2 столбца l</td>
<td>3Ha4eHKe 2 столбца 2</td>
<td>SHaveH»e 2 столбца N</td>
</tr>
</table>
Глааа 9. Серверная сторона / / О
Код в листинге 9.47 выполняет запрос, переданный пользователем, после чего с помо-
помощью метода SQLTableO форматирует результат. После этого информация выводится на
пользовательскую страницу.
Листинг 9.47. Применение метода SQLTableO для форматирования результатов
выполнения запросе SELECT
<server>
// Присвоить объекту client переданный пользователем Запрос.
client.sql = request.sql;
// Cosдать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD","myTNS");
// Открыть соединение из пула. Выдать сообщение об ошибке,
// если соединение не может быть установлено,
var myConn = myPool.connection('Employees', 15);
if(myConn.connected()){
// Запустить новую транзакцию и вывести результаты на страницу,
// воспользовавшись для форматирования методом SQLTableO.
myConn.beginTransaction();
write(myConn.SQLTable(client.sql));
// Зафиксировать транзакцию.
myConn.commitTransaction();
// Если при установке соединения произошел сбой, вывести сообщение
// об ошибке.
}else(
write('Error ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
// Разорвать соединение.
myConn.release();
</server>
Connection.storedProc() ES3+
connection. storedProc (имя_процедуры)
connection.storedProc (лмя_процедуры, аргумент!,
аргумент2, . . . , аргументы)
k Метод StoredProc() объекта Connection создает объект Stproc, позволяющий вызывать на
выполнение хранимые процедуры, специфичные для конкретной базы данных, с ис-
использованием соединения, через которое был вызван метод.
Как видно из синтаксического определения, в метод можно передавать любые требуе-
требуемые аргументы для последующей обработки. Если используются хранимые процедуры,
требующие указания аргументов, или если необходимо задействовать значения аргументов
по умолчанию, следует передавать в параметрах значения /Default/. В следующем при-
примере иллюстрируется передача /Default/ в качестве аргумента.
var myStproc = myConn.storedProc("sp_employees", "/Default/");
Область видимости этой процедуры ограничена текущей страницей. Методы объекта
Strproc должны вызываться на текущей странице. Если это невозможно, для доступа к
требуемым свойствам потребуется создавать новые объекты на последующих страницах.
Код в листинге 9.48 создает пул соединений, а затем извлекает из него одно соедине-
соединение. После тестирования соединения при помощи метода storedProc() осуществляется
вызов фиктивной хранимой процедуры sp_employees.
Листинг 9.48. Использование метода storedProcO для вызовв хранимой процедуры
базы данных
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp","appsPWD","myTNS");
// Открыть соединение из пула. Вывести сообщение об ошибке, если
// соединение не может быть открыто.
var myConn = myPool.connection('Employees', 15);
776 Часть III. Справочник по JavaScript
if (myConn.connected()){
myConn.beginlransaction() ;
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Зафиксировать транзакцию.
myConn.commitTransaction() ;
// Если соединение не было установлено, вывести сообщение об ошибке.
}else{
write('Error ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
// Освободить соединение.
myConn.release();
</server>
Connection.toString() ES3+
connection.toString()
# Метод toString() объекта Connection возвращает текстовое значение объекта. При обра-
обращении к экземпляру объекта Connection возвращается строка в следующем формате:
"dbName" "uid" "dbType" "dblnstance"
Если параметр неизвестен, возвращается пустая строка. Таблица 9.6 описывает возвраща-
возвращаемые значения.
Таблица 9.6. Возвращаемые значения метода toString()
Метод Описание
dbName Имя базы данных, к которой необходимо подключиться. В случае с
соединениями Oracla, DB2 и ODBC используется пустая строка («»). В Oracle
имя базы данных для этих соединений устанавливается в файле tnsnames.ora
и определяется с помощью DSN- и ODBC-соединений. В DB2 понятие имени
базы данных отсутствует, и ссылки на нее осуществляются только через
dblnstance.
uid Имя или идентификатор пользователя для которого будет устанавливаться
соединение.
dbType Тип базы данных. Возможные значения: ORACLE, SYBASE, INFORMIX, DB2
или ODBC.
dblnstance Имя экземпляра базы данных. В случае с ODBC используется имя, указанное
в записи DSN.
Код в листинге 9.49 создает экземпляр объекта Connection. После создания при помощи
метода write() на страницу выводится его строковое представление.
Листинг 9.49. Вывод на страницу результатов вызова метода toStringO
<server>
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD",
"myTNS") ;
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if(myConn.connected()){
// Вывести на страницу строковое представление объекта,
write(myConn.toString());
//Если соединение не может быть установлено,вывести сообщение об ошибке
глааа 9. Серверная сторона
777
}else{
write('Error ('+myConn.majorErrorCode()+'
+ myConn.majorErrorMessage();
>
// Освободить соединение.
myConn.release();
</server>
Connection, u n watch () ES3+
connection.unwatch(свойство)
Метод unwatch() объекта Connection используется для прекращения отслеживания кон-
конкретного свойства, указанного в параметре свойство.
Код в листинге показывает, каким образом метод umvatch() может применяться для
прекращения отслеживания определенного пользователем свойства type.
Листинг 9.50. Пример определения метода unwatch()
<server>
// Определись прототипируемый метод.
function verifyODBCO{
// Проверить допустимость присваиваемого значения вновь
// созданному свойству.
if(this.type == "ODBC"){
return true;
}else{
return false;
>
>
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые метод и свойство объекта Connection.
Connection.prototype.type = null;
Connection.prototype.isODBC = verifyODBC;
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула.
var myConn = myPool.connection('Employees', 15);
// Используя уже определенный прототип,
// присвоить значение свойству type.
myConn.type = "Oracle";
// Отслеживать свойство type.
myConn.watch("type", alertme);
// Проверить тип соединения на предмет допустимости,
if(myConn.isODBC()){
write(myConn + " имеет допустимый тип " + myConn.type);
}else{
write(myConn + " имеет недопустимый тип " + myConn.type);
}
// Изменить значение.
myConn. type = null ;
// Отменить отслеживание.
myConn.unwatch("type");
// Вновь изменить значение.
myConn.type = "Sybase";
</server>
778 Часть III. Справочник по JavaScript
Connection, watch () ES3+
connection.watch(свойство, функция)
# Метод watch() объекта Connection используется для включения отслеживания конкрет-
конкретного свойства, указанного в параметре свойство. В случае изменения значения отслежи-
отслеживаемого свойства вызывается функция, указанная параметром функция.
Код в листинге 9.51 показывает, каким образом метод watch() используется для орга-
организации слежения за определенным пользователем свойством type.
Листинг 9.51. Пример использования метода watch()
<server>
// Определить прототипируемый метод,
function verifyODBC(){
// Проверить допустимость присваиваемого значения вновь
// созданному свойству,
if(this.type == "ODBC"){
return true;
}else{
return false;
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue
+ " на " + newValue);
return newValue;
// Создать новые метод и свойство объекта Connection.
Connection.prototype.type = null;
Connection.prototype.isODBC = verifyODBC;
// Создать пул соединений.
var myPool = new DbPool ("ORACLE" , "mySID", "myApp" , "appsPWD" , "tnyTNS") ;
// Открыть соединение из пула.
var myConn = myPool.connection('Employees', 15);
// Используя уже определенный прототип,
/ / присвоить значение свойству type.
myConn.type = "Oracle";
// Отслеживать свойство type.
myConn.watch("type", alertme);
// Проверить тип соединения на предмет допустимости,
if(myConn.isODBC()){
write(myConn + " имеет допустимый тип " + myConn.type);
>else{
write(myConn + " имеет недопустимый тип " + myConn.type);
// Изменить значение.
myConn. type = null ;
</server>
Cursor ES2+
connection.cursor ()
database.cursor()
Щ Объект Cursor представляет собой основной объект, создаваемый при вызове метода
» cursor() для объектов Connection или database. Говорят, что запрос к базе данных воз-
возвращает курсор, таким образом данный объект содержит ссылки на строки, которые вер-
вернул запрос.
Глава 9. Серверная сторона
779
После того как исчезнет потребность в его применении, объект Cursor должен быть явно
закрыт с помощью метода close(). Если этого не выполнить, механизм времени выпол-
выполнения JavaScript будет хранить курсор в памяти до тех пор, пока соединение или пул,
в котором находится курсор, не выйдет за пределы области видимости.
Объект Cursor имеет множество методов и свойств, которые перечислены в табл. 9.7.
Таблица 9.7. Свойства и методы объекта Cursor
Тип
Элемент
Описание
Свойство columnName Это свойство представляет имена столбцов, которые
возвращаются SQL-оператором, передаваемым методу cursor().
prototype Свойство, позволяющее добавлять методы и свойства в объект
Cursor с целью их использования после создания новых
экземпляров.
Метод close() Этот метод закрывает курсор и освобождает используемую им
область памяти.
columnName() Метод принимает индексное числовое местоположение и
возвращает имя столбца по этому местоположению.
columnsO
Метод возвращает количество столбцов в курсоре.
deleteRow() Метод удаляет текущую строку в таблице, переданной методу.
insertRowf) Метод вставляет новую строку в таблицу, переданную методу.
next() Метод применяется для перемещения из текущей на следующую
строку в объекте Cursor.
unwatch() Метод применяется для отключения отслеживания заданного
свойства.
updateRow() Метод обновляет текущую строку в таблице, переданной методу.
watch() Метод используется для включения отслеживания указанного
свойства.
Код в листинге 9.52 принимает переданные идентификатор TJID и код региона и при-
присваивает их объекту client. Затем открывается пул соединений с базой данных и извле-
извлекается одно из соединений для выполнения запроса. Результаты выполнения запроса со-
сохраняются в объекте Cursor, а итерация по этим элементам выполняется с
использованием метода next(). После обновления всех строк новым значением кода ре-
региона курсор закрывается, а соединение освобождается.
Листинг 9.52. Использование объекта Cursor
<server>
// Присвоить объекту client переданные ID пользователя и код региона
client.uid = request.uid;
client.areacode = request.areacode;
// Создать пул соединений.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if(myConn.connected() ) {
//Запустить новую SQL-транзакцию для выполнения оператора SELECT.
myConn.beginTransaction();
var currRow = myConn.cursor('SELECT areacode FROM employees
WHERE uid >= ' + client. uid) ;
780 Часть III. Справочник по JavaScript
// Для всех совпадающих строк обновить код региона,
while(currRow.next()){
currRow.areacode = client.areacode;
currRow.updateRow("employees");
}
// Закрыть курсор.
currRow.close() ;
// Если соединение не может быть установлено,
// вывести сообщение об ошибке.
}else{
write('Error (' +myConn.majorErrorCode () + '): ''
+ myConn.majorErrorMessage();
}
// Освободить соединение.
myConn.release();
</server>
Cursor.close() ES2+
cursor.close()
;йр& Метод dose() объекта Cursor закрывает курсор и освобождает область памяти, которая
<■ использовалась для хранения связанной с ним информации. При успешном исходе этой
операиии метод возвращает 0, в противном случае возврашается код ошибки. Значение
этого кода ошибки может быть получено с помощью методов majorErrorCode() и
majorErrorMessageO объектов Connection или database.
Код в листинге 9.53 создает курсор, а затем закрывает его.
Листинг S.53. Закрытие курсора с помощью метода closed
<server>
// Создать курсор.
var currRow = myConn.cursor('SELECT areacode
FROM employees WHERE uid >= ' + client.uid);
// Закрыть курсор.
currRow.close();
</server>
Cursor. columnName ES2+
cursor.columnName
jj Свойство columnName объекта Cursor представляет собой массив объектов, соответству-
соответствующих именам столбцов в курсоре.
Листинг 9.54. Использование свойства columnName
<server>
var currRow = myConn.cursor('SELECT areacode,phone,name
FROM employees ') ,"
//Вывести на страницу имя и телефонный номер каждой персоны в форме:
// "<name> имеет телефонный номер (<areacode>) <phone>"
while(currRow.next()){
write(currRow.name + "имеет телефонный номер ("
+ currRow.areacode + ") ");
write(currRow.phone + "<br>");
>
// Закрыть курсор.
currRow.close() ;
</server>
Cursor.columnNameO ES2+
cursor. columnName (тело)
Й§ Метод columnNameO объекта Cursor принимает индексированный (начиная с нуля) но-
* мер местоположения число, после чего возвращает имя столбца по этому местоположе-
Главв 9. Сераерная сторона / О I
нию. Обратите внимание, что эти номера не возвращаются в каком-либо порядке до тех
пор, пока требуемый порядок не будет определен пользователем. В результате успешных
вызовов метода возвращаются все столбцы. Дополнительные сведения можно почерпнуть
из приведенного ниже примера.
В листинге 9.55 создаются два курсора. Один из курсоров возвращает специфические имена
столбцов, а второй — все имена столбцов Дополнительные сведения можно почерпнуть
из комментариев, сопровождающих код.
Листинг 9.55. Использование метода columnNameO для возврата имен столбцов в
таблицу.
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
if(myConn.connected()){
// Запустить новую SQL-транзакцию для выполнения оператора SELECT.
myConn.beginTransaction();
var currRowl = myConn.cursor('SELECT areacode,phone
FROM employees WHERE uid >= 100');
var currRow2 = myConn.cursor('SELECT * FROM employees
WHERE uid >= 100');
// Вывести на страницу 'areacode' из первого курсора,
write(currRowl.columnName@));
// Вывести на страницу 'phone' из первого курсора,
write(currRowl■columnNameA));
// Вывести на страницу имена всех столбцов, сохраненных во
// втором курсоре. Сюда входят 'areacode' и 'phone', как и в
II случае с другими столбцами.
for (var i = 0; i <= currRow2. columns (); i++) {
write(currRow2.columnName(i));
>
// Закрыть курсоры.
currRowl.close();
currRow2.close();
// Если соединение не может быть установлено,
// вывести сообщение об ошибке.
}else{
write('Error ('+myConn.majorErrorCode()+'): '•
+ myConn.majorErrorMessage();
}
// Освободить соединение.
myConn.release();
</server>
Cursor.columnsO ES2+
cursor.columns()
j| Метод columns() объекта Cursor возвращает количество столбцов в курсоре, для кото-
которого метод вызывается. Если SQL-строка, которая была передана для создания курсора,
определяется набором номеров столбцов, тогда возвращается именно количество элемен-
элементов в наборе столбцов.
Код в листинге 9.56 демонстрирует, как вернуть имена всех столбцов текущего курсора.
Листинг 9.56. Использование метода columnsO для определения количества
столбцов в курсоре перед его выводом на страницу
<server>
var currRow = myConn.cursor('SELECT * FROM employees');
// Вывести на страницу имена всех столбцов, сохраненных в курсоре.
7 и С. Часть III. Справочник по JavaScript
for (var i = 0; i <= currRow.colutnns()
write(currRow.columnName(i))-
}
// Закрыть курсор.
currRow.close() ;
</server>
cursor.deleteRow() ES2+
cursor.deleteRow(таблица)
\ Метод deleteRow() объекта Cursor использует обновляемый курсор и удаляет текущую
строку, используя параметр таблица объекта Cursor. Если удаление было успешным,
возвращается значение 0. В противном случае возвращается код ошибки, который может
быть получен с помощью методов majorErrorCode() и majorErrorMessage() объектов
Connection или database.
% Код в листинге 9.57 создает объект Cursor, а также выбирает все экземпляры с указан-
■ ным id. Затем при помощи метода deleteRow() удаляются все указанные экземпляры.
Листинг 9.57. Удаление строки из курсора с помощью метода deleteRowO
<server>
// Присвоить свойству объекта client, переданный ID пользователя,
client.uid = request.uid;
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp","appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
if(myConn.connected()){
//Запустить новую SQL-транзакцию для выполнения оператора SELECT.
myConn.beginTransaction();
var currRow = myConn.cursor('SELECT * FROM employees
WHERE uid = ' + client.uid, true) ;
// Удалить все строки из курсора,
while(currRow.next(){
currRow.delete("employees");
)
// Закрыть курсор.
currRow.close();
// Если произошел сбой при установке соединения,
// выгести сообщение об ошибке.
>else{
write('Error (' +myConn.ma;jorErrorCode () + '): ''
+ myConn.majorErrorMessage();
}
</server>
Cursor.insertRow() ES2+
cursor.insertRow(таблица)
j| Метод inserRow() объекта Cursor использует обновляемый курсор и вставляет новую
строку в таблицу, переданную в параметре таблица, объекта Cursor. Если эта операция
была успешной, возвращается значение 0. В противном случае возвращается код ошиб-
ошибки, который может быть получен с помощью методов majorErrorCode() и
majorErrorMessage() объектов Connection или database.
ПРИМЕЧАНИЕ
В зависимости от текущей базы данных, может потребоваться закрыть
текущий курсор и затем повторно открыть его в случае, если необходимо получить
доступ к только что вставленной строке. Кроме того, если был вызван метод курсора
next(), любые столбцы, которым не были присвоены значения, попучеют значения стол-
столбцов текущей строки.
Глаав 9. Серверная сторона /Ои
Код в листинге 9.58 создает объект Cursor и выбирает все строки. Затем при помощи
метода msertRow() вставляется новая строка с тремя указанными столбцами.
Листинг 9.58. Вставка строки из курсора с помощью метода insertRow()
<server>
// Присвоить свойству объекта client переданный ID пользователя.
client.uid = request.uid;
client., name = request, name;
client.pwd = request.pwd;
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
if(myConn.connected() ) {
// Запустить новую SQL-транзакцию для выполнения оператора
// SELECT. Обратите внимание, что курсор является обновляемым.
myConn.beginTransaction();
var currRow = myConn.cursor('SELECT uid,name,pwd
FROM employees', true);
// Присвоить значения столбцам и вставить новую строку.
currRow.uid = client.uid;
currRow.name = client.name;
currRow.pwd = client.pwd;
currRow.insertRow("employees");
myConn.commitTransaction() ;
// Закрыть курсор и освободить соединение.
currRow.close();
myconn.release();
// Если произошел сбой при соединении, вывести сообщение об ошибке.
}else{
write('Error ('+myConn.inaiorErrorCode () + '): ''
+ myConn.majorErrorMessage();
}
</server>
Cursor.next() ~ _____ — ES2+
cursor.next()
fo Метод next() объекта Cursor перемещает указатель с текущей строки на следующую стро-
^ ку в курсоре. Этот метод используется для выполнения итерации по строкам, возвраща-
возвращаемым курсором. Метод возвращает значение true до тех пор, пока не встретит последнюю
строку в курсоре. В этом случае возвращается значение false.
Код в листинге 9.59 создает экземпляр объект Cursor и выполняет итерацию по резуль-
результатам, удаляя каждую строку. При этом используется метод next().
Листинг 9.59. Использование метода пехШ для выполнения итерации по строкам в
курсоре
<server>
var currRow = myConn.cursor('SELECT * FROM employees
WHERE uid <= 200');
// Удалить все строки в курсоре.
while(currRow.next(){
currRow.delete("employees");
}
// Закрыть курсор.
currRow.close();
</server>
784 Часть 111. Справочник по JavaScript
Cursor.prototype ES2+
cursor.prototype.метод = имя
cursor.prototype.свойство = значение
# Свойство prototype объекта Cursor позволяет создавать новые свойства и методы к это-
этому объекту. Если добавляется метод, то тем самым устанавливается экземпляр, соответ-
соответствующий параметру имя ранее определенного метода.
Код в листинге 9.60 создает новое свойство и метод объекта Cursor. При этом создает-
ся экземпляр и устанавливается новое свойство. Затем для тестирования свойства вызы-
вызывается новый метод. Если результаты проверки будут неудовлетворительными, на стра-
страницу выводится сообщение об ошибке.
Листинг 9.60. Использование свойства prototype для создания нового свойства и
метода
<server>
// Определить прототипируемый метод.
function verifySELECT(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "SELECT"){
return true;
}else{
return false;
}
}
// Создать новые свойство и метод для объекта Cursor.
Cursor.prototype.type = null;
Cursor.prototype.isSELECT = verifySELECT;
// Создать пул соединений, само соединение и курсор.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
var myConn = myPool.connection('Employees', 15);
var currRow = myConn.cursor('SELECT * FROM employees');
// Используя уже определенный прототип,
// установить значение свойства type.
currRow.type = "SELECT";
// Проверка типа соединения на предмет его допустимости,
if(currRow.verifySELECT()){
write(currRow + " имеет допустимый тип " + currRow.type);
}else{
write(currRow + " имеет недопустимый тип " + currRow.type);
1
</server>
Cursor, unwatch ES3+
cursor.unwatch(свойство)
Метод unwateh() объекта Cursor используется для прекращения отслеживания опреде-
определенного свойства свойство.
Код в листинге 9.61 демонстрирует использование метода unwatchO для прекращения
отслеживания созданного свойства type.
Листинг 9.61. Пример использования метода unwatchO
<server>
// Определить прототипируемый метод.
function verifySELECT(){
// Проверить, назначается ли добавленному свойству type
/ / допустимое значение.
if(this.type == "SELECT"){
return true;
Глава 9. Серверная сторона / О и
}else{
return false;
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue) ;
return newValue;
}
// Cosдашь новые свойство и метод для объекта Cursor.
Cursor.prototype.type = null;
Cursor.prototype.isSELECT = verifySELECT;
// Создать пул соединений, само соединение и курсор.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
var myConn = myEool.connection('Employees', 15);
var currRow = myConn.cursor('SELECT * FROM employees');
// Используя уже определенный прототип,
// установить значение свойства type.
currRow.type = "SELECT";
// Включить отслеживание свойства type.
currRow.watch("type", alertme);
// Проверка типа соединения на предмет его допустимости.
if (currRow. verifySELECTO ) {
write(currRow + " имеет допустимый тип " + currRow.type);
}else{
write(currRow + " имеет недопустимый тип " + currRow.type);
}
// Изменить значение.
currRow.type = "DELETE";
// Отключить отслеживание свойства type.
currRow.unwatch("type");
// Вновь изменить значение.
currRow.type = "INSERT";
</server>
Cursor.updateRow() ES2+
cursor.updateRow(таблица)
Метод updateRow() объекта Cursor использует обновляемый курсор и обновляет текущую
строку в таблице, переданной в параметре таблица, объекта Cursor. Если эта операция
была успешной, возвращается значение 0. В противном случае возвращается код ошиб-
ошибки, который может быть получен с помощью методов majorErrorCode() и
majorErrorMessage() объектов Connection или database.
Код в листинге 9.62 создает объект Cursor и выбирает все строки. Затем при помощи
метода updateRow() текущая строка обновляется тремя указанными значениями.
Листинг 9.62. Обновление строки из курсора с помощью метода updateRow()
<server>
// Присвоить свойству объекта client переданный ID пользователя,
client.uid = request.uid;
client.name = request.name;
client.pwd = request.pwd;
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
/ / Открыть соединение ns пула. Если соединение не исжет быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
786
Часть III. Справочник по JavaScript
if(myConn.connected()) {
// Запустить новую SQL-транзакцию для выполнения оператора
// SELECT. Обратите внимание, что курсор является обновляемым.
myConn. beginTransacti.cn () ;
var currRow = myConn.cursor('SELECT uid,name,pwd FROM employees
WHERE uid = ' + client.uid, true) ;
// Выбрать строку и присвоить соответствующие значения столбцам.
currRow.next();
currRow.uid = client.uid;
currRow.name = client.name;
currRow.pwd = client.pwd;
currRow.updateRow("employees");
myConn.commitTransaction() ;
// Закрыть курсор и освободить соединение.
currRow.close();
myConn.release();
//Если произошел сбой при соединении, вывести сообщение об ошибке.
}else{
write('Ошибка ('+myConn.maj orErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
</server>
Cursor.watch() Es3+
cursor.wa tch(свойство, функция)
k Метод watch() объекта Cursor используется для установки отслеживания определенно-
определенного свойства, указанного параметром свойство. После вызова метода любые изменения
значения отслеживаемого свойства приведут к вызову функции, указанной параметром
функция.
Код в листинге 9.63 демонстрирует использование метода watchQ для начала отслежи-
отслеживания определенного пользователем свойства type.
Листинг 9.63. Пример использования метода WBtchO
<server>
// Определить прототипируемый метод.
function verifySELECT(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "SELECT"){
return true;
}else(
return false;
}
}
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldvalue, newValue){
write ("ID (" + id + ") изменено с " + oldvalue + " на "
+ newValue);
return newValue;
}
// Создать новые свойство и метод для объекта Cursor.
Cursor.prototype.type = null;
Cursor.prototype.isSELECT = verifySELECT;
// Создать пул соединений, само соединение и курсор.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
var myConn = myPool.connection('Employees', 15);
var currRow = myConn.cursor('SELECT * FROM employees');
// Используя уже определенный прототип,
// установить значение свойства type.
currRow.type = "SELECT";
Глава 9. Серверная сторона
787
// Включить отслеживание свойства type.
currRow.watch("type", alertme);
// Проверка шипа соединения на предмет его допустимости,
if(currRow.verifySELECT()){
write(currRow + " имеет допустимый тал " + currRow.type);
}else{
write(currRow + " имеет недопустимый тип " + currRow.type)
}
// Изменись значение.
currRow.type = "DELETE";
</server>
database ES2+
Основной объект, создаваемый при вызове метода database.connect().
\ Объект database представляет текущее соединение с базой данных. Этот объект имеет толь-
только одно свойство prototype. Это свойство может использоваться для добавления к объекту
новых свойств. В табл. 9.8 перечисляются методы, связанные с данным объектом.
ПРИМЕЧАНИЕ
Если требуется лишь пул соединений с базой данных, воспользуйтесь
объектом DbPool для соединения с целью инициализации пула, а затем при помощи
метода Connection.connection!) назначьте соединаниа.
Таблица 9.8. Методы объекта database
Метод
Описание
beginTransaction()
Начинает новую SQL-транзакцию.
commitTransactionO Фиксирует текущую SQL-транзакцию.
connect()
Подключает определенного пользователя к заданной базе данных.
connected ()
Проверяет, было ли установлено соединение с базой данных.
cursor()
Создает объект Cursor для указанного SQL-оператора SELECT.
disconnect
Разрывает указанное соединение с базой данных.
execute()
Выполняет переданный SQL-оператор, отличный от SELECT.
majorErrorCode()
majorErrorMessage()
minorErrorCode()
Возвращает числовое значение кода главной ошибки, возвращенного
базой данных или ODBC.
Возвращает строку сообщения кода главной ошибки, возвращенного
базой данных или ODBC.
Возвращает числовое значение кода вторичной ошибки,
возвращенного базой данных или ODBC.
minorErrorMessage() Возвращает строку сообщения кода вторичной ошибки, возвращенного
базой данных или ODBC.
rollback!"ransaction() Выполняет откат указанной транзакции.
SQLTable() Форматирует результаты запроса, выполненного с помощью
оператора SELECT, в форме HTML-таблицы <table> для простого
вывода клиенту.
storedProc() Создает объект Stproc и выполняет указанную хранимую процедуру.
Этот метод появился в ES 3.0.
storedProcArgs()
Создает прототип для хранимых процедур DB2, ODBC или Sybase.
Этот метод появился в ES 3.0.
7 О О Часть III. Справочник по JavaScript
Метод Описание
toStringO Возвращает строковое представление указанного объекта.
unwatch() Отключает отслеживание указанного свойства.
watch() Включает отслеживание указанного свойства.
Код в листинге 9.64 создает соединение с базой данных Oracle, используя переданные
имя и идентификатор (UID) пользователя. Далее выполняется запрос (основанный на
UID) в базу данных для поиска информации о пользователе и обновления его имени.
Если соединение не было установлено, на экране отображается код ошибки вместе с
соответствующим сообщением.
Листинг 9.64. Создание и использование объекта database
<server>
//Присвоишь свойствам объекта client переданные ID и имя пользователя
client.uid = request.uid;
client.name = request.name;
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD" , "myTNS") ;
if(myConn.connected()){
// Запустить новую SQL-транзакцию для выполнения оператора SELECT.
myConn.beginTransacticn();
var currRow = myConn.cursor('SELECT * FROM employees
WHERE uid = ' + client.uid);
// Переместить фокус на эту строку, изменить значение столбца
// name для текущего пользователя и обновить всю строку.
currRow.next();
currRow.name = client.name;
currRow.updateRow("employees");
myConn.commitTransaction();
// Закрыть курсор и разорвать соединение.
currRow.close();
myConn.disconnect();
// Если при установке соединения произошел сбой, отобразить
// сообщение об ошибке.
}else{
write('Ошибка ('+myConn.majcrErrcrCcde()+'): ''
+ myConn.majcrErrcrMessage();
}
</server>
dartabase.beginTransaction() ES2+
database.beginTransaction()
jh Метод beginTransaction() объекта database используется для запуска новой SQL-транзак-
SQL-транзакции. В этом случае группируются все действия, связанные с базой данных, до тех пор,
пока пользователь либо не покинет страницу, либо не обратится к методам
commitTransaction() или roHbackTransaction(). В случае если пользователь покидает стра-
страницу, транзакция фиксируется или откатывается, в зависимости от того, устанавливался
ли флаг commit при создании экземпляра объекта database.
ПРИМЕЧАНИЕ
Создание вложенных транзакций невозможно.
Код в листинге 9.65 создает соединение с базой данных. После тестирования соединения
вызывается метод beginTransaction() и выполняется SQL-запрос. Результаты форматиру-
форматируются в виде таблицы с помощью метода SQLTableO, после чего выводятся на страни-
страницу пользователя.
Глава 9. Серверная сторона 789
Листинг 9.65. Запуск новой транзакции с помощью метода beginTransactionO
<server>
// Присвоить свойствам объекта client переданные ID и имя
// пользователя.
client.uid = request.uid;
/ / Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if(myConn.connected()){
// Запустить новую транзакцию и вывести результаты на страницу,
// предварительно отформатировав их с помощью метода SQLTableO■
myConn.beginTransactionO;
write(myCcnn.SQLTable('SELECT * FROM employees WHERE uid >= '
+ client.uid));
// Зафиксировать транзакцию.
myConn.commi tTransaction();
// Если происходит сбой соединения, вывести сообщение об ошибке.
}else{
write('Ошибка ('+myConn.ma j orErrorCode() + '): ''
+ rayConn.majorErrorMessage();
}
</server>
database.commitTransaction ES2+
database.commitTransaction()
# Метод commitTransaction() объекта database фиксирует новую SQL-транзакцию. При этом
фиксируются все действия, выполненные в базе данных с момента последней фиксации.
Если фиксация оказалась успешной, возвращается значение 0. Если возвращается нену-
ненулевое значение, это будет признаком возникшей ошибки. В этом случае можно восполь-
воспользоваться различными методами объекта database с целью выборки кода и сообщения об
ошибке.
Код в листинге 9.66 устанавливает соединение с базой данных Oracle. После проверки
соединения вызывается метод beginTransactionO и выполняется SQL-запрос. Полученные
при этом результаты форматируются в виде таблицы с помощью метода SQLTable() и
выводятся на страницу пользователя.
Листинг 9.66. Запуск на выполнение новой транзакции с помощью метода
commit Transaction^
<server>
//Присвоить свойствам объекта client переданные ID и имя пользователя
client.uid = request.uid;
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if(myConn.connected()){
// Запустить новую транзакцию и вывести результаты на страницу,
// предварительно отформатировав их с помощью метода SQLTableO.
myConn.beginTransaction();
write(myConn.SQLTable('SELECT * FROM employees
WHERE uid >= ' + client. uid)) ;
// Зафиксировать транзакцию.
myConn.commitTransaction() ;
// Если происходит сбой соединения, вывести сообщение об ошибке.
}elaet
write("Ошибка ('+myConn.majorErrorCode ()+'): "'
+ myCcnn.majorErrorMessage();
J
</server>
/ У U Часть III. Справочник по JavaScript
database.connect() ES2+
database.connect(dbType, dblnstance, uid, pwd, dbName)
database.connect(dbType, dblnstance, uid, pwd, dbName, maxConn)
database.connect(dbType, dblnstance, vtid, pwd, dbName, maxConn,
conunxtFlag)
§e& Метод connect() объекта database выполняет подключение к базе данных в соответствии
>• с переданными параметрами. Перед тем, как можно будет открыть соединение с базой
данных и появится возможность выполнять запросы, потребуется создать экземпляр этого
объекта. Параметры метода connect() описываются в табл. 9.9.
Таблица 9.9. Параметры метода connect!)
Параметр Описание
dbType Тип базы данных. Возможные значения: ORACLE, SYBASE, INFORMIX, DB2
или ODBC.
dblnstance Имя экземпляра базы данных. В случае с ODBC используется имя, указанное
в записи DSN.
uid Имя или идентификатор пользователя для подключения к базе данных,
pwd Пароль пользователя, подключаемого к базе данных.
dbName Имя базы данных, в которой регистрируется пользователь. В случае
подключений к базам данных Oracle, DB2 и ODBC может использоваться
пустая строка («»). Для Oracle имя базы данных при установке соединений
задается в файле tnsnames.ora, а для ODBC-соединений оно определяется с
помощью DSN. При установке соединения с базами данных DB2 имя базы
данных не используется, а ссылка производится через dblnstance.
maxConn Максимальное количество соединений в пуле. Фактически этот параметр
определяет количество соединений в пуле, которые могут быть открыты для
базы данных.
commitFlag Этот флаг определяет, будет ли фиксироваться отложенная транзакция в
случае освобождения соединения. Если этому флагу присвоено значение false,
выполняется откат транзакции. Если флагу присвоено значение true,
транзакция фиксируется.
В зависимости от текущей базы данных, можно создавать экземпляр объекта, передавая
ограниченный набор параметров. Для получения дополнительных сведений по этому воп-
вопросу обратитесь к документации по базе данных.
Код в листинге 9.67 создает соединение с базой данных Oracle. На базе переданных имени
и UID пользователя выполняется запрос к базе данных (основанный на UID), с помо-
помощью которого осуществляется поиск информации о пользователе, после чего обновля-
обновляется имя пользователя. Если соединение не было установлено, на экране отображается
код ошибки вместе с соответствующим сообщением.
Листинг 9.67. Подключение к базе данных с помощью метода connect!)
<server>
//Присвоить свойствам объекта client переданные ID и имя пользователя
client.uid = request.uid;
client.name = request.name;
// Открыть соединение.
var myConn =
database.connect("ORACLE","mySID","myApp","appsPWD","myTNS",true);
Главе 9. Серверная сторона / У I
if(myConn.connected()){
//Запустить новую SQL-транзакцию для выполнения оператора SELECT
myConn.beginTransaction();
var currRow = myConn.cursor('SELECT * FROM employees
WHERE uid = ' + client.uid);
// Переместить фокус на данную строку, изменить значение столбца
// name для данного пользователя и обновить строку.
currRow.next();
currRow.name = client.name;
currRow.updateRow("employees") ;
myConn.commitTransaction();
// Закрыть курсор и соединение.
currRow.close();
myConn.disconnect();
// Если происходит сбой соединения, вывести сообщение об ошибке.
}else(
write('Ошибка ('+myConn.majorErrorCode()+'): '•
+ myConn.majorErrorMessage{);
</server>
database.connected ES2+
database.connected()
# Метод connected() объекта базы данных сообщает о том, остается ли активным соедине-
соединение с базой данных.
Код в листинге 9.68 создает соединение с базой данных. После установки соединения
вызывается любой код, находящийся в данном разделе. Если при установке соединения
произошел сбой, на страницу выводится ошибка.
Листинг 9.68. Тестирование соединения с помощью метода connected!)
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if (myConn.connected()) (
// Вы подключены, стало быть, можно выполнять
// соответствующие задачи.
}else{
// Ошибка соединения с базой данных.
write('Ошибка ('+myConn.majorErrorCode() + '): ' '
+ myConn.majorErrorMessage();
</server>
database.cursor() ES2+
database.cursor(sql)
database.cursor(sgi, boolean)
k Метод cursor() объекта database создает объект Cursor, который может использоваться
при выполнении SQL-запросов к базе данных. В качестве параметра метод принимает SQL-
оператор sql, а также необязательное булево значение boolean, которое определяет, бу-
будет ли курсор обновляемым.
Код в листинге 9.69 реализует запрос к базе данных с помощью метода cursor(). Цикл
while используется для вывода результатов на страницу пользователя.
Листинг 9.69. Использование метода cursor!) для выполнения запроса к базе данных
<server>
// Подготовить запрос для выполнения.
var mySQL = myConn.cursor('SELECT name,title FROM employees');
7 У С_ Часть III. Справочник по JavaScript
// Выполнить итерацию по результатам и вывести их на страницу,
while(mySQL.next()){
write(mySQL.name + ': ' + mySQL.title + '<br>');
}
</server>
database.disconnect ES2+
database.disconnect()
йб& Метод disconnectO объекта database разрывает соединение с базой данных.
у^ Код в листинге 9.70 устанавливает соединение с базой данных Oracle. Он принимает имя
с^ пользователя и идентификатор UID, выполняет запрос (основанный на UID) к базе
данных для поиска информации о пользователе, а затем обновляет имя пользователя.
Если соединение не было установлено, на экране отображается код ошибки вместе с
соответствующим сообщением. После завершения обработки соединение разрывается при
помощи метода disconnect().
Листинг 9.70. Отключение от базы данных с помощью метода disconnect!)
<server>
// Присвоить свойствам объекта client переданные ID и
// имя пользователя,
client.uid = request.uid;
client.name = request.name;
// Открыть соединение.
var myConn =
database.connect("ORACLE","mySID","myApp","appsPWD","myTNS",true);
if(myConn.connected()){
//Запустить новую SQL-транзакцию для выполнения оператора SELECT
myConn.beginTransaction();
var currRow = myConn.cursor('SELECT * FROM employees
WHERE uid = ' + client.uid) ;
// Переместить фокус на данную строку, изменишь значение столбца
// name для данного пользователя и обновить строку.
currRow.next();
currRow.name = client.name;
currRow.updateRow("employees");
myConn.commitTransaction();
// Закрыть курсор и соединение.
currRow.close();
myConn.disconnect();
// Если происходит сбой соединения, вывести сообщение об ошибке.
}else{
write ( ' Ошибка (' +myConn. ma j orErrorCode () + '): ' '
+ myConn.majorErrorMessage();
}
</server>
database.execute() ES2+
database.execute(оператор)
# Метод execute() объекта database обеспечивает выполнение приложением DDL- (Data
Definition Language— Язык определения данных) или DML- (Data Manipulation Language —
Язык манипулирования данными) запросов, которые не возвращают объект Cursor, под-
поддерживаемый базой данных. К выполняемым операторам относятся,например, CREATE,
ALTER и DROP.
ПРИМЕЧАНИЕ
Следует убедиться в том, что используется версия языка SQL, совме-
совместимая с существующей базой данных.
Глава 9. Серверная сторона /УЗ
Код в листинге 9.71 удаляет все строки, идентификатор UID которых меньше числа,
переданного в сценарий.
Листинг 9.71. Использование метода executed для выполнения DML-запросов
<server>
// Присвоить объекту client переданный идентификатор DID.
client.uid = request.uid;
// Выполнить оператор DELETE на основе переданного DID.
myConn.execute('DELETE FROM employees WHERE uid < ' + client.uid);
</server>
database.majorErrorCodeO ES2+
database.majcrErrorCode()
Метод majorErrorCode() объекта database содержит числовой код ошибки ODBC или
базы данных, возвращаемый в случае возникновения ошибки.
Код в листинге 9.72 демонстрирует, как создавать соединение и выполнять проверку на
предмет установки соединения. Если результаты выполнения теста были неудовлетвори-
неудовлетворительными, метод majorErrorCode() применяется для вывода на страницу сведений об
ошибке.
Листинг 9.72. Использование метода majorErrorCodeO для выборки информации об
ошибке соединения с базой данных
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if (myCcnn.connected()) {
// Вы подключены, стало быть, можно выполнять любые задачи.
}else{
// Ошибка при установке соединения с базой данных.
write('Error ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
)
</server>
database.majorErrorMessage() ES2+
database.majorErrorMessage()
fe Метод majorErrorMessage() объекта database содержит строковое сообщение об ошиб-
ошибке ODBC или базы данных, которое возвращается в случае возникновения ошибки.
Код в листинге 9.73 демонстрирует, как создавать и проверять полученное соединение.
Если результаты тестирования оказались неудовлетворительными, для вывода на страницу
сообщения об ошибке используется метод majorEnrorMessage().
Листинг 9.73. Использование метода majorErrorMessageO для выборки
информации об ошибке соединения с базой данных.
<server>
// Открыть соединения.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if (myConn.connected() ) {
// Вы подключены, поэтому приступайте к реализации любых задач.
}else{
// Ошибка при установке соединения с базой данных.
write('Error ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
</server>
794 Честь III. Справочник по JavaScript
database.minorErrorCodeO ES2+
database.minorErrorCode()
# Метод minorErrorCodeO объекта database содержит числовой код вторичной ошибки
ODBC или базы данных, возвращаемый в случае возникновения ошибки.
Код в листинге 9.74 демонстрирует, каким образом может создаваться соединение, а также
производиться его проверка. Если результаты выполнения теста были неудовлетворительны-
неудовлетворительными, метод mmorErrorCodeO применяется для вывода на страницу сведений об ошибке.
Листинг 9.74. Использование метода minorErrorCodeO для выборки информации о
вторичной ошибке соединения с базой данных
<server>
// Открыть соединение.
var myCcnn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if (myConn.connected()) {
// Вы подключены, стало быть, можно выполнять любые задачи.
}else{
// Ошибка при установке соединения с базой данных.
write('Error ('+myConn.minorErrorCode()+'): '
+ myConn.minorErrorMessage);
</server>
database.majorErrorMessage() ES2+
database.minorErrcrMessage()
j| Метод imnorErrorMessage() объекта database содержит строковое сообщение о вторич-
вторичной ошибке ODBC или базы данных, которое возвращается в случае возникновения
ошибки.
Код в листинге 9.75 демонстрирует, как создавать и проверять полученное соединение.
Если результаты тестирования были неудовлетворительными, для вывода на страницу
сообщения об ошибке используется метод minorErrorMessage().
Листинг 9.75. Использование метода minorErrorMessageO для выборки
информации об ошибке соединения с базой данных
<server>
/ / Открыть соединения.
var myCcnn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if (myCcnn.connected()) {
// Вы подключены, поэтому приступайте к реализации любых задач.
}else{
// Ошибка при установке соединения с баэсй данных.
write('Error ('+myConn.minorErrorCode()+'): '
+ myConn.minorErrorMessage);
</server>
database.prototype ES2+
database.prototype.метол = имя
database.prototype.свойство = значение
k Свойство prototype объекта database позволяет добавлять к объекту database методы и
свойства. Если добавляется метод, то тем самым устанавливается экземпляр, соответству-
соответствующий параметру имя ранее определенного метода.
Код в листинге 9.76 создает новое свойство и метод объекта database. Создается экзем-
экземпляр и устанавливается новое свойство. Затем для проверки нового свойства вызывается
новый метод и в случае некорректности (которая может иметь место) на странице ото-
отображается сообщение об ошибке.
Глава 9. Серверная сторона 7 9 О
Листинг 9.76. Применение свойства prototype для создания нового свойстве и метода
<server>
// Определить прототипируемый иетод.
function verifyODBCO {
// Проверить, назначается ли добавленному свойству type
// допустимое значение,
if(this.type == "ODBC"){
return true ;
}else{
re turn fals e;
// Создать новые свойство и метод объекта database,
database.prototype.type = null;
database.prototype.isODBC = verifyODBC;
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
// Используя уже определенный прототип,
// установить значение свойства type.
myConn.type = "Oracle";
// Проверить тип соединения на предмет его допустимости.
if(myConn.isODBC())(
write(myConn + " имеет допустимый тип " + myConn.type);
}else(
write(myConn + " имеет недопустимый тип " + myConn.type);
}
</server>
database.rollbackTransaction() ES2+
database.rollbackTransaction()
Метод rolIbackTRansaction() объекта database отменяет все действия, предпринятые с
момента последнего вызова метода beginTransaction().
ПРИМЕЧАНИЕ
Созданив вложенных транзакций невозможно.
Код в листинге 9.77 обрабатывает поле commit, которое пользователь отправляет прило-
приложению. Если значение этого поля равно true, происходит фиксация транзакции. В про-
противном случае выполняется откат транзакции.
Листинг 9.77. Отквт транзакции с помощью метода rollbackTransBctionO
<server>
// Выяснить, требуется ли пользователю зафиксировать последнюю
// транзакцию.
client.commit = request.commit;
if(client.commit = "YES"){
// Зафиксировать транзакцию.
myConn.commitTransaction();
}else{
// Выполнить откат транзакции.
myConn.rollbackTransaction();
}
</server>
database.SQLTable()
database.SQLTable(sql)
/9b Часть 111. Справочник по JavaScript
етод SQLTabIe() объекта database принимает SQL-оператор SELECT, переданный в
параметре sql, и выполняет запрос с использованием соединения, по которому направ-
направлялся вызов. Возвращается результат, отформатированный в виде HTML-таблицы, ко-
который предназначен для простого отображения на странице клиента. Эта простая табли-
таблица имеет следующий формат:
<table border="l">
<tr>
<ЬЪ.>столбец l</th>
<Ъ.Ъ>столбец 2</th>
<th>столбец N</th>
</tr>
<tr>
<td>3HaveHae 1 столбца K/td>
<td>3Haчемяе 1 столбца 2</td>
<td>3HaveHHe 1 столбца N</td>
</tr>
<tr>
<td>SHavenue 2 столбца l</td>
<td>значение 2 столбца 2</td>
<td>3Havemie 2 столбца N</td>
</tr>
</table>
^ ^ОД в листинге 9-78 выполняет запрос, переданный пользователем, после чего с помо-
шью метода SQLTable() форматирует результат. После этого информация выводится на
пользовательскую страницу.
Листинг 9.78. Применение метода SQLTable для форматирования результатов
запроса SELECT
<server>
// Присвоить объекту client переданный пользователем запрос.
client.sql = request.sql;
/ / Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if(myConn.connected())(
// Запустить новую транзакцию и вывести результаты на страницу,
// воспользовавшись для форматирования методом SQLTable().
myConn.beginTransaction() ;
write(myConn.SQLTable(client.sql) ) ;
// Зафиксировать транзакцию.
myConn.commitTransaction();
// Если при установке соединения произошел сбой, вывести сообщение
// об ошибке.
}else{
write('Error (' +myConn.majorErrorCode() + '): ''
+ myConn.majorErrorMessage();
}
// Разорвать соединение.
myConn.release();
</server>
database.storedProc() ES3+
database.storedProc (имя_процедуры)
database.storedProc {имя_процедуры, аргумент1, аргумент2, ...,
аргумвнтЯ)
Глава 9. Серверная сторона / У /
# Метод StoredProcO объекта database создает объект Stproc, позволяющий выполнять
хранимые процедуры, специфичные для базы данных, с применением соединения, че-
через которое этот метод был вызван.
Как видно из синтаксического определения, в метод можно передавать любые требуе-
требуемые аргументы для последующей обработки. Если используются хранимые процедуры,
требующие указания аргументов, или если необходимо задействовать значения аргументов
по умолчанию, следует передавать в параметрах значения /Default/. В следующем при-
примере иллюстрируется передача /Default/ в качестве аргумента.
var myStproc = myConn.storedProc("sp_employees", "/Default/");
Область видимости этой процедуры ограничена текущей страницей. Методы объекта
Strproc должны вызываться на текущей странице. Если это невозможно, для доступа к
требуемым свойствам потребуется создавать новые объекты на последующих страницах.
Код в листинге 9.79 создает соединение с базой данных. После проверки соединения при
помощи метода storedProcO вызывается фиктивная хранимая процедура spjemployees.
Листинг 9.7S. Использование метода storedProcO для вызова хранимой процедуры
базы данных
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if(myConn.connected()){
myConn.beginTransaction() ;
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Зафиксировать транзакцию.
myConn.commitTransaction();
//Если соединение не было установлено, вывести сообщение об ошибке
}else(
write("Ошибка ('+myConn.majorErrorCode()+'): '•
+ myConn.majorErrorMessage();
// Освободить соединение.
myConn.release();
</server>
database.storedProcArgs() ES3+
database.storedProcArgs(имя_процедуры)
database.storedProcArgs(имя_проиедуры, тип!, ткп2, ... , ткпЫ)
j| Метод StoredProcO объекта database создает объект Stproc, позволяющий выполнять
хранимые процедуры, специфичные для баз данных DB2, ODBC и Sybase, с приме-
применением соединения, через которое этот метод был вызван. Для случая баз данных Informix
и Oracle этот метод никакого эффекта не дает. Разница между этим методом и методом
storedProcO заключается в том, что данный метод передает в параметрах типы аргументов.
В качестве типов могут использоваться IN, OUT или INOUT. Ниже приводится пример
передачи этих типов:
var myStproc = myConn.storedProc("sp_employees", "INOUT", "OUT");
Область действия этой процедуры ограничивается текущей страницей. Методы объекта
Stproc также должны вызываться на текущей странице. Если это невозможно, для обес-
обеспечения доступа к требуемым свойствам на последующих страницах необходимо созда-
создавать новые объекты.
Код в листинге 9.80 создает соединение с базой данных. После завершения проверки со-
соединения вызывается метод storedProcO, который применяется для вызова фиктивной
хранимой процедуры sp_employees. Метод storedProcArgs() используется для указания
типов аргументов.
/ У О Часть III. Справочник по JavaScript
Листинг 9.80. Использование метода storedProcArgsl) для установки типов
аргументов в хранимой процедуре
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if(myConn.connected()){
myConn.beginlransaction();
// Выполнить хранимую процедуру.
var myStprocArgs =myConn.storedProcArgs("sp_employees","IN","INOUT");
var myStproc = myConn.storedProc("sp_employees", 3, "%John%");
// Зафиксировать транзакцию.
myConn.commitTransactionО;
//Если соединение не было установлено, вывести сообщение об ошибке
}else{
write ('Ошибка (' +myConn.majorErrorCode () + ')'- '' +
myConn.majorErrorMessage();
}
// Освободить соединение.
myConn.release();
</server>
database.toString() ES2+
database.toString()
# Метод toStringO объекта database возвращает строковое представление объекта. Если метод
вызывается для экземпляра объекта database, возвращается строка в следующем форма-
формате:
"dbName" "uid" "dbType" "dblnstance"
Если параметр неизвестен, возвращается пустая строка. Таблица 9.10 описывает возвра-
возвращаемые значения.
Таблица 9.10. Возвращаемые значения метода toStringO
Метод Описание
dbName Имя базы данных, в которой необходимо зарегистрироваться. В случае с
соединениями Oracle, DB2 и ODBC используется пустая строка (""). В Oracle
имя базы данных для этих соединений устанавливается в файле tnsnames.ora и
определяется с помощью DSN- и ODBC-соединений. В DB2 имя базы данных
отсутствует и ссылки на нее осуществляются только через dblnstance.
uid Имя или идентификатор пользователя, для которого будут устанавливаться
соединения.
dbType Тип базы данных. Возможные значения: ORACLE, SYBASE, INFORMIX, DB2 или
ODBC.
dblnstance Имя экземпляра базы данных. В случае с ODBC используется имя, указанное в
записи DSN.
Код в листинге 9.81 создает экземпляр объекта database. После завершения создания ме-
метод write() выводит на страницу соответствующее строковое представление.
Листинг 9.81. Вывод результатов вызова метода toStringO на странице
<server>
// Открыть соединения.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
Глава 9. Серверная сторона 7 У У
if(myConn.connected()){
// Вывести на страницу строковое представление объекта,
write(myConn.toString());
// Если соединение не может быть установлено,
// вывести сообщение об ошибке.
}else{
write('Ошибка ('+myConn.majorErrorCode()+'): •'
+ myConn.majorErrorMessage();
}
// Освободить соединение.
myConn.release();
</server>
database.unwatch() ES3+
database.unwatch(свойство)
# Метод unwatch() объекта database используется для прекращения отслеживания конкрет-
конкретного свойства, указанного в параметре свойство.
М? ^од в листинге 9-82 показывает, каким образом метод unwatch() может применяться для
^ прекращения отслеживания определенного пользователем свойства type.
Листинг 9.82. ПРимер определения метода unwatchO
<server>
// Определить прототнпируемый метод,
function verifyODBCO (
// Проверить допустимость присваиваемого значения вновь
// созданному свойству.
if(this.type == "ODBC"){
return true ;
)else{
return false;
}
}
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldValue, newValue)(
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые метод и свойство объекта database,
database.prototype.type = null;
database.prototype. isODBC = verifyODBC,-
/ / Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
// Используя уже определенный прототип,
// присвоить значение свойству type.
myConn.type = "Oracle";
// Проверить тип соединения на предмет допустимости,
if(myConn.isODBC() ) {
write(myConn + " имеет допустимый тип " + myConn.type);
)else(
write(myConn + " имеет недопустимый тип " + myConn.type);
)
// Отслеживать свойство type.
myConn.watch("type", alertme);
// Изменить значение.
myConn. type = null;
// Отменить отслеживание.
myConn.unwatch("type");
// Вновь изменить значение.
myConn.type = "Sybase";
</server>
oUU Часть III. Справочник no JavaScript
database.watch() ES3+
database.watch(свойство, функция)
t Метод watch() объекта database используется для включения отслеживания конкретно-
конкретного свойства, указанного в параметре свойство. Как только это свойство изменяется после
вызова метода watch(), вызывается функция, указанная в параметре функция.
^од в листинге 9.83 показывает, как при помощи метода watch() начать отслеживания
определенного пользователем свойства type.
Листинг 9.83. Пример использования метода watch()
<server>
// Определить прототипируемый метод,
function verifyODBC(){
// Проверить допустимость присваиваемого значения
// вновь созданному свойству.
if(this.type == "ODBC"){
return true;
}else{
return false;
}
}
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldValue, newValue)(
write (" ID (" + id + ") иэиенено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые метод и свойство объекта database,
database.prototype.type = null;
database.prototype.isODBC = verifyODBC;
/ / Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
// Используя уже определенный прототип,
// присвоить значение свойству type.
myConn.type = "Oracle";
// Проверить тип соединения на предмет допустимости,
if (myConn.isODBCO ) {
write (myConn + " has a valid type of " + myConn.type);
}else{
write (myConn + " has an invalid type of " + myConn.type) ;
}
// Отслеживать свойство type.
myConn.watch("type", alertme);
/ / Изменить значение.
myConn.type = null;
</server>
new DbPool ()
new DbPool(dbType, dblnstance, uld, pwd, dbName)
new DbPool(dbType, dblnstance, uld, pwd, dbName, maxConn)
new DbPool{dbType, dblnstance, uld, pwd, dbName, maxConn, commltFlag)
Объект DbPool хранит "пул" соединений, установленных с базой данных. Перед откры-
открытием соединения с базой данных и получением возможности выполнения запросов к ней
необходимо создать экземпляр этого объекта. После создания экземпляра соединения мож-
можно получать из пула по мере необходимости. Объект пула принимает все параметры, тре-
требуемые для создания соединения. Можно создать пул без указания каких-либо параметров,
однако параметры потребуется передать при попытке установки первого соединения.
Глава 9. Серверная сторона
801
Объект DbPool создается с применением одного из форматов, перечисленных при опи-
описании синтаксиса. Каждый параметр подробно описывается в табл. 9.11.
Таблица 9.11. Параметры объекта DbPool
Параметр Описание
dbType Тип базы данных. Возможные значения: ORACLE, SYBASE, INFORMIX, DB2
или ODBC.
dblnstance Имя экземпляра базы данных. В случае с ODBC используется имя,
указанное в записи DSN.
uid
Имя или идентификатор пользователя для подключения к базе данных.
pwd
Пароль пользователя, подключаемого к базе данных.
dbName Имя базы данных, в которой регистрируется пользователь. В случае с
подключениями к базам данных Oracle, DB2 и ODBC может передаваться
пустая строка (""). Для Oracle имя базы данных при установке соединений
задается в файле tnsnames.ora, а для соединений ODBC определяется с
помощью DSN. При установке соединения с базами данных DB2 имя базы
данных не используется, а ссылка производится через dblnstance.
maxConn Максимальное количество соединений в пуле. Фактически этот параметр
определяет количество соединений в пуле, которые могут быть открыты для
базы данных.
commitFlag Этот флаг определяет, будет ли фиксироваться отложенная транзакция в
случае освобождения соединения. Если этому флагу присвоено значение
false, будет выполняться откат транзакции. Если флагу присвоено значение
true, транзакция будет фиксироваться.
В зависимости от текущей базы данных, можно создать экземпляр данного объекта пу-
путем передачи ограниченного набора рассмотренных параметров, либо вовсе не передавать
параметры. Объект имеет методы, которые перечисляются в табл. 9.12.
Таблица 9.12. Методы объекта DbPool
Метод
Описание
connect() Выполняет подключение к выбранному пулу соединений с базой
данных.
connected()
Проверяет, остается ли пул подключенным к базе данных.
connection()
Выдает свободное соединение из пула.
DbPool()
Создает пул соединений с базой данных.
disconnect)
Отключает все соединения в пуле, установленные с базой данных.
majorErrorCode()
majorErrorMessage()
minorErrorCode()
minorErrorMessage()
Возвращает числовое значение кода основной ошибки, возвращенное
базой данных или ODBC.
Возвращает строковое значение основной ошибки, возвращенное
базой данных или ODBC.
Возвращает числовое значение кода вторичной ошибки, возвращенное
базой данных или ODBC.
Возвращает строковое значение вторичной ошибки, возвращенное
базой данных или ODBC.
storedProcArgs()
Создает прототип для хранимых процедур DB2, ODBC или Sybase.
802 Часть III. Справочник по JavaScript
Метод Описание
toStrtng Возвращает строковое представление указанного объекта.
unwatch() Прекращает отслеживание конкретного свойства.
watch() Начинает отслеживание конкретного свойства.
Код в листинге 9.84 создает пул соединений с базой данных Oracle, а также инициали-
инициализирует соединение из данного пула, используя при этом переданные идентификатор
(UID) и имя пользователя. Далее выполняется запрос (основанный на UID) к базе дан-
данных для поиска сведений о пользователе, после чего обновляется имя пользователя. Если
соединение не установлено, на экране отображаются код ошибки вместе с соответству-
соответствующим сообщением.
Листинг S.84. Создание и использование объекта DbPool
<server>
// Присвоить свойствам объекта client переданные ID
// и имя пользователя,
client.uid = request.uid;
client.name = request.name;
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if(myConn)(
//Запустить новую SQL-транзакцию для выполнения оператора SELECT
myConn.beginTransaction();
var currRow = myConn.cursor('SELECT * FROM employees
WHERE uid = ' + client.uid);
// Переместить фокус на эту строку, изменить значение столбца
// name для текущего пользователя и обновить всю строку.
currRow.next();
currRow.name = client.name;
currRow.updateRow("employees");
// Закрыть курсор.
currRow.close();
// Если при установке соединения произошел сбой, отобразить
// сообщение об ошибке.
}else{
write('Ошибка ('+myConn.majorErrorCode()+'): •'
+ myConn.majorErrorMessage();
}
</server>
DbPool. connect() ES3+
dbpool.connect{dbType,
dbpool.connect(dbType,
dbpool.connect(dbType,
commitFlag)
Sq5| Метод connect объекта dbPool представляет собой фактический метод, осуществляющий
"* подключение к базе данных в случае, если соединение не было установлено при ини-
инициализации исходного объекта DbPool. Параметры этого метода описываются в табл. 9.13.
Таблица 9.13. Параметры метода connect
Параметр Описание
dbType Тип базы данных. Возможные значения: ORACLE, SYBASE, INFORMIX, DB2
или ODBC.
dblnstance,
dblnstance,
dblnstance,
uid,
uid,
uid.
pwd,
pwd.
pwd.
dbName)
dbName,
dbName,
maxConn)
maxConn,
Глава 9. Серверная сторона
Параметр
dblnstance
uid
pwd
Описание
Имя экземпляра базы данных. В случае с ODBC используется
в записи DSN.
Имя или идентификатор пользователя для подключения к базе
Пароль пользователя, подключаемого к базе данных.
803
имя, указанное
данных.
dbName Имя базы данных, в которой регистрируется пользователь. В случае с
подключениями к базам данных Oracle, DB2 и ODBC может передаваться
пустая строка (""). Для Oracle имя базы данных при установке соединений
задается в файле tnsnames.ora, а для соединений ODBC определяется с
помощью DSN. При установке соединения с базами данных DB2 имя базы
данных не используется, а ссылка производится через dblnstance.
maxConn Максимальное количество соединений в пуле. Фактически этот параметр
определяет количество соединений в пуле, которые могут быть открыты для
базы данных.
commitFlag Этот флаг определяет, будет ли фиксироваться отложенная транзакция в
случае освобождения соединения. Если этому флагу присвоено значение
false, будет выполняться откат транзакции. Если флагу присвоено значение
true, транзакция будет фиксироваться.
В зависимости от текущей базы данных, можно создавать экземпляр объекта путем пе-
передачи ограниченного набора этих параметров. Для получения дополнительных сведений
по этому вопросу обратитесь к документации по базе данных.
Код в листинге 9.85 создает пул соединений. Затем при помощи метода connect() откры-
вается пул соединений с базой данных Oracle. Если соединение не установлено, на эк-
экране отображается код ошибки вместе с соответствующим сообщением.
Листинг 9.85. Подключение к базе денных с помощью метода connect!)
<server>
// Присвоить свойствам объекта client переданные ID
// и имя пользователя.
client.uid = request.uid;
client.name = request.name;
// Создать пул соединений,
var myPool = new DbPool () ;
// Создать соединение для пула.
myPool.connect("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if(myConn.connected())(
// Любые действия над содержимым базы данных
// Если произошел сбой при соединении, вывести сообщение об ошибке
}else{
write('Ошибка ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
</server>
DbPool.connected ES3+
dbpool.connected()
Метод connected() объекта DbPool сообщает о том, остается ли по-прежнему активным
пул соединений с базой данных.
804 Часть III. Справочник по JavaScript
Код в листинге 9.86 создает пул соединений, а затем извлекает соединение из пула для
дальнейшей обработки. После установки соединения вызывается любой код, находящийся
в данном разделе. Если при установке соединения произошел сбой, на страницу выво-
выводится ошибка.
Листинг 9.86. Тестирование соединения с помощью метода connected!)
<server>
// Создать пул соединений.уSID", "myApp", "appsPWD", "myTNS");
// Открыть соединение us пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке.
var myConn = myPool.connection('Employees', 15);
if (myConn.connected()) {
// Вы подключены, посему выполняйте требуемые задачи.
}else{
// Ошибка соединения с базой данных.
write('Ошибка ('+myConn.majorErrorCode() + '): ' '
+ myConn.majorErrorMessage();
}
</server>
DbPool.connection ES3+
dbpool.connection(имя, количестшо_секунд);
k Метод connection() объекта DbPool получает соединение из пула. Соединение возвраща-
возвращается из метода и может сохраняться в переменной с целью дальнейшего использования.
Метод принимает два параметра. Первый параметр, имя, представляет собой имя, ко-
которое устанавливается для соединения. Поскольку соединение, как правило, сохраняет-
сохраняется в некоторой переменной, это имя служит, в основном, для целей отладки. Во вто-
втором параметре, каличество_секунд, передается промежуток времени в секундах, который
выделяется под ожидание самого соединения.
Код в листинге 9.87 создает пул соединений с базой данных Oracle и затем инициали-
инициализирует соединение из пула, используя переданные идентификатор (UID) и имя
пользователя. Далее выполняется запрос (основанный на UID) к базе данных для поиска
сведений о пользователе, после чего обновляется имя пользователя. Если соединение не ус-
установлено, на экране отображаются код ошибки вместе с соответствующим сообщением.
Листинг 9.87. Использование метода connection!)
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp","appsPWD","myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if (myConn.connected()) {
// Вы подключены, посему выполняйте требуемые задачи.
}else{
// Ошибка соединения с базой данных.
write('Ошибка ('+myConn.majorErrorCode()+'): '"
+ myConn.majorErrorMessage();
}
</server>
DbPool.DbPool()
new DbPool()
new DbPool(dbType, dblnstance, uid, pwd, dbName)
new DbPool (dbType, dblnstance, uid, pwd, dbName, maxConn)
new DbPool(dbType, dblnstance, uid, pwd, dbName, maxConn,
commitFlag)
Глава 9. Серверная сторона
805
SiS| Метод DbPooI() объекта DbPool является базовым методом, выполняющим создание
« "пула" соединений с базой данных. Создание объекта DbPool реализуется с помощью
формата, указанного в определении синтаксиса. Каждый параметр подробно описывает-
описывается в табл. 9.14.
Таблица 9.14. Параметры метода DbPool
Параметр Описание
dbType Тип базы данных. Возможные значения: ORACLE, SYBASE, INFORMIX, DB2 или
ODBC.
dblnstance Имя экземпляра базы данных. В случае с ODBC используется имя, указанное в
записи DSN.
uid Имя или идентификатор пользователя для подключения к базе данных.
pwd Пароль пользователя, подключаемого к базе данных.
dbName Имя базы данных, в которой регистрируется пользователь. В случае
подключений к базам данных Oracle, DB2 и ODBC может использоваться пустая
строка (""). Для Oracle имя базы данных при установке соединений задается в
файле tnsnames.ora, а для ODBC-соединений оно определяется с помощью
DSN. При установке соединения с базами данных DB2 имя базы данных не
используется, а ссылка производится через dblnstance.
maxConn Максимальное количество соединений в пуле. Фактически этот параметр
определяет количество соединений в пуле, которые могут быть открыты для
базы данных.
commitFlag Этот флаг определяет, будет ли фиксироваться отложенная транзакция в
случае освобождения соединения. Если этому флагу присвоено значение false,
выполняется откат транзакции. Если флагу присвоено значение true,
транзакция фиксируется.
В зависимости от текущей базы данных, можно создавать экземпляр объекта путем пе-
передачи ограниченного набора этих параметров либо вообще не передавать параметры.
Код в листинге 9.88 создает пул соединений, а затем извлекает соединение из пула для
дальнейшей обработки. После установки соединения можно выполнять любой код, оп-
определенный в данном разделе. При сбое соединения на страницу выводится ошибка.
Листинг 9.88. Метод DbPoolf) является ключевым методом, используемым после
создания экземпляра объектв DbPool
<server>
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD",
"myTNS") ;
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if (myConn.connected()) {
// Вы подключены, стало быть, выполняйте требуемые задачи.
}else{
// Ошибка соединения с базой данных,
write('Ошибка ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
</server>
О06 Часть III. Справочник по JavaScript
DbPool.disconnect) ES3+
dbpool.disconnect
# Метод disconnect() объекта DbPool отключает все соединения, установленные с базой
данных внутри данного пула.
г/4 Код в листинге 9.89 создает соединение с базой данных Oracle. В следующей строке кода
£^ происходит разрыв соединения с помошью метода disconnect().
Листинг 9.89. Отключение от базы данных с помощью метода disconnect^)
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE", "mySID", "myApp","appsPWD","myTNS");
// Разорвать соединения.
myPool.disconnect() ;
</server>
DbPool.majorErrorCode() ES3+
dbpool.majorErrorCode()
# Метод majorErrorCodeO объекта DbPool содержит числовой код ошибки ODBC или базы
данных, возвращаемый в случае возникновения ошибки.
Код в листинге 9.90 демонстрирует создание пула соединений, а также проверку на пред-
предмет установки соединения. Если результаты выполнения теста были неудовлетворительны-
неудовлетворительными, метод majorErrorCodeO применяется для вывода на страницу сведений об ошибке.
Листинг 9.90. Использование метода majorErrorCodeO для выборки информации об
ошибке соединения с бвзой данных
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
if (myPool.connected()) {
// Вы подключены, стало быть, выполняйте требуемые задачи.
}else{
// Ошибка при установке соединения с базой данных,
write('Ошибка('+myPool.majorErrorCode()+ '): •
+ myPool.majorErrorMessage);
}
</server>
DbPool. majorErrorMessage() ES3+
dbpool.majorErrorMessage()
fe Метод majorErrorMessageO объекта DbPool содержит строковое сообщение об ошибке
ODBC или базы данных, которое возвращается в случае возникновения ошибки.
Код в листинге 9.91 демонстрирует создание пула соединений и проверки установлен-
установленного соединения. Если результаты тестирования были неудовлетворительными, для вы-
вывода на страницу сообщения об ошибке используется метод majorErrorMessageO.
Листинг 9.91. Использоввние методв majorErrorMessageO для выборки
информации об ошибке соединения с базой данных.
<server>
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD",
"myTNS") ;
if (myPool.connected()) {
// Вы подключены, посему приступайте к выполнению своих задач.
Глаеа 9. Серверная сторона О О /
}else{
// Ошибка при установке соединения с базой данных.
write('Error ('+myPool.majorErrorCode()+'): '
+ myPool.majorErrorMessage);
}
</server>
DbPool.minorErrorCode() ES2+
dbpool.minorErrorCode()
# Метод minorErrorCodeO объекта DbPool содержит числовой код вторичной ошибки
ODBC или базы данных, возвращаемый в случае возникновения ошибки.
Код в листинге 9.92 демонстрирует создание пула соединений и проверки установлен-
установленного соединения. Если результаты тестирования были неудовлетворительными, для вы-
вывода на страницу сообщения об ошибке используется метод minorErrorCode().
Листинг 9.92. Использование метода minorErrorCodeO для выборки информации о
вторичной ошибке соединения с базой данных
<server>
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
if (myPool.connected()) {
// Вы подключены, посему приступайте к выполнению своих задач.
}else{
// Ошибка при установке соединения с базой данных.
write('Ошибка ( ЧтуPool.minorErrorCode() + '): '
+ myPool.minorErrorMessage);
}
</server>
database.majorErrorMessage() ES3+
database.minorErrorMessage()
& Метод minorErrorMessage() объекта DbPool содержит строковое сообщение о вторичной
ошибке ODBC или базы данных, которое возвращается в случае возникновения ошиб-
ошибки.
Код в листинге 9.93 демонстрирует создание пула соединений и проверки установлен-
установленного соединения. Если результаты тестирования были неудовлетворительными, для вы-
вывода на страницу сообщения об ошибке используется метод minorErrorMessage().
Листинг 9.93. Использование метода minorErrorMessageO для выборки
информации об ошибке соединения с базой данных
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
if (myPool.connected()) {
//Вы подключены,стало быть,приступайте к выполнению своих задач
}else{
//Ошибка при установке соединения с базой данных.
write('Ошибка ('+myPool.minorErrorCode () + '): '
+ myPool.minorErrorMessage);
}
</server>
DbPool.prototype ES3+
dbpool.prototype.метод = имя
dbpool.prototype.свойство = значение
808 Часть III. Справочник по JaveScript
^Si Свойство prototype объекта DbPool позволяет добавлять к объекту DbPool методы и свой-
«< ства. Если добавляется метод, то тем самым устанавливается экземпляр, соответствую-
соответствующий параметру имя ранее определенного метода.
Код в листинге 9.94 создает новое свойство и метод объекта DbPool. Создается экземп-
экземпляр и устанавливается новое свойство. Затем для проверки нового свойства вызывается
новый метод и в случае некорректности (которая может иметь место) на странице ото-
отображается сообщение об ошибке.
Листинг 9.94. Применение свойства prototype для создания нового свойства и метода
<server>
// Определить прототипируемый метод,
function verifyOracle(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "Oracle")!
return true ;
}else{
return false;
}
}
// Создать новые свойство и метод объекта DbPool.
DbPool.prototype.type = null;
DbPool.prototype.isOracle = verifyOracle;
// Создать пул соединений.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Используя уже определенный прототип, установить значение
/ / свойства type.
myPool.type = "Oracle";
// Проверить тип соединения на предмет его допустимости,
if(myPool.isOracle()){
write(myPool + " имеет допустимый тип " + myPool.type);
}else{
write(myPool + " имеет недопустимый тип " + myPool.type);
}
</server>
DbPool. stored ProcArgs() ES3+
DbPool.storedProcArgs(имя_процедуры)
DbPool. storedProcArgs (имя_процедуры, Tjtnl, witn2, ... , witnN)
k Метод StoredProc() объекта DbPool создает объект Stproc, позволяющий выполнять хра-
хранимые процедуры, специфичные для баз данных DB2, ODBC и Sybase, с применени-
применением соединения, через которое этот метод был вызван. Для случая баз данных Informix и
Oracle этот метод никакого эффекта не дает. Разница между этим методом и методом
storedProc() заключается в том, что данный метод передает в параметрах типы аргументов.
В качестве типов могут использоваться IN, OUT или INOUT. Ниже приводится пример
передачи этих типов:
var myStproc = myConn.storedProc("sp_employees", "INOUT", "OUT");
Область действия этой процедуры ограничивается текущей страницей. Методы объекта
Stproc также должны вызываться на текущей странице. Если это невозможно, для обес-
обеспечения доступа к требуемым свойствам на последующих страницах необходимо созда-
создавать новые объекты.
Код в листинге 9.95 создает пул соединений с базой данных. Вызывается метод
storedProc(), который применяется для выполнения фиктивной хранимой процедуры
sp_employees. Метод storedProcArgs() используется для указания типов аргументов.
Глава 9. Сервернея сторона иОУ
Листинг 9.95. Использование метода storedProcArgst) для установки типов
аргументов в хранимой процедуре
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Установить аргументы хранимой процедуры.
var myStprocArgs=myPool.storedProcArgs("sp_employees", "IN", "INOUT");
var myStproc = myPool.storedProc("sp_employees", 3, "%John%");
</server>
database.toStringO ES3+
dbpool.toString()
t Метод toStringO объекта DbPool возвращает строковое представление объекта. Если вы-
вызывается экземпляр объекта DbPool, возвращается строка в следующем формате:
"dbName" "uid" "dbType" "dblnstance"
Если параметр неизвестен, возвращается пустая строка. Таблица 9.15 описывает возвра-
возвращаемые значения.
Таблица 9.15. Возвращаемые значения метода toStringO
Метод Описание
dbName Имя базы данных, в которой необходимо зарегистрироваться. В случае с
соединениями Oracle, DB2 и ODBC используется пустая строка (""). В Oracle
имя базы данных для этих соединений устанавливается в файле tnsnames.ora и
определяется с помощью DSN- и ODBC-соединений. В DB2 имя базы данных
отсутствует и ссылки на нее осуществляются только через dblnstance.
uid Имя или идентификатор пользователя, для которого будут устанавливаться
соединения.
dbType Тип базы данных. Возможные значения: ORACLE, SYBASE, INFORMIX, DB2 или
ODBC.
dblnstance Имя экземпляра базы данных. В случае с ODBC используется имя, указанное в
записи DSN.
Код в листинге 9.96 создает экземпляр объекта DbPool. После завершения создания при по-
моши метода write() на страницу выводится соответствующее строковое представление.
Листинг 9.96. Вывод на страницу результатов вызова метода toStringO
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Если соединение не может быть
// установлено, вывести сообщение об ошибке,
var myConn = myPool.connection('Employees', 15);
if(myConn.connected()){
// Вывести на страницу строковое представление объекта,
write(myPool.toString());
// Если произошел сбой при соединении, вывести сообщение об ошибке
}else{
write('Ошибка ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
// Освободить соединение.
myConn.release();
</server>
О I U Часть III. Справочник по JavaScript
dbpool.unwatch() ES3+
dbpool.unwatch(свойство)
# Метод unwatch() объекта database используется для прекращения отслеживания конкрет-
конкретного свойства, указанного в параметре свойство.
Код в листинге 9.97 показывает, как при помощи метода unwatch() прекратить отсле-
отслеживание определенного пользователем свойства type.
Листинг 9.97. Пример применения метода unwatcht)
<server>
// Определить прототипируемый метод,
function verifyOracle (){
// Проверить допустимость присваиваемого значения вновь
// созданному свойству.
if(this.type == "Oracle"){
return true;
}else{
return false;
}
}
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые метод и свойство объекта DbPool.
DbPool.prototype.type = null;
DbPool.prototype.isOracle = verifyOracle;
// Открыть соединение.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Используя уже определенный прототип,
/ / присвоить значение свойству type.
myPool.type = "Oracle";
// Отслеживать свойство type.
myPool.watch("type", alertme);
// Проверить тип соединения на предмет допустимости.
if(myPool.isOracle() ) {
write(myPool + " имеет допустимый тип " + myPool.type);
}else{
write(myPool + " имеет недопустимый тип " + myPool.type);
}
// Изменить значение.
myPool.type = null;
// Отменить отслеживание.
myPool.unwatch("type");
// Вновь изменить значение.
myPool.type = "Sybase";
</server>
database.watch() ES3+
DbPool.wa tch(свойство, функция)
Метод watch() объекта DbPool используется для включения отслеживания конкретного
свойства, указанного в параметре свойство. Как только это свойство изменяется после
вызова метода watcb(), вызывается функция, указанная в параметре функция.
Код в листинге 9.98 демонстрирует использование метода vratch() для организации от-
слеживания определенного пользователем свойства type.
Глава 9. Серверная стороне О I I
Листинг 9.98. Пример использования метода watch()
<server>
// Определить прототипируемый метод,
function verifyOracle(){
// Проверить допустимость присваиваемого значения вновь
// созданному свойству.
if(this.type == "Oracle"){
return true ;
}else{
return false;
}
}
// Функция, вызываемая в случае изменения значения свойства,
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
)
// Создать новые метод и свойство объекта DbPool.
DbPool.prototype.type = null;
DbPool.prototype.isOracle = verifyOracle;
/ / Открыть соединение.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Используя уже определенный прототип,
// присвоить значение свойству type.
myPool.type = "Oracle";
// Отслеживать свойство type.
myPool.watch("type", alertme);
// Проверить тип соединения на предмет допустимости.
if(myPool.isOracle()){
write(myPool + " имеет допустимый тип " + myPool.type);
}else{
write(myPool + " имеет недопустимый тип " + myPool.type);
}
/ / Изменить значение.
myPool.type = null;
</server>
debug()
debug(выражение)
debug(переменная)
Функция debug() представляет собой функцию верхнего уровня, которая не связана с
каким-либо основным объектом. Эта функция применяется для отображения значения
выражения или переменной в окне Trace Information (Трассировочная информация) во
время выполнения приложения во окне отладки диспетчера приложений JavaScript
Application Manager.
Код в листинге 9.99, в случае выполнения в среде отладчика JavaScript Application
Manager, будет отображать значение requesLname.
Листинг 9.99. Использование функции debugO для вывода информации в окно
Trace Information
<server>
// Отображение значения имени name,
// переданного в приложение в запросе request.
debug(request.name);
</server>
812
Часть III. Справочник по JavaScript
deleteResponseHeader() ES3+
deleteResponseHeader(ключ)
ф& Функция deleteResponseHeader() является функцией верхнего уровня, которая не свя-
» зана с каким-либо основным объектом. Эта функция используется для удаления полей
в заголовке HTTP перед его отправкой обратно клиенту. Поскольку когда фактический
заголовок отправляется в связи с основной частью данных, следует убедиться в том, что
эти поля были удалены перед вызовом функций flush() или redirect().
ПРИМЕЧАНИЕ
Механизм времени выполнения JavaScript очищает буфер вывода
после генерации содержимого объемом 64 Кб. Необходимо убедиться, что перед этим
была вызвана функция deleteResponseHeader.
Код в листинге 9.100 демонстрирует удаление поля заголовка типа содержимого (content-
type) перед его отправкой браузеру.
Листинг 9.100
<server>
// Удалить поле заголовка.
deleteResponseHeader("content-type");
</server>
_____ __
new File(путь)
h Объект File позволяет выполнять самые различные задачи, такие как чтение и запись
файла на диск. Сам объект содержит множество методов и свойство prototype, позволя-
позволяющее создавать новые свойства и методы объекта. В табл. 9.16 перечислены все доступ-
доступные методы, а также краткие их описания. Экземпляр этого объекта создается путем про-
простой передачи в параметре пути для создаваемого или считываемого файла.
Таблица 9.16. Методы объекта File
Метод
Описание
byteToStringO Преобразует числовое значение количества переданных байтов в строковый
эквивалент.
clearError()
Очищает статус ошибки для методов File.eof() и File.error().
close()
Закрывает открытый файл.
eof()
Возвращает true при нахождении в конце открытого файла.
error()
Возвращает текущую ошибку.
existsQ
Проверяет, существует ли обрабатываемый файл.
flush()
Записывает содержимое текущего буфера в файл.
getl_ength()
Возвращает длину файл.
getPosition() Возвращает текущую позицию в файле.
ореп()
Открывает файл.
read()
Считывает указанное количество символов в строку.
readByteQ
Считывает следующий байт, или символ, из файла.
readln()
Считывает текущую строку, начиная с текущей позиции в файле.
setPosition() Устанавливает позицию указателя в файле.
Глава 9. Серверная сторона
813
Метод
stringToByte()
ип watch ()
watch()
write Byte ()
writelnO
Описание
Преобразует переданную строку в ее байтовый числовой
Отключает отслеживание указанного свойства.
Включает отслеживание указанного свойства.
Записывает байт данных в двоичный открытый файл.
Записывает строку и символ перевода строки в открытый
эквивалент.
файл.
Применение объекта File является достаточно простым. Поддерживаемые методы позво-
позволяют выполнять различные операции в отношении файлов в текущей файловой систе-
системе. Часть этих функциональных свойств, связанных с обработкой файлов, позволяет ука-
указывать метод открытия файлов. Файлы могут быть открыты в двоичном режиме для
считывания, записи или добавления данных. Соответствующие параметры указываются
для метода ореп() в следующем виде:
myFile.open("параметр")
В табл. 9.17 перечислены параметры вместе с их описаниями.
Таблица 9.17. Параметры метода орепО
Параметр Описание
а Этот параметр открывает файл в режиме добавления записей. Если файл не
существует, он создается. При этом всегда возвращается true.
а+ Этот параметр открывает файл в режиме чтения и добавления записей. Если
файл не существует, он создается. При этом всегда возвращается true.
г Этот параметр открывает файл в режиме чтения. Если файл существует,
возвращается значение true, в противном случае — false.
г+ Этот параметр открывает файл в режиме чтения и записи. Если файл
существует, возвращается значение true, в противном случае — false.
Чтение и запись выполняются с начала файла.
w Этот параметр открывает файл в режиме записи. Если файл не существует,
он создается. Если файл существует, он переписывается. В этом случае
всегда возвращается true.
w+ Этот параметр открывает файл для чтения и записи. Если файл не
существует, он создается. Если файл существует, он переписывается. Этот
метод всегда возвращает значение true.
параметрЬ Добавление литеры b в конце каждого параметра указывает на выполнение
операции в двоичном режиме.
Код в листинге 9.101 отображает меню параметров, с помошыо которых пользователь
может выбрать файл для чтения. Как только будут отправлены данные, внесенные в фор-
форму, сценарий считывает файл и отображает его содержимое на странице.
Листинг 9.101. Использование объекта File
<html>
<head>
<Ьз.1:1е>Испольэование объекта File</title>
</head>
<body>
<server>
// Проверка, были ли отправлены данные,
// либо требуется вывести форму для заполнения,
if(request.method == "POST"){
// Создать экземпляр объекта File и передать ему файл, указанный
// пользователем для просмотра.
var myLog = new File(request.file);
// Попытаться открыть файл,
if(!myLog.open("r")){
О \ 4 Часть III. Справочник по JavaScript
// Если возникла ошибка, сообщить об этом пользователю,
write("Ошибка при открытии файла: " + request.file);
>else{
//При отсутствии ошибки открыть файл и отобразить его содержимое
write('<ЬЗ>Содержимое файла '+request.file+1 следующее:</h3>');
while(!myLog.eof()){
write(myLog.readln());
}
}
}else{
// Если эта страница была вызвана, вывести на страницу окна
// выбора, из которого пользователь сможет выбрать для просмотра
/ / требуемый файл.
write('<form name="myForm" method="post">');
write('<select name="file">');
write('<option value="/logs/admin.log"Административный журнал
</option>') ;
write('<option value="/logs/user.1од">Пользовательский журнал
</option>");
write('<option value="/logs/error.1од">Журнал omu6oK</option>');
write ('</select>') ,-
write('<input type="submit" value="IIpocMOTp журнала">');
write('</form>');
}
</server>
</body>
</html>
File.ByteToStringO
File.byteToString(число)
Метод byteToStringO объекта File используется для преобразования переданного число-
числового значения в его ASCII-эквивалент. Если методу не передается числовое значение,
возвращается пустая строка.
Код в листинге 9.102 открывает два файла, один в режиме чтения, а второй в режиме
добавления записей. Байты из первого файла считываются с помощью метода readByteQ,
после чего преобразуются обратно в строку символов с помошью метода byteToStringO
и записываются во второй файл. После завершения выполнения процесса оба файла зак-
закрываются.
Листинг 9.102. Использование метода byteToStringO для преобразования
считываемых байтов в строки
<server>
// Открыть файл журнала и итоговый файл.
var myLog = new File("/data/logs/today.log") ;
var mySummary = new File("/data/logs/summary.log");
// Открыть файл журнала для чтения и итоговый файл для добавления
данных.
myLog.open("г");
mySummary.open("a") ;
// Добавить содержимое файла журнала в итоговый файл,
while ('myLog.eof()){
myBytes = File.byteToString(myLog.readByte());
mySummary.write(myBytes);
)
// Закрыть файлы.
myLog.close () ;
mySummary.close() ;
</server>
Глава 9. Сераерная сторона О 1 3
File.clearError()
file.clearError()
Метод dearError() объекта File очищает состояние ошибки файла и значение, возвра-
возвращаемое методом eof().
Код в листинге 9.103 открывает файл для считывания. Если операция возвращает ошибку,
эта ошибка выводится на страницу. В случае возникновения ошибки после ее записи
выполняется операция очистки.
Листинг 9.103. Использование метода clearErrorO для очистки файловых ошибок
<server>
// Открыть файл журнала.
var myLog = new File("/data/logs/today.log");
// Открыть файл журнала для чтения.
myLog.open("г");
if (myLog.error () == О) {
// Выполнить файловые операции.
}else{
// Вывести сведения об ошибке.
write('Ошибка: ' + myLog.error());
// Очистить состояние ошибки.
myLog.clearError()
}
// Закрыть файл.
myLog.close();
</server>
File.close
file.close()
# Метод dose() объекта File закрывает файл, для которого он был вызван. В случае успеш-
успешного применения метода возвращается значение true, в случае неудачного — false.
.•«Код в листинге 9.104 демонстрирует, как открывать и закрывать файл.
Листинг 9.104. Закрытие файла с помощью метода closed
<server>
// Открыть файл журнала.
var myLog = new File("/data/logs/today.log") ;
/ / Открыть файл журнала для чтения.
myLog.open("г");
// Закрыть файл.
myLog.close();
</server>
File.constructor ES2+
file.constructor
$S| Свойство constructor объекта File определяет функцию, создающую объект.
/ Код в листинге 9.105 демонстрирует пример использования свойства constructor.
Листинг 9.105. Пример использования свойства constructor
<server>
// Открыть файл журнала.
var myLog = new File("/data/logs/today.log");
// Открыть файл журнала для чтения.
myLog.open ("г") ;
if(myLog.constructor == File){
write("Object created");
DID Часть III. Справочник по JavaScript
// Закрыть файл.
myLog.close () ;
</server>
File.eof() ES2+
file.eof{)
Метод eof() объекта File возвращает значение true, если указатель файла находится в
конечной позиции. В других случаях возвращается значение false.
Код в листинге 9.106 считывает файл и выводит его содержимое на страницу до тех пор,
пока не встретится конец файла, обнаруженный с помощью метода eof().
Листинг 9.106. Операция считывания из файла, выполняемая до момента
достижения конца файла, обнаруживаемого с помощью метода eof()
<server>
// Открыть файл журнала для чтения.
var myLog = new File("/data/logs/today.log");
myLog.open("r");
II Вывести на страницу содержимое файла журнала,
while (!myLog.eof()){
myBytes = File.byteToString(myLog.readByte());
write(myBytes);
}
// Закрыть файл.
myLog.close() ;
</server>
Fjie.error()
file.error()
Метод errorQ объекта File() возвращает код ошибки операционной системы в случае,
когда возникает ошибка при открытии файла. Если ошибок не происходит, возвраща-
возвращается 0. Если файл, для которого вызывается метод, не может быть открыт, возвращает-
возвращается -1.
Код в листинге 9.107 открывает файл для чтения. Если лри выполнении этой операции
возникли какие-либо проблемы, на страницу пользователя выводится ошибка.
Листинг 9.107. Использование метода еггог() при получении доступа к ошибке,
выводимой на страницу пользователя
<server>
// Открыть файл журнала.
var myLog = new File("/data/logs/today.log");
// Открыть файл журнала для чтения.
myLog.open("г") ;
if (myLog.error () ==0) {
// Выполнить файловые операции.
}else{
// Вывести информацию об ошибке.
write('Ошибка: ' + myLog.error());
// Очистить состояние ошибки.
myLog.clearError()
}
// Закрыть файл.
myLog.close();
</server>
File.existsO
file.exists()
Глава 9. Сарварная сторона 01 /
# Метод exists() объекта File возвращает булево значение, выполняя проверку существо-
существования файла, для которого он был вызван. Если файл существует, метод возвращает
значение true. Если же файл не существует, возвращается значение false.
Код в листинге 9.108 открывает файл, проверяя при этом факт его существования.
Листинг 9.108. Использование метода existsO
<server>
// Открыть файл журнала.
var myLog = new File("/data/logs/today.log");
// Проверить факт существования файла.
if(myLog.exists()){
write('Файл существует');
>else{
write('Файл не существует');
}
</server>
_______ __
file.flush()
к Метод flush() объекта File используется для записи буферизованной информации в файл.
При использовании методов write(), witeln() и writeByte() эта информация помеща-
помещается в буфер. Обратите внимание, что этот метод отличается от функции верхнего уровня
flush().
Код в листинге 9.109 открывает один файл для чтения, а второй — для записи. Если
файл, предназначенный для чтения, существует, строка записывается в другой файл.
Метод flush() применяется для записи буферизованной информации в файл.
Листинг 9.109. Использование метода flushf)
<server>
// Открыть файл журнала.
var myLog = new File("/data/logs/today.log") ;
var mySununary = new File("/data/logs/summary.log");
myLog.open("r");
mySuinmary. open ("w") ;
// Проверить факт существования файла.
if(myLog.exists()){
mySununary.write('Файл существует');
>else{
mySummary.write('Файл не существует');
}
// Записать данные us буфера в файл.
mySununary. f lush О ;
// Закрыть файл.
myLog.close () ;
mySummary.close();
</server>
File.getLength() ES2+
file.getLength()
Метод getLength() объекта File возвращает количество символов в текстовом файле либо
количество байт в двоичном файле. Если результат выполнения метода оказался неудач-
неудачным, возвращается -1.
Код в листинге 9.110 открывает один файл для чтения, а второй — для записи. Метод
getLength() используется в цикле for для определения момента прекращения считыва-
считывания информации из файла.
818 Часть III. Справочник no JavaScript
Листинг 9.110. Использование метода getLength()
<server>
// Открыть файлы.
var myLog = new File("/data/logs/today.log");
var mySummary = new File("/data/logs/summary.log");
myLog.open("r");
mySummary.open("w");
// Вывести на страницу содержимое файла журнала,
for (var i = 0; i <= myLog.getLength (); i++) {
myBytes = File.byteToString(myLog.readByte());
mySummary.write(myBytes);
}
mySummary.flush();
/ / Закрыть файлы.
myLog.close();
mySummary.close() ;
</server>
FHe.getPosition() ES2+
file.getPosition()
# Метод getPosition() объекта File возвращает позицию текущего указателя в файле (от-
(отсчет начинается с нуля). Если указатель находится на первом символе, возвращается 0.
В случае возникновения ошибки возвращается -1.
Код в листинге 9.111 выполняет цикл по символам, выводя каждый в новой строке
вместе с его позицией.
Листинг 9.111. Использование метода getPositiont)
<server>
// Открыть файлы.
var myLog = new File("/data/logs/today.log");
var mySummary = new File("/data/logs/summary.log");
myLog.open("r");
mySummary.open("w");
// Вывести на страницу содержимое файла журнала.
for (var i = 0; i <= myLog. getLength (); i++) {
myBytes = File.byteToString(myLog.readByte() ) ;
mySummary.write('В позиции ' + mySummary.getPosition()
+ ' находится символ: • + myBytes + '<br>');
}
mySummary.flush();
// Закрытие файлов.
myLog.close();
mySummary.close();
</server>
File.open()
file, open (параметр)
йд& Метод ореп() объекта File используется для открытия файла с целью выполнения one-
one's раций чтения, записи и/или добавления данных. При успешном выполнении метода воз-
возвращается значение true, в случае неудачи — значение false. Передаваемые параметры оп-
определяют режим, в котором находится открытый файл. Все они перечислены в табл. 9.18.
Таблица 9.18. Параметры метода ореп()
Параметр Описание
а Этот параметр открывает файл в режиме добавления записей. Если файл не
существует, он создается. При этом всегда возвращается true.
а+ Этот параметр открывает файл в режиме чтения и добавления записей. Если
файл не существует, он создается. При этом всегда возвращается true.
Глава 9. Серверная сторона О I У
Параметр Описание
г Этот параметр открывает файл в режиме чтения. Если файл существует,
возвращается значение true, в противном случае — false.
г+ Этот параметр открывает файл в режиме чтения и записи. Если файл
существует, возвращается значение true, в противном случае — false.
Чтение и запись выполняются с начала файла.
w Этот параметр открывает файл в режиме записи. Если файл не существует,
он создается. Если файл существует, он переписывается. В этом случае
всегда возвращается true.
w+ Этот параметр открывает файл для чтения и записи. Если файл не
существует, он создается. Если файл существует, он переписывается. Этот
метод всегда возвращает значение true.
параметрЬ Добавление литеры b в конце каждого параметра указывает на выполнение
операции в двоичном режиме.
Код в листинге 9.112 демонстрирует открытие файла в режиме чтения.
Листинг 9.112. Использование метода ореп() для открытия файла
<server>
// Инициализировать файл.
var myLog = new File("/data/logs/today.log");
// Открыть файл в режиме чтения.
myLog.open("г");
// Закрыть файл.
myLog.close();
</server>
File.prototype ES3+
file.prototype.метод = имя
fi 1 e. p г о to type . свойство = зна чтение
jj| Свойство prototype объекта File позволяет добавлять методы и свойства в объект File. Если
добавляется метод, то тем самым устанавливается экземпляр, соответствующий параметру
имя ранее определенного метода.
Код в листинге 9.113 создает новое свойство и метод объекта File. При этом создается
экземпляр и устанавливается новое свойство. Для проверки свойства вызывается новый
метод, и если результаты проверки оказались неудачными, на страницу выводится со-
сообщение об ошибке.
Листинг 9.113. Использование свойства prototype для создания нового свойства и
метода
<server>
// Определить прототипируемый метод.
function verifyTEXT(){
// Проверить, назначается ли добавленному свойству type
// допустимое Значение.
if(this.type == "text"){
return true ;
>else<
return false;
}
}
// Создание нового свойства и метода
File.prototype.type = null;
File.prototype.isText = verifyTEXT;
// Инициализировать файл.
var myLog = new File("/data/logs/today.log");
// Открыть файл в режиме чтения.
myLog.open("г") ;
О_0 Часть III. Справочник по JavaScript
// Используя уже определенный прототип,
// установить значение свойства type.
myLog.type = "text";
// Проверить допустимость типа файла,
if(myLog.isText()){
write(myLog + " имеет допустимый тип " + myLog.type);
}else{
write(myLog + " имеет недопустимый тип " + myLog.type);
}
</server>
______ __
fxle.read(число)
# Метод read() объекта File начинает оперировать с текущего указателя в файле, а затем
считывает символы из файла, количество которых определяется параметром число. Если
попытаться считывать символы после достижения конца файла, метод завершит считы-
считывание всех символов и прекратит работу. Если требуется считывать байтовые данные, сле-
следует воспользоваться методом readByte().
Код в листинге 9.114 считывает информацию из текстового файла и выводит каждый
символ на страницу пользователя. Метод setPosition() применяется для корректного пе-
перемещения указателя, а метод read() — для считывания данных.
Листинг 9.114. Использование метода read(]
<server>
// Открыть файлы.
var myLog = new File("/data/logs/today.log");
myLog.open("r");
// Вывести на страницу некоторые символы.
for(var i = 1; i <= myLog.getLength(); i + 2) {
// Установить позицию указателя.
myLog.setPosition(i);
// Вывести на страницу все остальные символы.
write(myLog.readA));
}
// Закрыть файлы.
myLog.close () ;
</server>
File, re ad Byte ()
file.readByte(число)
Ъ Метод readByte() объекта File начинает оперировать с текущего указателя в файле, а затем
считывает байты из файла, количество которых определяется параметром число. Если по-
попытаться считывать байты после достижения конца файла, метод завершит считывание
всех символов и прекратит работу. Если требуется считывать символьные данные, сле-
следует воспользоваться методом read().
■% Код в листинге 9.115 считывает информацию из текстового файла и выводит на стра-
* ницу каждый следующий байт. Метод setPosition() применяется для корректного пере-
перемещения указателя, а метод readByte() — для считывания данных.
Листинг 9.115. Использование метода readByteO
<server>
/ / Открыть файлы.
var myLog = new File("/data/logs/today.dat");
myLog.open("rb");
// Вывести на страницу некоторые символы.
for(var i = 1; i <= myLog.getLength(); i + 2) {
// Установить позицию указателя.
myLog.setPosition(i);
Глава 9. Серверная сторона О с_ I
// Вывести на страницу все остальные символы,
write(myLog.readByteA));
}
// Закрыть файлы.
myLog . close () .;
</server>
File.readln()
file.readln()
# Метод readln() объекта File начинает с позиции текущего указателя и считывает оста-
остаток строки. В завершение метод возвращает указатель на первый символ в следующей
строке.
ПРИМЕЧАНИЕ
Символы возврата каретки (\г) и новой строки (\п) в строке, возвра-
возвращаемой методом, не содержатся. Однако, символ новой строки определяет, был ли
достигнут конец строки.
Код в листинге 9.116 считывает первую строку из файла и выводит ее на страницу
пользователя.
Листинг 9.116. Использование метода readlnO
<server>
// Открыть файл.
var myLog = new File("/data/logs/today.log");
myLog.open("r");
// Вывести первую строку,
write(myLog.readln());
// Закрыть файл.
myLog.close();
</server>
File.setPosition()
file.setPosition(число)
file.setPosition(число, точка_ссылки)
Метод setPosition() объекта File устанавливает позицию указателя, соответствующую
местоположению в файле, которое определяется с помощью параметра число. По умол-
умолчанию в качестве точки отсчета принимается начало файла, но можно передать точку
ссылки, которая будет определять, где находится относительное местоположение. Поло-
Положительные значения точки ссылки перечислены в табл. 9.19.
Значение
0
1
2
Таблица 9.19.
Описание
Устанавливает
Устанавливает
Устанавливает
Положительные значения
указатель относительно
указатель относительно
указатель относительно
ТОЧКИ ССЫЛКИ
начала файла.
текущей позиции указателя
конца файла.
Код в листинге 9.117 использует метод setPosition() для доступа к каждому отдельно-
отдельному символу в файле.
Листинг 9.117. Использование метода setPositionO
<server>
// Открыть файл.
var myLog = new File("/data/logs/today.log");
myLog.open("r");
Ос_ с_ Часть III. Справочник no JavaScript
// Вывести на страницу некоторые символы.
for(var i = 1; i <= myLog.getLength(); i + 2) {
// Установить позицию указателя.
myLog.setPosition(i);
// Вывести на страницу все остальные символы.
write(myLog.readA));
}
// Закрыть файл.
myLog.close () ;
</server>
File.stringToByteO
file.stringToByte(строка)
# Метод stringToByte() объекта File используется для преобразования первого переданно-
переданного символа строки в двоичный эквивалент.
Код в листинге 9.118 открывает два файла, один в режиме чтения, а второй — в ре-
режиме добавления данных. Далее выполняется считывание строк из первого файла с по-
помощью метода read(), обратное преобразование в байтовые символы с помощью мето-
метода stringToByte(), а затем запись данных во второй файл. После завершения этого процесса
оба файла закрываются.
Листинг 9.118. Использование метода stringToByte(] для преобразования
считываемых строк в байты
<server>
// Открыть файл журнала и итоговый файл.
var myLog = new File("/data/logs/today.dat");
var mySummary = new File("/data/logs/sununary.dat");
// Открыть файла журнала для чтения, а итоговый файл для
// добавления данных.
myLog.open("rb");
mySummary.open("ab");
// Добавить содержимое файла журнала в итоговый файл,
for (var i = 0; i <= myLog.getLength(); i++) {
myLog.setPosxtion(i);
myByte = File.strxngToBytes(myLog.readA));
mySummary.writeByte(myByte);
}
// Выгрузить содержимое буфера в файл.
mySummary.flush () ;
// Закрыть файлы.
myLog.close();
mySummary.close();
</server>
File.unwatch
file.unwatch(свойство)
Метод unwatch() объекта File используется для прекращения отслеживания определен-
определенного свойства, указанного с помощью параметра свойство.
Код в листинге 9.119 демонстрирует, как при помощи метода unwatch() прекратить от-
слеживание определенного пользователем свойства type.
Листинг 9.119. Пример использования метода unwatchO
<server>
// Определить прототипируемый метод,
function verifуТЕХТ(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "text"){
return true;
Глава 9. Серверная сторона
823
>else<
return false;
}
}
// Функция, которая вызывается в случае изменения значения свойства,
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые свойство и метод для объекта File.
File.prototype.type = null;
File.prototype.isText = verifyTEXT;
// Инициализировать файл.
var myLog = new File("/data/logs/today.log");
// Открыть файл в режиме чтения.
myLog.open("г" ) ;
// Используя уже определенный прототип, установить значение
// свойства type.
myLog.type = "text";
// Включить отслеживание.
myLog.watch("type", alertme);
// Проверить допустимость типа файла.
i f(myLog.is Text()) {
write(myLog + " имеет допустимый тип " + myLog.type);
>else{
write(myLog + " имеет недопустимый тип " + myLog.type);
}
// Изменить значение.
myLog.type = null;
// Отключить отслеживание.
myLog.unwatch("type");
/ / Еще раз изменить Значение.
myLog.type = "ASCII";
</server>
File.watch()
file.watch(свойство, функция)
Метод watch() объекта FOe применяется для включения отслеживания конкретного свой-
ства, указанного с помощью параметра свойство. Если свойство, указанное параметром
свойство, изменяется, вызывается функция, указанная параметром функция.
Код в листинге 9.120 показывает, как при помощи метода watchQ начать отслеживание
определенного пользователем свойства type.
Листинг 9.120. Пример использования метода watchO
<server>
// Определить прототипируемый метод.
function verifyTEXT(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "text"){
return true ;
}else<
return false;
}
}
// Функция, которая вызывается в случае изменения значения свойства,
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
О _ 4 Часть III. Справочник по JavaScript
return newValue;
}
// Создать новые свойство и метод для объекта File.
File.prototype.type = null;
File.prototype.isText = verifyTEXT;
// Инициализировать файл.
var myLog = new File("/data/logs/today.log");
/ / Открыть файл в режиме чтения.
myLog.open("г");
// Используя уже определенный прототип, установить значение
// свойства type.
myLog.type = "text";
// Включить отслеживание.
myLog.watch("type", alertme);
// Проверить допустимость типа файла.
if(myLog.i sText()) {
write(myLog + " имеет допустимый тип " + myLog.type);
}else{
write(myLog + " имеет недопустимый тип " + myLog.type);
}
// Изменить значение.
myLog. type = null;
</server>
File.write ES2+
f He. write (отрока)
# Метод write() объекта FOe записывает строку, переданную методу, в файл, для кото-
которого этот метод вызывается. В случае успешного выполнения метода возвращается зна-
значение true, в случае неудачи — значение false. Для считывания любой строковой инфор-
информации из других файлов могут применяться методы read() либо readln(). Если
необходима запись двоичной информации, следует прибегнуть к методу writeByte().
Код в листинге 9.121 записывает в открытый итоговый файл фразу "Здравствуй, мир!".
Листинг 9.121. Использование метода writeO для записи строки в файл
<server>
// Создать экземпляр файла.
var mySummary = new File("/data/logs/summary.log") ;
// Открыть файл журнала для записи.
mySummary.open("w");
// Записать строку в файл.
mySummary.write('Здравствуй, мир!');
// Переписать содержимое буфера в файл.
mySummary.flush();
// Закрыть файл.
mySummary.close();
</server>
__________ ___
file.writeByte(байт)
& Метод writeByte() объекта File записывает байт, переданный методу, в файл, для ко-
которого этот метод был вызван. В случае успешного выполнения метод возвращает зна-
значение true, в случае сбоя — значение false. Для считывания информации из других фай-
файлов может применяться метод readByte(). Если требуется выполнить запись текстовой
информации, воспользуйтесь методом write().
Код в листинге 9.122 считывает данные из двоичного файла и записывает их в другой
файл.
Главв 9. Сврверная сторона О С. О
Листинг 9.122. Использование метода writeByteO для записи двоичных данных в файл
<server>
// Создать экземпляры файла журнала и итогового файла.
var myLog = new File("/data/logs/today.dat");
var mySummary = new File("/data/logs/summary.dat");
// Открыть файл журнала для чтения и итоговый файл для добавления.
myLog.open("Ьг");
mySummary.open("Ьа") ;
// Добавить содержимое файла журнала в итоговый файл,
for (var i = 0; i <= myLog.getLength() ; i++) {
myLog.setPosition(i);
myByte = myLog.readByteA);
mySummary.writeByte(myByte);
}
// Выгрузить содержимое буфера в файл.
mySummary.flush();
// Закрыть файлы.
myLog.close();
mySummary.close();
</server>
File.writeln ES2+
file.writeln(строка)
# Метод writeln() объекта Ffle записывает строку с символом перевода строки, передан-
переданную методу, в файл, для которого этот метод вызывается. В случае успешного выпол-
выполнения метода возвращается значение true, в случае неудачи — значение false. Для счи-
считывания любой строковой информации из других файлов могут применяться методы
read() либо readln(). Если необходима запись двоичной информации, следует восполь-
воспользоваться методом writeByte().
Код в листинге 9.123 записывает в открытый итоговый файл фразу "Здравствуй, мир!".
Листинг 9.123. Использование метода writelnO для записи строки и символа
переводе строки е файл
<server>
// Создать экземпляр файла.
var mySummary = new File("/data/logs/summary.log");
// Открыть файл журнала для записи.
mySummary.open("w");
// Записать строку в файл.
mySummary.writeIn('Здравствуй, мир!');
// Переписать содержимое буфера в файл.
mySummary.flush();
/ / Закрыть файл.
mySummary.close();
</server>
_____ __
flush()
k Функция верхнего уровня flush() не связана с каким-либо объектом. В ходе ее приме-
применения механизм времени выполнения JavaScript буферизует HTML-страницу, создавая
ее в памяти, и отправляет ее клиенту после превышения предела, равного 64 Кб. Эта
функция может применяться для отправки данных по требованию, реализуемой перед
выполнением полномасштабных запросов к базам данных. Обратите внимание, что эту
функцию не следует отождествлять с методом File.flush().
О С. и Часть III. Справочник по JavaScript
ПРИМЕЧАНИЕ
Функция flush() обновляет cookie-фаил как часть заголовка HTTP.
Если Для поддержки объекта client используется кливнтский cookie-набор, первд вы-
вызовом функции flush() потребуется реализовать все необходимые изменения в этом
обьвктв.
Код в листинге 9.124 использует функцию flush() для переписывания содержимого бу-
буфера на страницу после выполнения начальной записи.
Листинг 9.124. Использование функции flush!) для переписывания содержимого
буфера на страницу
<server>
// Вывести строку на страницу,
write('Здравствуй, мир!');
// Переписать клиенту содержимое буфера.
flush() ;
</server>
getOptionValue() Nes2+
getOptionValue(ключ, число)
k Функция верхнего уровня getOptionValue() не связана ни с каким объектом. Она воз-
возвращает то же самое значение, что и клиентское свойство Option.text. Передаваемый ар-
аргумент ключ представляет собой атрибут name дескриптора <select>, в то время как па-
параметр число содержит индексированную позицию выбранной опции. Если в параметре
число передать 0, производится ссылка на первую выделенную опцию, которая может
не совпадать с первой фактической опцией.
Код в листинге 9.125 отображает многовариантное окно выбора, в котором пользователь
может указать различные виды спорта. После щелчка на кнопке Submit (Отправить) форма
отправляет данные сама себе, а сценарий с использованием функции getOptionVaIue()
в цикле for выводит на страницу пользователя выбранные варианты.
Листинг 9.125. Использование функции getOptionValueO
<html>
<head>
<Ъ1Ъ1е>Испольэование функции getOptionValue</title>
</head>
<body>
<server>
// Проверка, были ли отправлены данные, либо требуется вывести
// форму для заполнения,
if(request.method == "POST"){
// Сохранить в переменной количество выбранных опций.
var counter = getOptionValueCount("sports");
// Вывести заголовок.
write('<b>Bbi выбрали следующие опции</ЬХЬг size=l>');
// Выполнить итерацию по опциям с выводом выбранных вариантов,
for (var i = 0; i < counter; i++) {
// Получить значение Option.text для выбранной опции,
var optionValue = getOptionValue("sports", i)
write('Опция ' + i + ' : ' + optionValue + '<br>')
}
}else{
// Если страница была вызвана и данные формы не были отосланы,
// вывести форму на страницу для ее заполнения пользователем.
write('<form name="myForm" method="post">');
write('<select пате="виды спорта" multiple size=">');
write ( ' <option>Beiic6on</option>' ) ;
write ('<ориоп>Аиериканский футбол</ор^оп>') ;
write('<option>BacKeT6on</option>');
write('<option selected>^>yT6on</option>');
Глввв 9. Сврвврнвя сторона ОС. 7
write('<option>Per6H</option>');
write ('<input type="submit" value="O(rnpaBH'rb">') ;
write('</form>');
}
</server>
</body>
</html>
getOptionValueCount() ES2+
getOptionValueCount(ключ)
# Функция getOptionValueCount() представляет собой функцию верхнего уровня, которая
не связана с каким-либо объектом. Эта функция возвращает количество выбранных оп-
опций, переданных функции. Параметр ключ представляет собой атрибут name дескрипто-
дескриптора <select>, для которого будет вызываться функция.
Код в листинге 9.126 демонстрирует, какпри помощи функции getOptionValueCountO
определить количество опций, выбранных в списке видов спорта.
Листинг 9.126. Использование функции getOptionValueCountO
<server>
// Сохранить в переменной количество выбранных опций,
var counter = getOptionValueCount("sports");
</server>
Lock()
new Lock()
Объект Lock() применяется при реализации раздела кода, доступ к которому в каждый
момент времени может получить только один пользователь. Если не реализовать экзем-
экземпляр данного объекта, когда это необходимо, это может привести к исчерпанию дос-
доступных системных ресурсов и генерации ошибки времени выполнения. Этот объект имеет
одно свойство prototype, которое применяется для создания новых методов и свойств
объекта Lock(). В табл. 9.20 перечислены методы данного объекта.
Таблица 9.20. Методы объекта LockO
Метод Описание
isValidQ Проверявт конструкцию экземпляра объекта LockQ.
lockQ Блокирует код.
unlockQ Отменяет блокировку кода.
unwatch() Отключает отслеживание указанного свойства.
watchQ Включавт отслеживанив указанного свойства.
Код в листинге 9.127 демонстрирует, как создается новый экземпляр объекта Lock().
Обратите внимание на примеры методов Lock.Iock() и Lock.unlock(), используемые для
блокировки и разблокировки разделов кода.
Листинг 9.127. Создание нового объекта LocM)
<server>
// Создать новый объект Lock,
var my Lock = new Lock () ;
</server>
Lock.constructor ES2+
lock.constructor
^ Свойство constructor объекта Lock указывает функцию, создающую объект.
Код в листинге 9.128 демонстрирует пример применения свойства constructor.
ОС. О
Часть III. Справочник по JavaScript
Листинг 9.128. Свойство constructor
<server>
// Создать новый объект Lock,
var myLock = new Lock О ;
if(myLock.constructor == Lock){
write("Объект создан");
}
</server>
Lock.isValid() ES3+
loc*. isValidO
Метод isValidO объекта Lock проверяет, корректно ли была построена блокировка. Если
блокировка была организована успешно, метод возвращает значение true. В случае неудачи
возврашается значение false.
Код в листинге 9.129 выполняет проверку успешности организации блокировки.
Листинг 9.129. Проверка блокировки с помощью метода isValidO
<server>
// Создать новый объект Lock.
var myLock = new Lock О ;
// Проверить корректность блокировки,
if (! myLock. isValidO ) {
write('Ошибка при организации блокировки');
}else{
// Блокировка корректна: реализовать требуемые операции.
}
</server>
Lock.lock()
lock.lock()
Метод lock() объекта Lock блокирует рабочий код до тех пор, пока ои не будет явно
разблокирован. Если код уже заблокирован, метод будет ожидать, пока не будет полу-
получена блокировка, произойдет тайм-аут или случится ошибка.
Код в листинге 9.130 предполагает, что имеется объект project со свойством счетчика пит.
Поскольку значение счетчика будет увеличиваться только в каждом новом запросе
пользователя, счетчик должен быть заблокирован.
Листинг 9.130. Использование метода lock() для блокировки кода
<server>
// Создать новый объект Lock под объектом project,
var project.myLock = new Lock();
// Проверить корректность блокировки,
iff'project.myLock.isValidO){
write('Ошибка при организации блокировки') ;
}else{
//Заблокировать код и увеличить значение счетчика объекта project
project.myLock.lock О ;
project.hitCount.num += 1;
// Разблокировать код.
project.myLock.unlock() ;
</server>
Глава 9. Серверная сторонв О с: У
Lock, prototype ES3+
lock.prototype.метод = имя
lock.prototype.свойство = значение
# Свойство prototype объекта Lock позволяет добавлять методы и свойства в объект Lock.
Если добавляется метод, то тем самым устанавливается экземпляр, соответствующий
параметру имя ранее определенного метода.
Код в листинге 9.131 создает новое свойство и метод для объекта Lock. При этом создается
экземпляр и устанавливается новое свойство. Затем с целью проверки свойства вызыва-
вызывается новый метод. Если результаты проверки оказались неудовлетворительными, на стра-
страницу выводится сообщение об ошибке.
Листинг 9.131. Использование свойства prototype для создания нового свойства и
метода
<server>
// Определить прототипируемый метод,
function verifyProject() {
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type = "project"){
return true ;
}else{
return false;
}
}
// Создать новые свойство и метод для объекта Lock.
Lock.prototype.type = null;
Lock.prototype.isProject = verifyProject;
// Создать новый объект Lock под объектом project,
var project.myLock = new Lock();
// Используя уже определенный прототип, установить значение
/ / свойства type.
project.myLock.type = "project";
// Проверить тип блокировки на допустимость,
if(project.myLock.isProject()){
write (project .myLock + " имеет допустимый «тип "
+ project.myLock.type);
}else{
write(project.myLock + " имеет недопустимый тип "
+ project.myLock.type);
}
</server>
Lock, unlock ES3+
lock.unlock()
Метод unlock() объекта Lock отменяет блокировку ранее заблокированного кода. В слу-
случае удачно выполненного разблокирования возвращается значение true, в противном
случае — false.
В коде из листинга 9.132 предполагается, что в данном случае выполняется обработка
объекта project, имеющего свойство счетчика num. Поскольку в данном случае будет вы-
выполняться приращение значения счетчика при каждом новом запросе пользователя, этот
объект потребуется заблокировать. После выполнения приращения значения счетчика
объект project будет разблокирован.
Листинг 9.132. Использование метода unlock!) для отмены блокировки приложения
<server>
// Создать новый объект Lock под объектом project,
var project.myLock = new Lock();
О о U Часть III. Справочник по JavaScript
// Проверить корректность блокировки,
if('project.myLock.isValidf))(
write('Ошибка при организации блокировки');
}else{
//Заблокировать код и увеличить значение счетчика объекта project
project.myLock.lock();
project.hitCount.num += 1;
// Разблокировать код.
project.myLock.unlock();
}
</server>
Lock.unwatch ES3+
lock.unwatch(свойство)
# Метод unwatchO объекта Lock применяется для отключения отслеживания свойства, ука-
указанного с помощью параметра свойство.
, ха Код в листинге 9.133 демонстрирует, как при помощи метода unwatch() прекратить от-
Р* слеживания определенного пользователем свойства type.
Листинг 9.133. Пример использования метода unwatchO
<server>
// Определить прототипируемый метод,
function verifyProject(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "project"){
return true ;
}else{
return false;
}
}
//функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые свойство и метод для объекта Lock.
Lock, pro to type, type = null;
Lock.prototype.isProject = verifyProject;
// Создать новый объект Lock под объектом project,
var project.myLock = new Lock();
// Используя уже определенный прототип, установить значение
/ / свойства type.
project.myLock.type = "project";
// Включить отслеживание.
project.myLock.watch("type", alertme);
// Проверить допустимость типа блокировки,
if(project.myLock.isProject()){
write(project.myLock + " имеет допустимый «тип " +
project.myLock.type);
}else{
write(project.myLock + " имеет недопустимый -тип " +
Project.myLock.type);
}
/ / Изменить значение.
Project.myLock.type = null;
// Отключить отслеживание.
Project.myLock.unwatch("type");
Глава 9. Сврвврная сторона
831
/ / Еще раз изменись значение.
project.myLock.type = null;
</server>
Lock.watch() ES3+
lock.watch(свойство, функция)
Метод watch() объекта Lock используется для включения отслеживания конкретного свой-
свойства, указанного с помощью параметра свойство. Если свойство, указанное параметром
свойство, изменяется после вызова метода watch(), вызывается функция, указанная с
помощью параметра функция.
Код в листинге 9.134 демонстрирует, каким образом метол watch() используется для
начала отслеживания определенного пользователем свойства р.
Листинг 9.134. Пример использования метода watchO
<server>
// Определить прототипируемый метод,
function verifyProjectO{
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "project"){
return true ;
)else{
return false;
//Функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
re tu rn newValue;
// Создать новые свойство и метод для объекта Lock.
Lock.prototype.type = null;
Lock.prototype.isProject = verifyProject;
// Создать новый объект Lock под объектом project,
var project.myLock = new Lock();
// Используя уже определенный прототип, установить значение
/ / свойства type.
project.myLock.type = "project";
// Включить отслеживание.
project.myLock.watch("type", alertme);
// Проверить допустимость типа блокировки,
if(project.myLock.isProject()){
write(project.myLock+" имеет допустимый тип "+project.myLock.type);
}else{
write(project.myLock + " имеет недопустимый тип "
+ project.myLock.type);
// Изменить значение,
project.myLock.type = null;
</server>
ObjectContext
Основной объект среды ASP
\ Объект ObjectContext является основным объектом среды ASP. События и методы этого
объекта используются для фиксации или отмены транзакции, инициализированной сце-
сценарием. Для корректного вызова объекта из сценария используется директива <%@
Transaction = Required %>. В табл. 9.21 описываются события и методы этого объекта.
832
Тип
Событие
Метод
Таблица 9.21.
Элемент
OnTransactionAbort
OnTransactionCommit
SBtAbort()
SBtComplete()
Часть III. Справочник по JavaScript
Методы и события объекта ObjectContext
Описание
Происходит в случае отмены транзакции.
Происходит после фиксации транзакции со стороны
транзактных сценариев.
Объявляет, что транзакция не был завершена и ресурсы
не требуется обновлять.
Объявляет, что сценарий не осведомлен о причинах того,
что транзакция не должна быть завершена. Если все
компоненты транзакции вызывают метод SetComplete(),
транзакция будет завершена.
Код в листинге 9.135 предполагает, что переменной processData ранее было присвоено
значение true или false. Затем на основе значения этой переменной транзакция обраба-
обрабатывается или отменяется.
Листинг 9.135. Использование объекта ObjectContext
<%@ Transaction = Required %>
<script runat="server" type="text/jscript" language="JScript">
// Предполагается, что processData является ранее
// определенной булевой переменной,
if(processData){
ObjectContext.SetComplete
Response.Write("Обработка данных...");
}else{
ObjectContext.SetAbort
Response.Write("Ошибка: завершение •транзакции");
}
</script>
ObjectContext. OnTransactionAbort
function OnTransactionAbort()
код
ASP1+
Событие onTransactionAbort объекта ObjectContext происходит в случае прерывания тран-
транзакции. Как только это происходит, IIS вызывает функцию onTransactionAbort() (если
она определена), а затем выполняет код.
В коде из листинга 9.136 определяется функция onTransactionAbort(), которая будет вы-
вызываться в случае отмены транзакции. В случае возникновения события в поток вывода
записывается сообщение.
Листинг 9.136. Использование события onTransactionAbort
<%@ Transaction = Required %>
<script runat="server" type="text/jscript" language="JScript">
function onTransactionAbort(){
Response.Write("Транзакция была прервана");
</script>
ObjectContext. OnTransactionCommit
function OnTransactionCommit()
код
ASP1+
Глава 9. Серверная сторона Оии
$Ж Событие onTransactionCommit объекта ObjectContext происходит в случае завершения тран-
*® закции. Как только это происходит, IIS вызывает функцию onTransactionCommitO (если
она определена), а затем выполняет код.
В коде из листинга 9.137 определяется функция onTransactionCommitO, которая будет вы-
вызываться в случае завершения транзакции. В случае возникновения события в поток вы-
вывода записывается сообщение.
Листинг 9.137. Использование события onTransactionCommit
<%@ Transaction = Required %>
<script runat="server" type="text/jscript" language="JScript">
function onTransactionCommitO{
Response.Write("Транзакция была завершена");
}
</script>
ObjectContext.SetAbort()
Метод SetAbort() объекта ObjectContext отменяет транзакцию.
Код в листинге 9.138 вызывает функцию onTransactionAbortO, которая вызывается при
отмене транзакции, инициированной с помощью метода SetAbort(). При вызове функ-
функции в выходной поток записывается соответствующее сообщение.
Листинг 9.138. Использование метода SetAbortO
<%@ Transaction = Required %>
<script runat="server" type="text/jscript" language="JScript">
/ / Определить функцию.
function onTransactionAbortO{
Response.Write("Транзакция завершена");
}
// Выполнить метол SetAbortO, который приведет к вызову функции.
ObjectContext.SetAbortO;
</script>
ObjectContext.SetComplete()
ObjectContext.SetComplete()
Метод SetCompleteO объекта ObjectContext перекрывает все предыдущие вызовы метода
SetAbortO.
Код в листинге 9.139 определяет функцию onTransactionAbortO, вызываемую в случае
отмены транзакции. Отмена транзакции инициируется с помощью метода SetAbortO.
После вызова метода операцию отмены транзакции можно прекратить перед тем, как
сообщение будет записано в выходной поток.
Листинг 9.139. Использование метода SetCompleteO
<%@ Transaction = Required %>
<script runat="server" type="text/jscript" language="JScript">
/ / Определить функцию.
function onTransactionAbortO{
Response.Write("Транзакция отменена");
}
//Выполнить операцию отмены, в процессе которой вызывается функция
ObjectContext.SetAbortO;
// Отменить операцию отмены.
ObjectContext.SetComplete();
</script>
О34 Часть III. Справочник по JavaScript
project ES2+
Создается серверной частью механизма времени выполнения JavaScript
при запуске приложения.
$3| Объект project совместно используется всеми пользователями, получающими доступ к
«< приложению. Этот объект создается во время запуска приложения и разрушается после
завершения выполнения приложения. Объект project зачастую применяется да хранения
глобальных свойств, которые должны быть доступны во всех пользовательских сеансах.
Как правило, этот объект задействуется в качестве счетчика, определяющего количество
пользователей, которые получают доступ к данному приложению.
Объект сам по себе не имеет свойств по умолчанию. Свойства могут создаваться путем
простого указания имени и значения. Ниже приводится пример создания свойства с пос-
последующим присвоением ему значения. В качестве значения используется IP-адрес кли-
клиента, запрашивающего приложение.
var project.lastIP = request.ip;
В табл. 9.22 перечисляются методы объекта project вместе с их описаниями.
Таблица 9.22. Методы объекта project
Метод Описание
lockQ Блокировка кода.
unlockQ Отмена блокировки кода.
unwatch() Отключение отслеживания конкретного свойства.
watch() Включение отслеживания конкретного свойства.
Код в листинге 9.140 демонстрирует, как создать и выполнить приращение значения
счетчика для объекта project. Перед выполнением приращения счетчика объект project
блокируется, а после завершения этой операции разблокируется.
Листинг 9.140. Использование объекта project
<server>
// Заблокировать код и увеличить значение счетчика project,
project.lock();
project.hitCount += 1;
// Разблокировать код.
project.unlock();
</server>
project.lock()
project.lock()
Метод lock() объекта project блокирует рабочий код до тех пор, пока он не будет явно
разблокирован. Если код уже заблокирован, метод будет ожидать, пока не будет полу-
получена блокировка, произойдет тайм-аут или случится ошибка.
Код в листинге 9.141 устанавливает объект project и свойство типа счетчика hitCount.
Поскольку значение счетчика должно увеличиваться только в каждом новом запросе
пользователя, счетчик должен блокироваться.
Листинг 9.141. Использование метода lock[) для блокировки кода
<server>
// Заблокировать код и увеличить значение счетчика project.
project.lock();
project.hitCount += 1;
// Разблокировать код.
project.unlock();
</server>
Глава 9. Серверная сторона О О 5
project.unlock ES2+
project.unlock()
f Метод unlock() объекта project отменяет блокировку для ранее заблокированного кода. В
случае удачно проведенной разблокировки возвращается значение true, в противном слу-
случае возвращается значение false.
Код в листинге 9.142 устанавливает объект project и свойство счетчика hitCount. Поскольку
в данном случае приращение значения счетчика должно выполняться только в каждом
новом запроса пользователя, этот объект потребуется заблокировать. После выполнения
приращения значения счетчика объект project будет разблокирован.
Листинг 9.142. Использоввние метода unlock!) для отмены блокировки приложения
<server>
// Заблокировать код и увеличить значение счетчика project,
project.lock();
project.hitCount += 1;
// Разблокировать код.
project.unlock();
</server>
Lock, unwatch ES3+
project.unwatch(свойство)
Й& Метод unwatch() объекта project применяется для отключения отслеживания свойства,
"• указанного с помощью параметра свойство.
Код в листинге 9.143 демонстрирует, как при помощи метода unwatch() прекратить от-
отслеживание определенного пользователем свойства type.
Листинг 9.143. Пример использования метода unwatch()
<server>
//Функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
project.type = "work";
// Включить отслеживание,
project.watch("type", alertme);
// Изменить значение.
project.type = null;
// Отключить отслеживание.
project.unwatch("type");
// Еще раз изменить значение.
project.type = null;
</server>
project. watch() ES3+
project.watch{свойство, функция)
h Метод watch() объекта project используется для включения отслеживания конкретного
свойства, указанного с помощью параметра свойство. Если свойство, указанное парамет-
параметром свойство, изменяется после вызова метода watch(), вызывается функция, указан-
указанная с помощью параметра функция.
Код в листинге 9.144 демонстрирует, как при помощи метода watch() начать отслежи-
отслеживание определенного пользователем свойства type.
836 Часть HI. Справочник по JavaScript
Листинг 9.144. Пример использования метода watch()
<server>
//функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
project.type = "work";
// Включить отслеживание.
project.watch("type", alertme);
// Изменить значение,
project.type = null;
</server>
redirect()
redirect(URL)
Функция верхнего уровня redirect() не связана с каким-либо основным объектом. Эта
функция применяется для перенаправления запрашивающего браузера по URL-адресу,
указанному в параметре URL.
ПРИМЕЧАНИЕ
Для защиты свойств и знвчвний объекта client слвдует использовать
функцию addClient().
Код в листинге 9.145 проверяет, является ли запрашивающий страницу браузер браузе-
браузером Internet Explorer. Функция redirect() используется для перенаправления браузера на
соответствующую страницу.
Листинг 9.145. Использование функции redirect!) для перенаправления браузера
пользователя
<server>
// Проверить, имеет ли текущий браузер тип Internet Explorer,
if(request.agent.indexOf('MSIE1) != -1){
redirect(addClient("/iepages/index.html"));
//Если тип текущего браузера не IE,перенаправить на другую страницу
}else{
redirect(addClient("/defaultpages/index.html"));
}
</server>
registerCFunciion() ES2+
registerCFunction(JSFuncWarae, Li.bPa.tch, CFunc)
Функция верхнего уровня registerCFunctionO не связана с каким-либо основным объектом.
Эта функция применяется для регистрации С-функции из совместно используемой биб-
библиотеки как JavaScript-функции, в результате чего последняя может применяться в
пользовательских сценариях. Библиотеки подобного рода хранятся в предварительно со-
созданных файлах .dll на Windows-компьютерах и в файлах .so на Linux-компьютерах. Фун-
Функция registerCFunctionO принимает имя JavaScript, которое будет присвоено С-функции,
путь к библиотеке и фактическое имя С-функции, которую необходимо зарегистриро-
зарегистрировать. В ходе регистрации возвращается значение типа boolean, свидетельствующее о ре-
результатах регистрации.
После вызова этой функции библиотеку С можно использовать совместно с серверной
функцией са11С().Функция са11С() использует назначаемое JavaScript-имя, а также лю-
любые параметры, передаваемые в функцию.
Глава 9. Серверная сторона
837
Код в листинге 9.146 регистрирует внешнюю библиотеку С, extlib.dll, которая содержит
функцию getMyDate(). В ходе регистрации функции назначается имя JSExtLib, которое
и будет использоваться в сценарии. Если С-функция была успешно зарегистрирована,
функция са11С() применятся для ее вызова и передачи двух параметров. Результаты вы-
выводятся на страницу пользователя.
Листинг 9.146. Регистрация С-функции в совместно используемой библиотеке с
помощью функции registerCFunctionO
<server>
// Зарегистрировать библиотеку и функцию, назначив ей имя
// JavaScript-функции.
var myExternalLib = registerCFunction("JSExtLib",
"с:/winnt/extlib.dll", "getMyDate")
// Если библиотека была зарегистрирована без ошибок, вызвать
// функцию с помощью са11С(). В случае сбоя вывести на страницу
/ / информацию об ошибке.
if (myExternalLib) {
write(callC("getMyDate", 1999, 2000));
>else{
write("Ошибка при обработке внешней библиотечной функции");
}
</server>
Request
Основной объект среды ASP.
Объект Request представляет собой основной объект среды ASP. Этот объект обеспечи-
обеспечивает средства для выборки HTTP-информации, переданной серверу пользовательским
агентом во время запроса. В табл. 9.23 перечислены коллекции, методы и свойства дан-
данного объекта.
Тип
Коллекция
Метод
Свойство
Таблица 9.23.
Элемент
ClientCertificate
Cookies
Form
QueryString
ServerVariables
Binary Read()
TotalBytes
Коллекции, метод и свойство объекта Request
Описание
Значения полей, сохраненные в клиентском сертификате.
Значения cookie-наборов.
Значения элементов формы.
Значения переменных в строке HTTP-запроса.
Значения предопределенных переменных среды.
Выборка данных POST, отправленных серверу клиентом.
Свойство, предназначенное только для чтения,
указывающее общее количество байтов, пересылаемых
клиентом в теле залроса.
Код в листинге 9.147 демонстрирует применение объекта Request для получения досту-
доступа к указанному ключу querystring с дальнейшим выводом полученного значения.
Листинг 9.147. Использование объекта Request
<script runat="server" type="text/jscript" language="JScript">
// Вывести значение "name" элемента querystring.
Response.Write(Request.QueryString("name");
</script>
Request. BinaryRead() ASP1+
Reques t.BinaryRead(число)
& Метод BinaryRead() объекта Request выбирает данные, отправленные серверу в запросе
POST, затем сохраняет данные в массиве беззнаковых байт с именем SafeArray. Параметр
число представляет количество байтов, считанных в массив.
83 О Часть III. Справочник по JavaScript
Код в листинге 9.148 демонстрирует проверку длины POST-данных и считывание этих
данных в массив SafeArray.
Листинг 9.148. Использование метода BinaryReadO
<script runat="server" type="text/jscript" language="JScript">
// Проверить длину POST-данных.
var myben = Request.TotalBytes;
// Считать данные.
var mySafeArray = Request.BinaryRead(myLen);
</script>
Request.ClientCertificate ASP1+
Request..ClientCertificate(поле)
Request.ClientCertificate(подполе)
# Коллекция ClientCertificate объекта Request выбирает из запроса поля сертификации. Если
в запросе используется протокол SSL3.0/PCT1 (на который также ссылаются как на
HTTPS) для подключения к серверу, сервер будет запрашивать сертификацию при от-
отправке браузером поля сертификации. Если сертификат не будет отправлен, коллекция
ClientCertificate возвращает значение EMPTY.
В табл. 9.24 перечисляется список полей, которые могут быть переданы коллекции, а в
табл. 9.25 — список допустимых подполей.
Таблица 9.24. Поля коллекции ClientCertificate
Поле Описание
Certificate Строка, определяющая двоичный поток всего сертификата в формате ASN.1.
Flags Набор флагов, обеспечивающих дополнительную информацию о клиентских
сертификатах. В роли этих флагов могут использоваться ceCertPresent
(клиентский сертификат присутствует) или cellnrecognizedlssuer (последний
сертификат в цепочке выдан неизвестной организацией).
Issuer Строка, включающая список значений подполя, содержащего информацию об
издателе сертификата. Если это значение указано без подполя, коллекция
возвращает разделенный запятыми список подполей (например, C=US,
O=Verisign и т.д.).
SerialNumber Строка, указывающая серийный номер сертификации в виде ASCII-
представления шестнадцатеричных байт, разделенных дефисами (-).
Subject Строка, содержащая перечень значений подполя. Если это значение указано
без подполя, коллекция возвращает разделенный запятыми перечень подполей
(например, OUS, O=Verisign и т.д.)
ValidFrom Дата начала действия сертификата.
ValidUntil Дата, указывающая срок истечения действия сертификата. Значение,
соответствующее году, отображается в виде числа, состоящего из четырех цифр.
ПРИМЕЧАНИЕ
Для использования Flags не ASP-стренице потребуется включить файл
включения клиентского сертификата [cerjavas.inc]. Эти файлы неходятся в каталоге
\lnetpub\ASPSamp\Samples.
Подполе
С
Описание
Указывает
Таблица 9.25. Подполя коллекции ClientCertificate
имя страны/региона происхождения.
CN Указывает общее имя пользователя. (Это имя может применяться только
совместно с полем Subject.)
GN Указывает заданное имя.
Главе 9. Серверная сторона О О У
Подполе
1
L
О
ои
S
т
Описание
Указывает набор инициалов.
Указывает район нахождения.
Указывает имя организации или компании.
Указывает наименование подразделения.
Указывает штат или провинцию.
Указывает должность лица или организации., применяемый для работы с
подполями, выглядит несколько необычным, поэтому лучше обратиться к
небольшому примеру.
Обратите внимание, что на самом деле подполе является результатом конкатенации поля,
описанного в предыдущей таблице, и идентификатора подполя.
Re quest. ClientCertifica1;e(" Sub jectCN")
Код в листинге 9.149 выполняет запись в поле Subject клиентского сертификата, при-
сутствующего в запросе.
Листинг 9.149. Использование коллекции ClientCertificate
<script runat="server" type="text/jscript" language="JScript">
Response.Write(Request.ClientCertificate("Subject");)
</script>
Request. Cookies ASP1+
Request..Cookies {имя)
Request.Cookies(имя).HasKeys
Request.Cookies(имя)(подключ)
Коллекция Cookies объекта Request поддерживает доступ к любым cookie-наборам, пе-
переданным серверу. Выборка значения cookie-набора производится путем передачи пара-
параметра имя для cookie-набора. Кроме того, можно передавать атрибут HasKeys, с помо-
помощью которого проверяется, будет ли коллекция словарем cookie-наборов. Если это так,
можно передать свойство подключ для выборки произвольных значений подключен из
словарей cookie-наборов.
Код в листинге 9.150 демонстрирует применение метода AppendToLogO вместе с коллек-
коллекцией Request.Cookies для получения доступа и вывода cookie-набора с именем ID в ко-
конец файла журнала.
Листинг 9.150. Использование коллекции Cookies
<script runat="server" type="text/jscript" language="JScript">
Response.Write(Request.Cookies("ID");
Response.Flush();
</script>
Request.Form ASP1+
Request.Form(имя)
Request.Form(имя)(число)
»Коллекция Form объекта Request выбирает значения элементов формы, которые были
отправлены на сервер с помощью метода POST. Эта коллекция применяется путем пе-
передачи параметра имя элемента, для которого выполняется выборка. Если для данного
параметра имя передаются несколько значений, можно указать местоположение число для
выбираемого значения.
ПРИМЕЧАНИЕ
Эта коллекция может содержать только 100 Кб информеции. Если
применяемый метод POST превышает этот объем, следует воспопьзоваться методом
Request. ReadBinary().
Часть III. Спревочник по JavaScript
Код в листинге 9.151 демонстрирует, как проверить количество значений для заданно-
заданного имени формы и вывести на страницу последнее значение.
Листинг 9.151. Использование коллекции Form
<script runat="server" type="text/jscript" language="JScript">
// Определить количество значений в элементе "interest" (процент).
myElementLen = Request.Form("interest").Count;
// Вывести последнее значение.
Response.Write(Request.Form("interest")(myElementLen));
</script>
Request.Form. Form. Count ASP1+
Request.Form(имя).Count
^ Свойство Count коллекции Form объекта Request содержит общее количество значений
для данного элемента форму, которые были переданы на сервер с помощью метода
POST. Эта коллекция используется путем передачи параметра имя элемента, для кото-
которого выбирается свойство Count.
Код в листинге 9.152 демонстрирует, как можно проверить количество значений для за-
данного имени формы, а затем вывести на страницу последнее значение.
Листинг 9.152. Использование свойство Count коплекции Form
<script runat="server" type="text/jscript" language="JScript">
// Определить количество значений в элементе "interest" (процент).
myElementLen = Request.Form("interest").Count;
// Вывести последнее значение.
Response.Write(Request.Form("interest")(myElementLen));
</script>
Request. QueryString ASP1+
Request.QueryString(имя)
Request.QueryString(имя) (число)
Коллекция QueryString объекта Request выполняет выборку значений элементов формы,
которые были переданы серверу с помощью метода GET. Эта коллекция используется для
передачи параметра имя выбираемого пользователем элемента. Если для текущего пара-
параметра имя передается несколько значений, можно указать местоположение число для зна-
значения, которое должно выбираться.
ПРИМЕЧАНИЕ
Метод QueryString оказывает воздействие на все симвопы, встреча-
встречающиеся после первого появления символа знака вопроса ?.
у-* Код в листинге 9.153 демонстрирует, как проверять количество значений для передан-
^ ного имени querystring, а затем выводить на страницу последнее значение.
Листинг 9.153. Использование коллекции QueryString
<script runat="server" type="text/jscript" language="JScript">
// Определить количество значений в элементе "interest" (процент).
myElementLen = Request.QueryString("interest").Count;
// Вывести последнее значение.
Response.Write(Request.QueryString("interest")(myElementLen));
</script>
Request.QueryString.Count ASP1+
Request.QueryString(имя).Count
Глава 9. Серверная стороне
841
. Свойство Count коллекции QueryString объекта Request содержит общее количество зна-
мГ чений для данного элемента формы, которые были отправлены серверу в запросе GET.
Эта коллекция используется путем передачи параметра имя элемента, который будет
выбираться для подсчета.
, Код в листинге 9.154 демонстрирует, как проверить количество значений данного эле-
элемента формы и вывести на страницу последний элемент.
Листинг 9.154. Использование свойства Count коллекции QueryString
<script runat="server" type="text/jscript" languages"JScript">
// Определить количество значений в элементе "interest" (процент).
myElementLen = Request.QueryString("interest").Count;
// Вывести последнее значение.
Response.Write(Request.QueryString("interest")(myElementLen));
</script>
Request.ServerVariables ASP1+
Request.ServerVariables(имя)
Щ Коллекция ServerVariables объекта Request осуществляет выборку списка предопределенных
■ переменных среды сервера. Доступ к значению текущей переменной можно получить пу-
путем передачи имени этой переменной. В табл. 9.26 содержится перечень возможных зна-
значений параметра имя.
Таблица 9.26. Возможные значения ServerVariables, для которых может быть получена информация
Переменная
Описание
ALL HTTP
Все HTTP-заголовки, отосланные клиентом. Обратите
внимание, что этот метод помещает префикс НТТР_ перед
именем заголовка, а имя заголовка всегда записывается
заглавными буквами.
ALL RAW
Выбирает все заголовки в неформатированном виде.
APPL MD PATH
Выбирает путь метабазы для .dll-библиотеки iSAPI-приложения.
APL PHYSICAL PATH
Выбирает физический путь, соответствующий пути метабазы.
AUTH PASSWORD
Значение, введенное в диалогом окне аутентификации клиента.
AUTHTYPE Метод аутентификации, примЬняемый для удостоверения
пользователей в случае, когда они пытаются получить доступ к
защищенному сценарию.
AUTH USER
Неформатированное идентифицированное имя пользователя.
CERT COOKiE
Уникальный идентификатор для клиентского сертификата.
CERTFLAGS Значение разряда 0 устанавливается равным 1 в случае, если
присутствует клиентский сертификат. Значение разряда 1
устанавливается равным 1 в случае, если авторизация
cCertification для клиентского сертификата некорректна.
CERT ISSUER Поле Issuer для клиентского сертификата (O=MS, OU=IAS,
CN=user name, C=USA).
CERTKEYSIZE Количество разрядов, соответствующее размеру ключа
соединения Secure Sockets Layer.
CERT SECRETKEYSIZE
Количество разрядов секретного ключа серверного
сертификата.
CERT SERIALNUMBER
Поле серийного номера клиентского сертификата.
CERT SERVER ISSUER
Поле издателя серверного сертификата.
CERT SERVER SUBJECT Поле темы для серверного сертификата.
CERT_SUBJECT Поле темы для клиентского сертификата.
CONTENT LENGTH
Размер содержимого, принятого клиентом.
842
Переменная
CONTENT TYPE
GATEWAYJNTERFACE
HTTP_<HeaderName>
HTTP ACCEPT
HTTP_ACCEPT_LANGUAGE
HTTP_USER_AGENT
HTTP_COOKIE
HTTP_REFERER
HTTPS
HTTPS_KEYSIZE
HTTPS_S ECR ETKEYSIZE
HTTPS_SERVER_ISSUER
HTTPS SERVER SUBJECT
INSTANCE ID
iNSTANCE META PATH
LOCAL_ADDR
LOGON_USER
PATH_INFO
PATHJTRANSLATED
QUERY_STRING
REMOTE ADDR
REMOTE_HOST
REMOTEJJSER
REQUEST METHOD
SCRIPT_NAME
SERVER NAME
SERVER J=ORT
SERVER PORT_SECURE
SERVER_PROTOCOL
SERVER_SOFTWARE
Часть III. Справочник по JaveScript
Описание
Тип данных содержимого.
Версия CGI-спецификации, используемой сервером.
Значение, сохраненное в заголовке HeaderName.
Возвращает значение заголовка Accept.
Возвращает строку, которая описывает язык отображения
содержимого.
Возвращает строку, описывающую браузер, отправляющий
запрос.
Возвращает строку cookie-набора, которая была включена в
запрос.
Возвращает строку, содержащую URL-адрес страницы, на
которую ссылается запрос, но не включает запросы на
перенаправление.
Возвращает ON, если запрос прошел через SSL, либо OFF,
если запрос не использует защищенные каналы.
Количество разрядов, соответствующее размеру ключа для
соединения Secure Sockets Layer.
Количество разрядов для секретного ключа серверного
сертификата.
Поле издателя для серверного сертификата.
Поле темы для серверного сертификата.
Идентификатор в текстовом формате для экземпляра IIS.
Путь метабазы для экземпляра IIS.
Возвращает адрес сервера (Server Address), с которого
поступил запрос. Важно в случае группЪвых компьютеров, когда
с одним компьютером связано несколько IP-адресов.
Учетная запись Windows, предназначенная для регистрации
пользователя.
Дополнительная информация о пути, предоставляемая
клиентом.
Транслированная версия, которая в качестве аргумента
использует путь и выполняет все необходимые отображения
типа "виртуальный-физический".
Информация о запросе, хранящаяся в строке за знаком
вопроса (?).
IP-адрес удаленного хоста.
Имя хоста, выполняющего запрос.
Неотображенная строка имени пользователя, отправленная
пользователем.
Метод, применяемый для создания запроса.
Виртуальный путь для вызываемого сценария.
Хост-имя сервера, псевдоним DNS или IP-адрес.
Номер порта.
Строка, содержащая 1, если запрос обрабатывается
защищенным портом; в противном случае здесь содержится 0.
Имя и версия информационного протокола запроса.
Имя и версия серверного программного обеспечения, которое
отвечает на запросы и выполняет шлюз.
URL
Поддерживает базовую часть URL-адреса.
Код в листинге 9.155
нил запрос.
выводит строку пользовательского агента браузера, который выпол-
Глава 9. Серверная сторона
Листинг 9.155. Использование коллекции ServerVariables
<script runat="server" type="text/jscript" language*5"JScript">
Response.Write(Request.ServerVariables("HTTP_USER_AGENT");
</script>
Request.TotalBytes ASP1+
Request.TotalBytes
Свойство TotalBytes объекта Request предназначено только для чтения и содержит об-
шее количество байтов пользовательского агента, отправленных в теле запроса.
Код в листинге 9.156 демонстрирует, как проверить длину в POST и затем считать дан-
данные в SafeArray.
Листинг 9.156. Использование свойства TotalBytes
<script runat="server" type="text/jscript" language="JScript">
//Проверить длину POST-данных.
var myLen = Request.TotalBytes;
//Считать данные.
var mySafeArray - Request.BinaryRead(myLen);
</script>
_____ ES2+
Основной объект, созданный механизмом времени выполнения
JavaScript для каждого клиентского запроса.
# Объект request содержит специфическую информацию о клиентском запросе. Сам объект
имеет несколько свойств, а также может включать некоторые свойства, передаваемые из
формы. Этот объект унаследован от объектов Object.watch() и Object.unwatch(), которые
определялись в главе 7. Свойства объекта request перечислены в табл. 9.27.
Таблица 9.27. Свойства объекта request
Свойство Описание
agent Содержит строку пользовательского агента, отосланную в HTTP-запросе.
ImageX х-координата запроса карты изображения.
ImageY у-координата запроса карты изображения.
formKey Может быть любым ключом из пары key=value, переданной в дескрипторе
<form> на странице.
ip IP-адрес пользовательского запроса.
method HTTP-метод, используемый в запросе.
protocol Уровень протокола, обеспечивающий поддержку запрашивающего агента.
!Х% Код в листинге 9.157 записывает различные свойства запроса на странице.
Листинг 9.157. Использование объекта request для просмотра свойств
запрашивающего агента
<server>
// Вывести на страницу значение каждого свойства запроса.
write('Пользовательский агент: ' + request.agent + '<br>');
write (' Y-координата ISMAP: ' -(-request. imageY + '<br>');
write ('Х-координата ISMAP: ' -(-request. imageX + '<br>') ;
write ('IP-адрес: ' -(-request, ip + '<br>');
write('Метод HTTP: ' -(-request.method + '<br>');
write('Версия протокола: ' +request.protocol + '<br>');
</server>
Честь III. Справочник по JaveScript
request.agent ES2+
request., agent:
Свойство agent объекта request содержит строку пользовательского агента для запра-
запрашивающего приложения. Ниже приводится пример строки пользовательского агента
для Navigator 4.5 в среде Windows 98.
Mozilla/4.5 (Win98; U)
Воспользовавшись несколькими методами объекта String совместно с данным свой-
свойством, несложно определить тип и версию браузера, запрашивающего страницу.
Код в листинге 9.158 проверяет строку агента запрашивающего браузера и перенап-
перенаправляет браузеры Internet Explorer на альтернативную страницу.
Листинг 9.158. Обеспечение доступа к свойству agent объекта request
<server>
//Проверить,является ли текущий браузер браузером Internet Explorer
if(request.agent.indexOf('MSIE') != -1){
redirect(addClient("/iepages/index.html"))■
}
</server>
request, form key ES2+
request.. .formkey
k Свойство formkey объекта request представляет любой отправленный ключ формы. Ключ
указывается с помощью атрибута name в любом элементе HTML-дескриптора <form>.
Код в листинге 9.159 строит форму с ключом "sports", а также демонстрирует исполь-
использование свойства request/fewwkey для считывания значения.
Листинг 9.159. Считывание свойства formkey
<html>
<head>
<title>PIcnxuib3OBaiuie свойства r~ormkey</title>
</head>
<body>
<server>
// Проверка, были ли отправлены данные, либо требуется вывести
// форму для заполнения.
if(request.method == "POST"){
// Вывести выбранную опцию на пользовательскую страницу,
write('Вы выбрали ' + request.sports);
}else{
// Если эта страница была вызвана, вывести на страницу форму
// для ее заполнения пользователем.
write('<form name="myForm" method="post">');
write('<select name="sports">');
write (' <option>Eetic6on</option>') ;
write (' <ор^оп>Американский футбол</ор^оп>') ;
write('<option>EacKeT6on</option>');
write ('<option><S>yT6on</option>') ;
write('<option>Per6H</option>');
write('</select>');
write('<input type="submit" value="Submit">') ;
write('</form>');
}
</server>
</body>
</html>
Глава 9. Серверная сторона
request.imageX ES2+
request.imageX
# Свойство imageX объекта request содержит х-координату запроса карты изображения,
отосланного браузером. Эти запросы имеют следующую форму, где jc представляет собой
числовую х-координату, а у — числовую у-координату:
http://www.purejavascriot.com.clickthru.html?x,у
Код в листинге 9.160 выбирает координаты х и у, переданные в запросе, и выводит их
на страницу пользователя.
Листинг 9.160. Доступ к свойству imageX
<server>
// Вывести на страницу свойства imageX и imageY.
write<"Y-координата ISMAP: ' + request.imageY + '<br>');
write<'Х-координата ISMAP: ' + request.imageX);
</server>
request. imageY ES2+
request.imageY
5^ Свойство imageY объекта request содержит у-координату запроса карты изображения,
отосланного браузером. Эти запросы имеют следующую форму, где х представляет собой
числовую х-координату, а у — числовую у-координату:
http://www.purejavascriot.com.clickthru.html?x,y
Код в листинге 9.161 выбирает координаты х и у, переданные в запросе, и выводит их
на страницу пользователя.
Листинг 9.161. Доступ к свойству irrmgeY
<server>
// Вывести на страницу свойства imageX и imageY.
write('Y-коорднната ISMAP: • + request.imageY + '<br>');
write('Х-координата ISMAP: ' + request.imageX);
</server>
request.ip ES2+
request.ip
Свойство ip объекта request указывает IP-адрес запрашивающего клиента.
■ /«Код в листинге 9.162 проверяет IP-адрес запрашивающего клиента. Если IP-адрес не от-
Р* носится к корректному домену, браузер перенаправляется на страницу с информацией
о недопустимом IP-адресе.
Листинг 9.162. Использование свойства ip для проверки авторизвции
<server>
// Проверить корректность IP-адреса,
if(request.ip.indexOf<07.200.75.") != -1) {
// Перейти на авторизованную страницу.
redirect(addClient("/authorized.html"));
}else{
// Перейти на страницу с информацией об ошибке.
redirect(addClient("/unauthorized.html") ) ,-
}
</server>
request.method ES2+
request.method
846 Часть III. Справочник по JavaScript
$ЗЬ Свойство method объекта request указывает HTTP-метод, используемый в запросе. В за-
<■ висимости от типа передачи данных, в данном случае может использоваться метод PUT
или GET.
Код в листинге 9.163 демонстрирует применение одной и той же страницы для отобра-
отображения и интерпретации формы. Если применяется метод POST, значит, имеет место
передача данных формы. Если применяется метод GET. форма должна быть выведена на
экран.
Листинг 9.163. Оценка свойства method
<server>
// Проверка, были ли отправлены данные, либо требуется вывести
// форму для заполнения.
if(request.method == "POST"){
// Обработать данные формы.
}else{
// Вывести фактическую HTML-форму..
</server>
request.protocol ES2+
request.protocol
k Свойство protocol объекта request указывает версию протокола HTTP, используемого зап-
запросом. Версия представляется в следующем формате:
HTTP/1.0
Код в листинге 9.164 проверяет свойство protocol с целью определения того, использу-
использует ли запрос HTTP 1.1. В данном случае пользователь может включать любой необходи-
необходимый код для обработки, основываясь на версии протокола, поддерживаемой клиентом.
Листинг 9.164. Доступ к свойству protocol
<server>
// Проверить версию протокола.
if(request.protocol.indexOf("l.1") != -1){
// Выполнить обработку формы согласно протоколу HTTP 1.1.
}else{
// Выполнить обработку, не связанную с протоколом HTTP 1.1.
</server>
request.unwatch() ES3+
request.unwatch(свойство)
k Метод unwatchO объекта request применяется для отключения отслеживания свойства,
указанного с помошыо параметра свойство.
Код в листинге 9.165 демонстрирует, как при помощи метода umvatch() прекратить от-
отслеживание указанного свойства agent.
Листинг 9.165. Пример использования методв unwatchU
<server>
//Функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id+") изменено с " + oldValue + " на " + newValue);
return newValue;
// Включить отслеживание.
request.watch("agent" , alertme) ;
// Изменить значение.
request.agent = null;
// Отключить отслеживание.
request.unwatch("agent");
Глава 9. Серверная сторона О 4 7
// Еще раз изменить значение,
request, agent. = null;
</server>
Request.watch() ES3+
request.watch(свойство, функция)
Метод watch() объекта request() применятся для включения отслеживания конкретно-
го свойства, указанного параметром свойство. Как только после вызова метода watch()
значение свойства изменяется, вызывается функция, указанная параметром функция.
Код в листинге 9.166 демонстрирует, как при помощи метода watch() начать отслежи-
отслеживание свойства agent.
Листинг 9.166. Пример использования метода watch()
<server>
//Функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Включить отслеживание.
request.watch("agent", alertme);
/ / Изменить значение.
request.agent = null;
</server>
Response ASP1+
Основной объект среды ASP
k Объект Response является основным объектом среды ASP. Он используется для отправ-
отправки данных обратно пользовательскому агенту, выполняющему запрос. В табл. 9.28 при-
приводится список коллекций и методов этого объекта.
Таблица 9.23. Коллекции и методы объекта Response
Тип Элемент
Коллекция Cookies
Метод AddHeader()
AppendToLogO
BinaryWriteQ
Clear()
End()
Flush()
Redirect()
Write()
Описание
Определяет и устанавливает значения cookie-набора.
Присваивает значение имени HTTP-заголовка.
Добавляет строку в конец записи журнала сервера,
соответствующей данному запросу.
Записывает информацию без применения преобразований
наборов символов.
Очищает буферизованный вывод.
Останавливает обработку файла .asp и возвращает текущий
результат.
Немедленно отправляет буферизованный вывод.
Отправляет браузеру сообщение о перенаправлении.
Записывает переменную в текущий поток вывода HTTP в виде
строки.
В коде листинга 9.167 применяется метод Write() объекта Response для вывода на стра-
страницу фразы "Здравствуй, мир".
Листинг 9.167. Использование метода WriteO объекта Response
<script runat="server" type="text/jscript" language="JScript">
Response.Write("Здравствуй, мир");
</script>
О 4 О Часть III. Справочник no JavaScript
Response. Add Header ()
Response.AddHeader(имя, значение)
Метод AddHeader() объекта Response применяется для добавления заголовка имя с на-
значенным значением в HTTP-заголовок.
Код в листинге 9.168 показывает, как добавить заголовок РЗР, указывающий на спра-
справочный файл политики безопасности.
Листинг 9.168. Использование метода AddHeaderO
<script runat="server" type="text/jscript" language="JScript">
Response.AddHeader <'P3P',
1 policyref="http://www.purejavascript.com/p3p.xml"')
Response.Flush()
</script>
Response.AppendToLogQ ASP1+
Response.AppendToLog(строка)
^ Метод/свойство AppendToLogO объекта Response добавляет строку в конец записи жур-
журнала, которая соответствует текущему запросу. При многократном вызове для текущего
запроса добавление данных в конец данной записи журнала будет продолжаться.
6 Код в листинге 9.169 демонстрирует применение метода AppendToLogO совместно с кол-
коллекцией Request.Cookies для получения доступа к cookie-набору с именем ID и записи
его значения в конец журнального файла.
Листинг 9.169. Использование метода AppendToLogO
<script runat="server" type="text/jscript" language»"JScript">
Response.AppendToLog(Request.Cookies <"ID") ;
Response.Flush();
</script>
Response. BinaryWrite() ASP1+
Response . Binary Write (.данные)
k Метод BinaryWrite() объекта Response применяется для вывода нестроковых данных в
пользовательский агент. Передаваемый параметр должен иметь тип VT_ARRAY или
VT_UT1, представляющий собой массив вариантов беззнаковых однобайтовых символов.
В коде из листинга 9.170 предполагается, что в распоряжении пользователя имеется
объект, создающий двоичные данные, которые затем выводятся с помощью метода
BinaryWrite().
Листинг 9.170. Использование метода BinaryWriteQ
<script runat="server" type="text/jscript" language="JScript">
// Предполагается существование объекта, создающего двоичные данные
Set myBin = Server.CreateObjecf'myApp.createBin");
myResult = myBin.createGif;
/ / Отправить данные.
Response.BinaryWrite(myResult);
</script>
Response. Buffer ASP1+
Response.Buffer = boolean
j Свойство Buffer объекта Response указывает, должен ли сервер буферизовать вывод стра-
страниц. Если значение boolean равно TRUE, все данные буферизуются и не отсылаются
пользовательскому агенту до тех пор, пока обработка страницы не будет завершена либо
пока не будут вызваны методы Response.End() или Response.Flush(). Поскольку это свой-
свойство не может быть установлено после отправки данных агенту, его установку следует
выполнить в первой строке файла.
Глава 9. Серверная сторона
849
Код в листинге 9.171 демонстрирует, как указать серверу на необходимость буферизации
содержимого с последующей отправкой содержимого в результате вызова метода
Response.Flush().
Листинг 9.171. Использование свойства Buffer
<sdript runat="server" type="text/jscript" language="JScript">
Response.Buffer = TRUE;
Response.Write("Здравствуй, мир");
Response.Flush();
</script>
Response.CacheControl ASP1+
Response.CacheControl = строка
i Свойство CacheControl объекта Response используется для замены приватного (Private)
по умолчанию свойства строка на общедоступное (Public) свойство. Установка по умол-
умолчанию утверждает, что только приватный кэш может кэшировать содержимое, сгенери-
сгенерированное данной страницей, в то время как общедоступная установка информирует про-
кси- и другие серверы о том, что они также могут кэшировать содержимое.
Код в листинге 9.172 демонстрирует, как при помощи свойства CacheControl можно
позволить прокси-серверам кэшировать ASP-содержимое.
Листинг 9.172. Использование свойства CacheControl
<script runat="server" type="text/jscript" language="JScript">
Response.CacheControl = Public;
</script>
Reponse.Charset ASP1+
Response.Charset = набор_ символов
§ Свойство Charset объекта Response добавляет набор_символов в конец директивы content-
type HTTP-заголовка.
&Код в листинге 9.173 показывает, как добавить набор символов ISO-LATIN-7 в конец
директивы content-type заголовка.
Листинг 9.173. Использование свойства Charset
<script runat="server" type="text/jscript" languages"JScript">
// Сгенерировать content-type:text/html; charset=ISO-LATIN-7.
Response.Charset = "ISO-LATIN-7";
</script>
Response.Clear()
Response.Clear()
Метод С1еаг() объекта Response применяется для удаления любого буферизованного
выходного тела HTTP-отклика, но не выходного заголовка HTTP-отклика. Для обеспе-
обеспечения работоспособности этого метода потребуется установить Response.Buffer = TRUE.
Код в листинге 9.174 демонстрирует применение метода ClearQ для очистки любых бу-
буферизованных данных тела НТТР-отклика.
Листинг 9.174. Использование метода Clear(]
<script runat="server" type="text/jscript" language="JScript">
// Включить буферизацию.
Response.Buffer = TRUE ;
// Вывести данные в буфер и затем выгрузить их из буфера.
Response.Write("Здравствуй, мир");
Response.Flush();
850 Часть III. Справочник по JavaScript
// Очистить тело отклика.
Response.Clear()
</script>
Response. ContentType ASP1+
Response.ContentType = тип_ содержимого
Свойство ContentType объекта Response устанавливает директиву заголовка content-type.
Если значение не передается, предполагается text/html.
Код в листинге 9.175 демонстрирует, как передать обратно содержимое в виде простого
ASCII-текста, а не HTML.
Листинг 9.175. Использование свойства ContentType
<script runat="server" type="text/jscript" language="JScript">
Response.ContentType = "text/plain"
Response.Write('<Ь>Вы будете наблюдать дескрипторы,
'"•а не полужирный текст</Ь>' ) ;
</script>
Response.Cookies ASP1+
Response.Cookies(имя) = значение
Response.Cookies(имя).атрибут — значение
Response.Cookies{имя)(подключ) = значение
j Коллекция Cookies объекта Response создает и сохраняет cookie-наборы с целью их пе-
передачи пользовательскому агенту. Можно создать cookie-набор, имя которого определя-
определяется параметром имя для значения, воспользовавшись первой синтаксической конструк-
конструкцией метода. Кроме того, возможно передать подключ, который создает словарь
cookie-наборов и добавляет значение в этот словарь как ключ. Наконец, можно передать
указанный атрибут просто для установки или изменения части cookie-набора.
Код в листинге 9.176 показывает, как при помощи коллекции Response.Cookie() созда-
создавать, накапливать и передавать обратно cookie-набор с двумя подключами.
Листинг 9.176. Использование коллекции Cookies
<script runat="server" type="text/jscript" language="JScript">
// Передать Set-Cookie:ID=site=abcSnetwork=123
Response.Cookies("ID")("site") = "abc"
Response.Cookies("ID")("network") = 23"
</script>
Response.End()
Response.End()
h Метод End() объекта Response указывает серверу на необходимость прекращения обра-
обработки сценария и возврата текущих результатов.
$Код в листинге 9.177 демонстрирует, каким образом можно вызывать этот метод для
■ прекращения выполнения текущей страницы.
Листинг 9.177. Использование метода End()
<script runat="server" type="text/jscript" language="JScript">
Response.Write("Это будет выведено");
Response.End();
Response.Write("Это не будет выведено") ;
</script>
Response. Expires ASP1+
Response.Expires = число
Глава 9. Серверная сторона О 5 1
t Свойство Expires объекта Response устанавливает заголовок истечения срока для возвра-
возвращаемого документа за счет указания значения параметра число, заданного в минутах,
которое определяет время устаревания документа. В браузере это значение применяется для
определения времени кэширования документа.
Код в листинге 9.178 устанавливает период истечения для заданной страницы равным
пяти минутам.
Листинг 9.178. Использование свойства Expires
<script runat="server" type="text/jscript" language="JScript">
Response.Expires = 5 ;
Response.Write("Здравствуй, мир");
</script>
Response. ExpiresAbsolute ASP1+
Response.ExpiresAbsolute = дата_время
Свойство ExpiresAbsolute объекта Response устанавливает абсолютную дату истечения для
возвращаемого документа. Дата истечения определяется с помощью параметра дшпа_время
для данного документа. Этот параметр используется браузерами для оценки временного
промежутка кэширования документа.
Код в листинге 9.179 демонстрирует, как установить дату истечения равной 31 октября
2001 г., 8 часов утра.
Листинг 9.179. Использование свойства ExpiresAbsolute
<script runat="server" type="text/jscript" language="JScript">
Response.ExpiresAbsolute = 'October 31,2001 0B:00:00';
Response.Write("Здравствуй, мир");
</script>
Response.Flush()
Response.Flush()
Метод Flush() объекта Response применяется для отправки текущего буферизованного
содержимого пользовательскому агенту. Для корректной работы этого метода свойству
Response.Bufler необходимо присвоить значение TRUE.
Код в листинге 9.180 демонстрирует, каким образом можно указать серверу на необхо-
димость буферизации содержимого, а затем отправить его с использованием метода
Response.Flush(),
Листинг 9.180. Использование метода Flushf)
<script runat="server" type="text/jscript" language="JScript">
Response.Buffer = TRUE ;
Response.Write("Здравствуй, мир");
Response.Flush();
</script>
Response. isClientConnected ASP1+
Response.IsClientConnected
Свойство IsClientConnected объекта Response является булевым свойством, с помощью
которого определяется, остается ли клиент по-прежнему подключенным.
Код в листинге 9.181 показывает, каким образом можно оценивать значение свойства
IsClientConnected внутри оператора if перед выполнением вывода содержимого. Если клиент
не подключен, осуществляется вывод сведений об ошибке в журнальный файл Web-сервера.
Листинг 9.181. Использование свойства IsClientConnected
<script runat="server" type="text/jscript" language="JScript">
if(Response.IsClientConnected){
Response.Write("Клиент подключен");
О О С. Часть III. Справочник по JavaScript
}else{
Response.AppendToLog("Ошибка: клиент отключен");
}
</script>
Response. PICS
Response.PICS{метка)
# Свойство PICS объекта Response добавляет PICS-метку директивы HTTP-заголовка в
текущий поток вывода. Свойство метка содержит корректно отформатированную PICS-
метку.
Код в листинге 9.182 демонстрирует применение свойства PICS для добавления PICS-
метки директивы HTTP-заголовка в текущий поток вывода.
Листинг 9.182. Использование свойства PICS
<script runat="server" type="text/jscript" language="JScript">
Response. PICS (" (PICS-1.1 <http: //www.rsac.org/ratingv01. html> labels on "
S chrC4) & 001.01.05T08-.15-0500" & chrC4) & " until"
5 chrC4) S 002.12.31T23:59-0000" S chrC4)
6 " ratings <v 0 s 0 1 0 n 0))");
</script>
Response. Redirect ASP1+
Response.Redirect(url)
Метод Redirect() объекта Response отправляет обратно соответствующую директиву 302
HTTP-заголовка, которая заставляет браузер запросить и загрузить передаваемый иг/-ад-
рес.
Код в листинге 9.183 демонстрирует, как перенаправить браузер на новую страницу в
случае, если пользователь получает доступ к странице корневого каталога (например,
www.purejavascript.com).
Листинг 9.183. Использование метода Redirect^]
<script runat="server" type="text/jscript" language="JScript">
Response.Redirect("/welcome.asp");
</script>
Response.Status ASP1+
Response.Status = строка
j Свойство Status объекта Response указывает HTTP-состояние отклика.
Код в листинге 9.184 демонстрирует возврат пользователю сообщения об ошибке в случае
некорректного запроса.
Листинг 9.184. Использование свойства Status
<script runat="server" type="text/jscript" language="JScript">
Response.Status = 04 Document Not Found";
</script>
Response.Write()
Response.Write(строка)
Метод Write() объекта Response применяется для записи строки ASCII-символов в поток
вывода.
Код в листинге 9.185 демонстрирует запись в поток вывода фразы "Здравствуй, мир".
Листинг 9.185. Использование метода WriteU
<script runat="server" type="text/jscript" language="JScript">
Глава 9. Сервернея сторона
Response.Write<"Hello World");
</script>
Response.Write("Здравствуй, мир");
Resultset ES3+
Основной объект, создаваемый в результате вызова
Stproc.resultSet().
^Объект Resultset является одним из основных серверных объектов JavaScript.Этот объект
создается после вызова метода resu!tSet() объекта Stproc. В случае с хранимыми проце-
процедурами баз данных DB2, Oracle, Sybase и ODBC объект хранимой процедуры включа-
включает один объект Resultset для каждого SQL-оператора SELECT, вызываемого процедурой.
С другой стороны, в случае работы с хранимыми процедурами Informix используется
только один объект Resultset.
Каждый экземпляр этого объекта имеет свойство для каждого столбца в результирующем
наборе. В случае с хранимыми процедурами Oracle, Sybase и ODBC ссылаться на эти
свойства можно через имена столбцов. Хранимые процедуры Informix и DB2 не поддер-
поддерживают именованные столбцы, поэтому для ссылки на такие столбцы используются чис-
числовые индексы с отсчетом от нуля.
После завершения работы всегда необходимо вызывать метод close() объекта Resultset.
Модуль времени выполнения JavaScript пытается закрыть объект в случае, если связан-
связанный объект DbPool или database выходит за пределы области видимости.
ПРИМЕЧАНИЕ
После создания объекта resultset потребуется выполнить есе опера-
операции над набором до вызова методов commitTransactionO, returnValueO,
outParameters(), Connection.cursor() или Connection.SQLTable().
Объект имеет только одно свойство — prototype. Это свойство может применяться для
создания методов и свойств объекта Resultset. В табл. 9.29 перечислены методы, связан-
связанные с этим объектом.
Таблица 9.29. Методы объекта Resultset
Метод Описание
close() Закрывает объект Resultset и освобождает используемую им память.
columnName() Использует индексированное нумерованное местоположение и возвращает
имя столбца для столбца в данном местоположении.
columnsQ Возвращает количество столбцов в Resultset.
next() Выполняет перемещение с текущей строки объекта Resultset на следующую
строку.
unwatchQ Отключает отслеживание указанного свойства.
watch() Включает отслеживание указанного свойства.
Код в листинге 9.186 создает соединение с базой данных. После тестирования соедине-
соединения метод storedProc() используется для вызова фиктивной хранимой процедуры
sp_employees. Результирующие наборы для этой хранимой процедуры содержатся в экзем-
экземпляре объекта ResultSet.
Листинг 9.186. Объект Resultset
<server>
/ / Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
11 apps PWD " , " myTNS " ) ;
if(myConn.connected() ) {
myConn.beginTransaction();
854 Часть III. Справочник по JavaScript
// Выполнить хранимую процедуру.
таг mystproc = myConn.storedProc("sp_employees");
var myResultSet = myStproc.resultSet();
// Зафиксировать транзакцию.
myConn.commitTransaction();
/ / Закрыть результирующий набор.
myResultSet.close();
// Освободить соединение.
myConn.release();
// В случае сбоя соединения вывести сообщение об ошибке.
}else{
write('Ошибка <'+myConn.majorErrorCode<)+'): ''
+ myConn.majorErrorMessage<);
}
</server>
Resultset.close() ES3+
resultset.close()
# Метод close() объекта Resultset закрывает результирующий набор и освобождает память,
используемую для хранения этой информации. В случае успешного выполнения метод
возвращает значение 0; в противном случае возвращается код ошибки, который можно
получить через методы majorErrorCode() и majorErrorMessage() объектов Connection или
database.
Код в листинге 9.187 создает и затем закрывает результирующий набор.
Листинг 9.187. Закрытие результирующего нвборв с помощью метода closed
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
myConn.begi.nTransacti.on () ;
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Сохранить результирующий набор.
myResultSet = myStproc.resultset();
// Зафиксировать транзакцию.
myConn.commitTransaction<);
// Закрыть результирующий набор.
myResultSet.close<) ;
</server>
Resultset.columnName() ES3+
resultset.columnName< число)
& Метод coIunuiName() объекта Resultset принимает числовое местоположение, индексация
которого начинается с нуля. Методу передается параметр число, а в результате возвра-
возвращается имя столбца по этому местоположению. Обратите внимание, что эти имена не
возвращаются в каком-либо специфическом порядке до тех пор, пока этот порядок не
будет указан. При успешных последовательных вызовах метода возвращаются все столб-
столбцы. Дополнительные сведения можно почерпнуть из примера.
Код в листинге 9.188 определяет два результирующих набора. Один из наборов возвра-
возвращает столбцы с определенными именами, а второй набор — все столбцы. Обратите вни-
внимание на комментарии в коде для потока вывода.
Глава 9. Серверная сторона О О О
Листинг 9.188. Использоввние метода columnlMameO для возврата имен столбцов
в таблице
<server>
// Создать пул соединений.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
// Открыть соединение из пула. Вывести сообщение об ошибке
// в случае невозможности установки соединения,
var myConn = myPool.connection('Employees', 15);
if(myConn.connected() ) {
// Выполнить новую SQL-транзакцию.
myConn.beginTransaction();
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Сохранить результирующие наборы.
var myResultSetl = myStproc.resultSet();
var myResultSet2 = myStproc.resultSet();
//Вывести на страницу столбец #1 из первого результирующего набора
write(myResultSetl.columnName @)) ;
//Вывести на страницу столбец #2 из первого результирующего набора
write(myResultSetl.columnName A));
//Вывести на страницу имена всех столбцов, сохраненных во втором
//результирующем наборе.
for (var i = 0; i <= myResultSet2. columns (); i++) {
write(myResultSet2.columnName(i));
}
// Закрыть результирующие наборы.
myResultSetl.close();
myResultSet2.close();
// Завершить SQL-транзакцию.
myConn.commitTransaction();
// В случае сбоя соединения вывести сообщение об ошибке.
}else{
write('Ошибка (' + myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
// Освободить соединение.
myConn.release();
</server>
Resultset.columns() ES3+
resultset.columns()
# Метод coluniiis() объекта Resultset возвращает количество столбцов в результирующем
наборе, для которого он был вызван. Если для создания результирующего набора при-
применяется SQL-конструкция, указывающая количество возвращаемых столбцов, данный
метод возвращает именно это значение.
Код в листинге 9.189 показывает, как вернуть имена всех столбцов для данного резуль-
тирующего набора.
Листинг 9.189. Использование метода columnsO для определения того, сколько
столбцов находится в результирующем наборе, перед выполнением его вывода на
страницу
<server>
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Сохранить результирующий набор.
var myResultSet = myStproc.resultSet();
856 Чвсть III. Справочник по JavaScript
// Вывести на страницу имена всех столбцов,
// сохраненных в результирующем наборе.
for(var i = 0; i < myResultSet. columns ();
write(myResultSet.columnName(i));
}
// Закрыть результирующий набор.
myResultSet.close();
</server>
resultset.next() ES3+
resultset.next ()
Метод next() объекта Resultset перемещает указатель с текущей строки на следующую
строку в результирующем наборе. Этот метод применяется для выполнения итерации по
строкам в результирующем наборе. Метод возвращает true до тех пор, пока не встретится
последняя строка в наборе; в последнем случае возвращается значение false.
Листинг 9.190. Использоввние метода next(] для выполнения итервции по строкам
в результирующем наборе
<server>
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Сохранить результирующий набор.
var myResultSet = myStproc.resultSetO;
// Выполнить итерацию по каждой строке результирующего набора,
while(myResultSet.next()){
// Осуществить требуемую обработку.
}
// Закрыть результирующий набор.
myResultSet.close();
</server>
Resuftset. prototype ES3+
resultset.prototype.метод = имя
resultset.prototype.значение = свойство
Свойство prototype объекта Resultset позволяет создавать новые свойства и методы объекта.
Если добавляется метод, то тем самым устанавливается экземпляр, соответствующий
параметру имя ранее определенного метода.
Код в листинге 9.191 создает новое свойство и метод для объекта Resultset. При этом
создается экземпляр и устанавливается новое свойство. Затем вызывается новый метод с
целью проверки свойства и, если свойство некорректно, на страницу выводится сооб-
сообщение об ошибке.
Листинг 9.191. Использование свойства prototype для создания нового свойства и
метода
<server>
// Определить прототипируемый метод,
function verifyWork(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "work"){
return true ;
}else{
return false;
}
}
// Создать новые свойство и метод объекта Resultset.
Resultset.prototype.type = null;
Resultset.prototype.isWORK = verifyWork;
Глава 9. Серверная сторона 857
// Создать пул соединений, собственно соединение, хранимую
// процедуру и результирующий набор.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
var myConn = myPool.connection('Employees', 15);
var myStproc = myConn.storedProc("sp_employees");
var myResultSet = myStproc.resultSet();
// Используя уже определенный прототип, установить значение
// свойства type.
myResultSet.type = "work";
// Проверить допустимость типа результирующего набора,
if(myResultSet.isWORK()){
write(myResultSet + " имеет допустимый тип "
+ myResultSet.type);
}else{
write(myResultSet + " имеет недопустимый тип "
+ myResultSet.type);
}
</server>
Resultset.unwatch() ES3+
resultset.unwatch(свойство)
^^ Метод unwatch() объекта Resultset используется для отключения отслеживания опреде-
>" ленного свойства.
Код в листинге 9.192 показывает, как при помощи метода unwatch() прекратить отсле-
отслеживание определенного пользователем свойства type.
Листинг 9.192. Пример использоввния метода unwatch()
<server>
// Определить прототипируемый метод,
function verifyWork(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "work"){
return true ;
}else<
return false;
}
}
//Функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue)(
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые свойство и метод для об<ьехта Resultset.
Resultset.prototype.type = null;
Resultset.prototype.isWORK = verifyWork;
// Создать пул соединений, собственно соединение, хранимую
// процедуру и результирующий набор.
var myPool=new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS");
var myConn = myPool.connection('Employees', 15);
var myStproc = myConn.storedProc("sp_employees");
var myResultSet = myStproc.resultSet();
// Используя уже определенный прототип, установить значение
// свойства type.
myResultSet.type = "work";
// Включить отслеживание.
myResultSet.watch("type", alertme);
// Проверить допустимость типа результирующего набора,
if(myResultSet.isWORK()){
0 ID О Часть III. Справочник по JavBScript
write(myResultSet + " имеет допустимый тип "
+ myResultSet.type);
}else{
write(myResultSet + " имеет недопустимый тип "
+ myResultSet.type);
}
// Изменить значение.
myResultSet.type = null;
// Отключить отслеживание.
myResultSet.unwatch("type");
// Еще раз изменить значение.
myResultSet.type = "home";
</server>
Resultset.watch() ES3+
re sultse t.watch(свойство, функция)
# Метод watch() объекта Resultset применяется для включения отслеживания свойства,
указанного с помощью параметра свойство. Как только свойство, указанное параметром
свойство, изменяется, вызывается функция, указанная с помощью параметра функция.
1 х|Код в листинге 9.193 демонстрирует использование метода watchO для начала отслежи-
<х^ вания определенного пользователем свойства type.
Листинг 9.193. Примвр использования метода watchO
<server>
// Определить прототипируемый метод,
function verifyWork(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "work"){
return true;
}else{
return false;
)
}
//Функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue)(
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать новые свойство и метод для объекта Resultset.
Resultset.prototype.type = null;
Resultset.prototype.isWORK = verifyWork;
// Создать пул соединений, собственно соединение, хранимую
// процедуру и результирующий набор.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
var myConn = myPool.connection('Employees', 15);
var myStproc = myConn.storedProc("sp_employees") ;
var myResultSet = myStproc.resultSet();
// Используя уже определенный проточрип, установить значение
// свойства type.
myResultSet.type = "work";
// Включить отслеживание.
myResultSet.watch("type", alertme);
// Проверить допустимость типа результирующего набора,
if(myResultSet.isWORK()){
write(myResultSet + " имеет допустимый тип "
+ myResultSet.type);
}else{
Глава 9j Серверная сторона
859
write(myResultSet + " имеет недопустимый тип
+ myResultSet.type);
}
// Изменить значение.
myResultSet.type = null;
</server>
ASP1+
ScriptingContext
Основной объект среды ASP
Объект ScriptingContext является основным, однако устаревшим, объектом среды ASP. Он
может возвращать встроенные объекты Application, Request, Response, Server и Session.
Перед использованием этого объекта обязательно следует рассмотреть возможность при-
применения объекта ObjectContext.
Пожалуйста, обратитесь к примерам в разделе, посвященном описанию объекта
ObjectContext, где вы сможете ознакомиться с методами, выполняющими те же функ-
функции, что и данный устаревший объект.
SendMail ES3+
new SendMail()
[ Основной серверный объект SendMail создается с использованием ключевого слова new.
Этот объект обладает свойствами и методами, которые необходимы для отправки сооб-
сообщений электронной почты из JavaScript-приложений. Свойства и методы этого объекта
перечислены в табл. 9.30.
Таблица 9.30. Свойства и методы объекта SendMail
Тип
Свойство
Метод
Элемент
Вес
Body
Сс
Errorsto
From
Organization
Replyto
Smtpserver
Subject
To
errorCode()
ErrorMessage()
send()
unwatch()
watch ()
Описание
Свойство, содержащее адреса электронной почты
пользователей, желающих получить слепые копии сообщений
(Вес — blind carbon copy).
Это свойство содержит фактическое тело сообщения.
Свойство, содержащее электронные адреса пользователей,
желающих получить обычные копии сообщений (Ср — carbon copy).
Свойство, определяющее адреса электронной почты, по
которым будут отправляться сообщения об ошибках.
Свойство, содержащее адрес электронной почты отправителя.
Свойство, определяющее организацию отправителя.
Свойство, определяющее адрес ответа на электронную почту у
отправителя.
Свойство, определяющее IP-адрес либо хост-имя почтового
сервера, выполняющего отправку сообщений.
Свойство, определяющее тему сообщения электронной почты.
Свойство, содержащее адрес электронной почты получателя.
Метод, возвращающий целочисленный код ошибки, которая
может произойти при отправке сообщений электронной почты.
Метод, возвращающий строку, связанную с произвольными
сообщениями об ошибках, могущими произойти при отправке
сообщений электронной почты.
Метод, применяемый для отправки сообщений электронной почты.
Метод, применяемый дли отключения отслеживания указанного
свойства.
Метод, применяемый для включения отслеживания указанного
свойства.
860
Часть III. Справочник по JavaScript
Использование SendMail является предельно простым. Стоит лишь установить те же па-
параметры электронной почты, с которыми приходится иметь дело в традиционных по-
почтовых программах, и обратиться к методу send(). В случае возникновения ошибки по-
потребуется проанализировать ее причины через поддерживаемые объектом методы обработки
ошибок.
Код в листинге 9.194 демонстрирует использование объекта SendMail для создании стра-
страницы, предназначенной для пользователей, которым необходима отправка сообщений
электронной почты.
Листинг 9.194. Пример использования объекта SendMail
<html>
<head>
<ЪхЪ1е>Использование объекта SendMail</title>
</head>
<body>
<server>
// Проверка, были ли отправлены данные, либо требуется вывести
// форму для заполнения,
if(request.method == "POST"){
// Создать экземпляр объекта SendMail.
var myMail = new SendMail();
// Установить значения свойств.
myMail.To = request.toAddress;
myMail.From = request.fromAddress;
myMail.Subject = request.subject;
myMail.Body = request.body;
myMail.Smtpserver = "mail.purejavascript.com";
myMail.Errorsto = "errors@purejavascript.com"
// Попытаться отправить электронную почту.
if(!myMail.send()){
// В случае возникновения ошибки предоставить пользователю
// адрес электронной почты, через который он сможет получать
// консультации по поводу конкретной ошибки,
// код ошибки и сообщение об ошибке.
write("Ошибка при отправке сообщения. Пожалуйста,
"-"отправьте сообщение по адресу ") ;
write(myMail.Errorsto + " со следующим сообщением об ошибке");
write("Ошибка " + myMail.errorCode() + ": "
+ myMail.errorMessage());
)else{
// Если ошибок нет, уведомить пользователя о том, что все в
// порядке.
write("Ваше сообщение было успешно отправлено!");
}
)е1зе{
//Если зта страница была вызвана и данные формы не были отосланы,
//вывести форму на страницу для ее заполнения пользователем.
write("<form name="myForm" method="post">');
write (' <table border=" 1 "XtrXtd> • ) ;
write("<table border=">');
write('<tr align="left" valign="top">');
write ('<tdXb>To:</bX/td>') ;
write ('<tdXinput type="text" name="toAddress" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">');
write ('<tdXb>From:</bx/td>' ) ;
write ('<tdxinput type="text" name="fromAddress" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">');
write ('<tdXb>Subject:</bX/td>') ;
write ('<tdXinput type="text" name="subject" size=0"X/td>') ;
write('</tr>');
write('<tr align="left" valign="top">') ;
Глава 9. Серверная сторона CD I
write ('<td><b>Body:</bX/td>') ;
write('<tdxtextarea name="body" cols=0" rows=0" wrap="soft">');
write('</textarea></td>');
write('</tr>');
write('<tr align="left" valign="top">');
write('<td colspan=2 align="right">') ;
write('<input type="submit" value="Send Mail"X/td>');
write('</tr>');
write('</table>■);
write ('</tdx/trX/table>' ) ;
write('</form>•);
}
</server>
</body>
</html>
SendMail.Bcc
sendMa.il. Вес
Свойство Вес объекта SendMaB определяет электронные адреса получателей, по которым
будут отправлены слепые копии сообщений. Если требуется указать более одного полу-
получателя, адреса электронной почты следует разделять запятыми.
Код в листинге 9.195 демонстрирует установку свойства Вес для экземпляра объекта
SendMail.
Листинг 9.195. Установка свойства Вес
<server>
// Установить свойство Вес,
myMail.Bcc = "publisher@purejavascript.com";
</server>
SendMail.Body
sendmail.Body
Свойство Body объекта SendMail определяет тело отсылаемого электронного сообщения.
Код в листинге 9.196 демонстрирует установку свойства Body для экземпляра объекта
SendMail.
Листинг 9.196. Установка свойства Body
<server>
// Установить свойство Body.
myMail.Body = "Текст сообщения";
</server>
SendMail. Cc
sendmail.Сс
Свойство Сс объекта SendMail указывает электронные адреса получателей, которым бу-
будут отправлены копии сообщений. Если требуется указать более одного получателя, ад-
адреса электронной почты следует разделять запятыми.
Код в листинге 9.197 демонстрирует установку свойства Сс экземпляра объекта SendMail.
Листинг 9.197. Установка свойства Сс
<server>
// Установить свойство Сс.
myMail.Cc = "techeditGpurejavascript.com";
</server>
SendMail.constructor ES2+
sendmail.constructor
О О С. Часть III. Справочник по JavaScript
$3k Свойство constructor объекта SendMail указывает функцию, создающую объект.
Код в листинге 9.198 демонстрирует пример свойства constructor.
Листинг 9.198. Пример свойства constructor
<server>
// Создать экземпляр объекта SendMail.
var myMail = new SendMail();
if(myMail.constructor == SendMail){
write("Object created");
}
</server>
SendMail.errorCode() ES3+
sendma.il. errorCode ()
ffisfe Метод errorCode() объекта SendMail возвращает один из шести кодов ошибок, возник-
"» ших в результате попытки отправить сообщение электронной почты. Коды перечисляются
в табл. 9.31.
Таблица 9.31. Коды ошибок, генерируемые при отправке сообщений электронной почты с помощью
метода SendMail.send()
Код Описание
0 Сообщение успешно отправлено.
1 Не указан отсылающий почтовый сервер SMTP.
2 Отсылающий почтовый сервер SMTP отключен или не существует.
3 Не указан адрес электронной почты получателя сообщения.
4 Не указан адрес электронной почты отправителя.
5 Возникли проблемы с соединением и данные не были отправлены.
Код в листинге 9.199 пытается отправить экземпляр объекта SendMail(). В случае сбоя
метода send() на страницу выводится информация о возникшей ошибке.
Листинг 9.199. Отображение кода ошибки при сбое доставки почтового сообщения с
помощью метода errorCodeO
<server>
// Попытаться отправить экземпляр почты.
if(!myMail.send()){
// В случае возникновения ошибки предоставить пользователю
// адрес электронной почты, используя который он сможет
// получить консультации по поводу данной ошибки, код ошибки
// и сообщение об ошибке.
write("Ошибка при отправке сообщения. Пожалуйста,
^•отправьте сообщение по адресу ") ;
write(myMail.Errorsto + " со следующим сообщением об ошибке:");
write("Ошибка " + myMail.errorCode() + ": "
+ myMail.errorMessage());
}else{
//Если ошибок нет,уведомить пользователя о том, что все в порядке,
write("Ваше сообщение было успешно отправлено!");
}
</server>
SendMail.errorMessage() ES3+
sendmail.errorMessage()
Глава 9. Серверная сторона ODO
Метод errorMessage() объекта Send Mail возвращает строку сообщения об ошибке, сге-
сгенерированную в результате попытки отправить сообщения электронной почты.
| Код в листинге 9.200 отправляет экземпляр объекта ScndMail. Если во время выполне-
' ния метода send() произошел сбой, на страницу выводится информация об ошибке.
Листинг 9.200. Отображение сообщения об ошибке с помощью метода
errorMessageU в случае сбоя доставки сообщения
<server>
// Попытаться отправить экземпляр почты.
if(!myMail.send()){
// В случае возникновения ошибки предоставить пользователю
// адрес электронной почты, используя который он сможет
// получить консультации по поводу данной ошибки, код ошибки
// и сообщение об ошибке.
write("Ошибка при отправке сообщения. Пожалуйста,
^•отправьте сообщение по адресу ") ;
write(myMail.Errorsto + " со следующим сообщением об ошибке:");
write("Ошибка " + myMail.errorCode() + ": "
+ myMail.errorMessage() ) ;
}else{
//Если ошибок нет,уведомить пользователя о том, что все в порядке
write("Ваше сообщение было успешно отправлено!");
}
</server>
SendMail. Errorsto
sendmail.Errorsto
Свойство Errorsto объекта SendMail указывает адрес электронной почты получателя,
которому будет направляться сообщение об ошибке. По умолчанию сообщение отсыла-
отсылается по адресу отправителя. При указании более одного получателя адреса электронной
почты должны разделяться запятыми.
Код в листинге 9.201 демонстрирует установку свойства Errorsto для экземпляра объекта
ScndMail.
Листинг 9.201. Установкв свойства Errorsto
<server>
// Установить свойство Errorsto.
myMail.Errorsto = "authors@purejavascript.com";
</server>
SendMail.From ES3+
sendmail.From
ЯС& Свойство From объекта SendMail определяет адрес электронной почты отправителя со-
"■ общения.
Код в листинге 9.202 демонстрирует установку свойства From для экземпляра объекта
ScndMail.
Листинг 9.202. Установка свойства From
<server>
// Установить свойство From с использованием ключа email из формы,
// отправленной клиентом.
myMail.From = request.email;
</server>
SendMail.Organization ES3+
sendmail.Organization
864 Часть III. Справочник по JavaScript
$S| Свойство Organization объекта SendMail указывает организацию отправителя.
Код в листинге 9.203 демонстрирует установку свойства Organization для экземпляра
объекта SendMail.
Листинг 9.203. Установка свойства Organization
<server>
// Установить свойство Organization.
myMail.Organization = "TIPs Technical Publishing";
</server>
SendMail.prototype ES3+"
sendma.il .prototype, метод = имя
sendmail. prototype. значение = свойство
Свойство prototype объекта SendMail позволяет создавать новые свойства и методы объекта.
Если добавляется метод, то тем самым устанавливается экземпляр, соответствующий
параметру имя ранее определенного метода.
5 Код в листинге 9.204 создает новое свойство и метод для объекта SendMail. При этом
создается экземпляр и устанавливается новое свойство. Затем вызывается новый метод с
целью проверки свойства и, если свойство некорректно, на страницу выводится сооб-
сообщение об ошибке.
Листинг 9.204. Использование свойства prototype для создания нового свойства и
метода
<server>
// Определить прототипируемый метол,
function verifyAttach(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type){
return true;
}else{
return false;
}
}
// Создать новые свойство и метод объекта SendMail.
SendMail.prototype.attachment = null;
SendMail.prototype.hasAttach = verifyAttach;
// Создать объект SendMail.
var myMail = new SendMail();
// Используя уже определенный прототип, установить значение
// свойства type.
myMail.type = false;
// Проверка на предмет присутствия вложения,
if(myMail.hasAttach()){
write(myMail + " имеет допустимый тип " + myMail.type);
)else{
write(myMail + " имеет недопустимый тип " + myMail.type);
}
</server>
SendMail.Replyto ES3+
sendmail.Replyto
Свойство ReplyTo объекта SendMail указывает адреса электронной почты, по которым
отправитель будет ожидать сообщений о доставке.
Код в листинге 9.205 демонстрирует установку свойства ReplyTo для экземпляра объек-
объекта SendMail.
Глава 9. Серверная сторона ODD
Листинг 9.205. Установка свойства ReplyTo
<server>
// Установить свойство ReplyTo с использованием ключа email из
// формы, отправленной клиентом.
myMail.ReplyTo = request.replyto;
</server>
SendMail.send()
sendma.il. send ()
Метод send() объекта SendMail пытается отправить сообщение электронной почты из
значения адреса, указанного свойством From, по адресам, определенным в свойствах То,
Сс и Вес. При этом используется почтовый сервер, указанный в свойстве Smtpserver. В
случае успешного выполнения метод возвращает значение true, в противном случае —
значение false.
Код в листинге 9.206 предпринимает попытку отправить сообщение. Если при этом воз-
возникает ошибка, информация о ней выводится на страницу пользователя.
Листинг 9.206. Отправка сообщения с помощью метода sendO
<server>
// Попытаться отправить экземпляр объекта SendMail.
if('myMail.send()){
// В случае возникновения ошибки предоставить пользователю
// адрес электронной почты, используя который он сможет
// получить консультации по поводу данной ошибки, код ошибки
// и сообщение об ошибке.
write("Ошибка при отправке сообщения. Пожалуйста,
^♦отправьте сообщение по адресу ") ;
write(myMail.Errorsto + " со следующим сообщением об ошибке:");
write("Ошибка " + myMail.errorCod©() + ": "
+ myMail.errorMessage());
}else{
//Если ошибок нет,уведомить пользователя о том, что все в порядке
write("Ваше сообщение было успешно отправлено!");
}
</server>
SendMail.Smtpserver ES3+
SBndma.il. Smtpserver
Свойство Smtpserver объекта SendMail определяет IP-адрес или имя SMTP-сервера, от-
отсылающего электронную почту. По умолчанию этому свойству назначается значение,
установленное в настройках сервера администрирования (Administration Server) для экзем-
экземпляра Enterprise Server, под управлением которого выполняется приложение.
Код в листинге 9.207 демонстрирует установку свойства Smtpserver для экземпляра объек-
объекта SendMail.
Листинг 9.207. Установка свойства Smtpserver
<server>
// Установить свойство Smtpserver с использованием ключа email из
// отправленной пользователем формы.
myMail. Smtpserver = request. szntp ;
</server>
SendMail.Subject
sendma.il. Subject
S3& Свойство Subject объекта SendMail указывает тему отправляемого сообщения электрон-
ной почты.
ODD Часть III. Справочник по JavaScript
Код в листинге 9.208 демонстрирует установку свойства Subject экземпляра объекта
SendMail.
Листинг 9.208. Установка свойства Subject
<server>
// Установить свойство Subject.
rayMail.Subject. = "Мне на саном деле понравилась эта книга!";
</server>
SendMail.To
sendmail.To
Свойство То объекта SendMail указывает адреса электронной почты получателей сообще-
сообщения. Если требуется указать более чем одного получателя, список адресов должен разде-
разделяться запятыми.
Код в листинге 9.209 демонстрирует установку свойства То экземпляра объекта SendMail.
Листинг 9.209. Установка значения свойства То
<server>
// Установить свойство То.
rayMail.То = "authorsepurejavascript.com";
</server>
SendMail.unwatch() ES3+
sendmaxl.unwatch(свойство)
& Метод imwatch() объекта SendMail применяется для отключения отслеживания свойства,
указанного с помощью параметра свойство.
Код в листинге 9.210 демонстрирует, как при помощи метода unwatch() прекратить от-
отслеживание свойства То.
Листинг 9.210. использования метода unwatchO
<server>
// Функция, которая вызывается в случае изменения значения свойства.
function alertme (id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
>
// Создать объект SendMail.
var rayMail = new SendMail();
rayMail.To = "allen@purejavascript.com";
// Включить отслеживание свойства.
myMail.watch("To", alertme);
// Изменить Значение.
myMail.To = "jason@purejavascript.com";
// Отключить отслеживание свойства.
myMail.unwatch("To");
/ / Еще раз изменить значение.
myMail.To = "chuck@purejavascript.com";
</server>
SendMail.watchQ
sendmail.watch(свойство, функция)
Метод watch() объекта SendMail применяется для организации отслеживания свойства,
указанного с помощью параметра свойство. Если после вызова метода watch() указан-
указанное свойство изменяется, будет вызываться функция, определенная в параметре функ-
функция.
Глава 9. Серверная сторона
867
Код в листинге 9.211 демонстрирует, как при помощи метода watch() начать отслежи-
отслеживание свойства То.
Листинг 9.211. использования метода watchO
<server>
//функция, которая вызывается в случае изменения значения свойства
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Создать объект SendMail.
var myMail = new SendMail();
myMail.To = "allen@purejavascript.com";
// Включить отслеживание свойства.
myMail.watch("To", alertme);
// Изменить значение.
myMail.To = "jason@purejavascript.com";
</server>
Server
Основной объект среды ASP
(K$k Объект Server является основным объектом среды ASP. Этот объект обеспечивает доступ
* к служебным функциям сервера. В табл. 9.32 приводится список свойств и методов это-
этого объекта.
Таблица 9.32. Свойства и методы объекта Server
Тип
Методы
Свойство
Элемент
CreateObject()
Execute()
GetLastError()
HTMLEncodeO
MapPatch()
Transfer()
URLEncode()
ScriptTimeout
Описание
Создает экземпляр серверного компонента.
Вызывает на выполнение .asp-файл.
Возвращает объект ASPError, определяющий состояние ошибки.
Применяет к указанной строке HTML-кодирование.
Отображает абсолютный путь к серверу или относительный путь
к текущей странице на физический путь.
Отсылает информацию о текущем состоянии другому .asp-файлу.
Применяет к строке прввила кодирования URL и служебные
символы.
Определяет промежуток времени, в течение которого сценарий
выполняется до наступления таймаута.
Код в листинге 9.212 используется для демонстрации применения свойства ScriptTimeout
объекта Server для определения времени выполнения сценария (в секундах).
Листинг 9.212. Использование объекта Server
<script runat="server" type="text/jscript" language^"JScript">
Server.ScriptTimeout = 60;
</script>
Server. CreateObject() ASP1+
Server.CreateObject{objID)
Метод CreateObject() объекта Server создает экземпляр серверного компонента, ссылка на
который осуществляется через параметр objID. Этот параметр имеет следующий формат:
Поставщик.Компонент.Версия
Код в листинге 9.213 создает экземпляр фиктивного компонента Marketing, относяще-
гося к компании МуСо.
О Ь О Часть III. Справочник по JavaScript
Листинг 9.213. Использование метода CreateObjectU
<script runat="server" type="text/jscript" language="JScript">
Server.CreateObject(MyCo.Marketing);
</script>
Server. Execute() ASP3+
Server.Execute{путь)
# Метод Execute() объекта Server вызывает на выполнение ASP-файл, расположение ко-
которого указывается параметром путь. Обработка файла выполняется так, как будто бы он
является частью текущей страницы.
Код в листинге 9.214 вызывает на выполнение страницу gettime.asp.
Листинг 9.214. Использование метода Executed
<script runat="server" type="text/jscript" language="JScript">
Server.Execute("/tools/gettime.asp");
</script>
Server.GetLastError()
Server.GetLastError()
fe Метод GetLastError() объекта Server создает экземпляр ASPError, содержащий описа-
описание возникшей ошибки.
| Код в листинге 9.215 выводит на страницу сведения о последней возникшей ошибке.
Листинг 9.215. Использование метода GetLastErrorO
<script runat="server" type="text/jscript" language="JScript">
Response.Write(Server.GetLastError().Description);
</script>
Server.HTMLEncode()
Server.HTMLEncode(строка)
Метод HTMLEncode() объекта Server применяет HTML-кодирование к строке, указан-
указанной в параметре строка.
Код в листинге 9.216 создает строку, содержащую два HTML-дескриптора. Перед выво-
выводом на страницу к строке применяется HTML-кодирование.
Листинг 9.216. Использование метода HTMLEmcodeO
<script runat="server" type="text/jscript" language="JScript">
var myString = new String();
myString = "Просмотреть исходный код, дабы убедиться в отсутствии
wдескрипторов <Ь> в данном абзаце <р>";
Response.Write(Server.HTMLEncode(myString));
</script>
Server.MapPath()
Server.MapPath(путь)
/Й& Метод MapPath() объекта Server отображает относительный либо виртуальный путь,
>» указанный с помощью параметра путь, на физический каталог в файловой системе.
Код в листинге 9.217 записывает информацию о пути в файловой системе для запраши-
запрашиваемого URL-адреса.
Листинг 9.217. Использование метода MapPatchO
<script runat="server" type="text/jscript" language^"JScript">
Response.Write(Server.MapPath(Request.ServerVariables("PATH_INFO")));
</script>
Глава 9. Серверная сторона обЭ
Server. ScriptTimeout ASP1+
Server.ScriptTimeout
# Свойство Scripffimeout объекта Server определяет интервал времени (в секундах), который
должен пройти перед тем, как произойдет таймаут для выполняющегося сценария.
Код в листинге 9.218 используется для демонстрации применения свойства ScriptTimeout
объекта Server для подсчета времени (в секундах), прошедшего до прекращения выпол-
выполнения сценария.
Листинг 9.218. Использование свойства ScriptTimeout
<script runat="server" type="text/jscript" language="JScript">
Server.ScriptTimeout = 60;
</script>
Server.Transfer()
Server.Transfer(путь)
Метод Transfer() объекта Server отсылает весь объем обрабатываемой информации, до-
доступной на текущей странице, в ASP-файл, расположение которого указывается в па-
параметре путь.
Код в листинге 9.219 демонстрирует, как текущий сценарий передает данные другому
сценарию.
Листинг 9.219. Использование метода Transfer!)
<script runat="server" type="text/jscript" language="JScript">
// Определить передаваемый элемент.
var version = .0";
Server.Transfer("/scripts/logversion.asp");
</script>
Server. URLEncode()
Server.URLEncode(строка)
Метод URLEncode() объекта Server применяет URL-кодирование к строке, указанной в
параметре строка.
Код в листинге 9.220 создает строку, которая содержит два HTML-дескриптора и несколь-
несколько пробелов. Перед выводом на страницу применяется URL-кодирование.
Листинг 9.220. Использование метода URLEncodeO
<script runat="server" type="text/jscript" language="JScript">
var myString = new String ();
myString = "Просмотреть исходный код, дабы убедиться в отсутствии
*■» дескрипторов <Ь> в данном абзаце <р>" ;
Response.Write(Server.URLEncode(myString));
</script>
server ES2+
Основной объект, создаваемый при запуске на выполнение экземпляра.
сервера Enterprise Server.
\ Объект server относится к числу основных серверных объектов. Экземпляр этого объек-
объекта создается для каждого экземпляра выполняемого сервера Enterprise. После завершения
выполнения серверного процесса этот объект уничтожается.
Объект server может применяться для хранения глобальных данных, которые будут со-
совместно использоваться, а также управляться при работе с пользовательскими приложени-
приложениями. В силу этого может потребоваться устанавливать и отменять блокировку кода в случае
изменения свойств, определенных в приложениях. Свойства объект server перечислены в табл.
9.33. Обратите внимание, что все эти свойства доступны только для чтения.
870
Тип
Метод
Свойство
Элемент
1оск()
unlock()
unwatch()
watch ()
host
hostname
port
protocol
Часть III. Справочник по JavaScript
Таблица 933. Свойства и методы объекта server
Описание
Блокирует код при манипулировании данными в случае, когда с
этими данными связан единственный поток.
Отменяет блокировку ранее заблокированного кода.
Прекращает отслеживание указанного свойства.
Устанавливает отслеживание указанного свойства.
Указывает имя сервера, поддомена, а также имя домена для
Web-сервера.
Содержит ту же самую информацию, что и в случае конкатенации
свойств host и port с двоеточием в качестве разделителя.
Указывает номер порта, на котором выполняется сервер.
Содержит часть URL-адреса, определяющую протокол. Сюда
входит информация, помещенная до первого двоеточия,
например, http:.
Код в листинге 9.221 использует методы lock() и unlock() объекта server для блокировки
рабочего кода при изменении свойства totalHMs.
Листинг 9.221. Доступ к свойствам объекта server
<server>
// Заблокировать код и выполнить приращение значения счетчика
// объекта server.
server.lock();
server.totalHits += 1 ;
// Снять блокировку кода,
server.unlock();
</server>
server, host ES2+
server.host
& Свойство host объекта server содержит имя сервера, любого поддомена, а также имя
домена для Web-сервера.
f Код в листинге 9.222 выводит на страницу пользователя значение параметра host серве-
сервера.
Листинг 9.222. Доступ к свойству host
<server>
// Вывести на страницу значение свойства host.
write(server.host);
</server>
server, hostname ES2+
server.hostname
# Свойство hostname объекта server определяет имя сервера, любой поддомен, имя до-
домена и порт Web-сервера. Это свойство определяет ту же самую информацию, что и кон-
конкатенация свойств host и port, разделенных двоеточием.
I</% Код в листинге 9.223 выводит на страницу пользователя значение параметра hostname.
Листинг 9.223. Доступ к свойству hostname
<server>
// Вывести на страницу
write(server.hostname);
</server>
значение свойства hostname.
Глава 9. Серверная сторона О / I
server. lock() ES2+
server.lock()
# Метод Iock() объекта server блокирует рабочий код до тех пор, пока он не будет явно
разблокирован. Если код был уже заблокирован, метод ожидает до тех пор, пока не смо-
сможет получить блокировку, пока не наступит тайм-аут, либо пока не произойдет ошибка.
Код в листинге 9.224 устанавливает объект server со свойством типа счетчика totalHits.
Поскольку в данном случае значение счетчика увеличивается при каждом новом пользо-
пользовательском запросе для каждого приложения, этот счетчик потребуется заблокировать.
Листинг 9.224. Использование метода lock() для блокировки кода
<server>
// Заблокировать код и выполнить приращение значения счетчика
// объекта server.
server.lock();
server.totalHits += 1;
// Снять блокировку кода.
server.unlock() ;
</server>
server, port ES2+
server.port
& Свойство port объекта server содержит номер порта, на котором выполняется Web-сервер.
Код в листинге 9.225 выводит на страницу пользователя значение параметра port сервера.
Листинг 9.225. Доступ к свойству port
<server>
// Вывести на страницу значение свойства port..
write(server.port);
</server>
server.protocol ES2+
server.protocol
0& Свойство protocol объекта server содержит протокол, на который реагирует сервер. Ин-
|» формация о протоколе включает в себя все до первого двоеточия, например, http:.
ъ/% Код в листинге 9.226 выводит на страницу пользователя значение свойства protocol сер-
Р" вера.
Листинг 9.226. Доступ к свойству protocol
<server>
// Вывести на страницу значение свойства protocol,
write(server.protocol) ;
</server>
server.unlock() ES2+
server.unlock()
# Метод unlock() объекта server разблокирует ранее заблокированный код. В случае успеш-
успешной разблокировки возвращается значение true, а при неудачной — false.
Код в листинге 9.227 устанавливает объект server со свойством типа счетчика MtCount.
Поскольку при каждом новом пользовательском запросе выполняется увеличение значения
счетчика, последний должен быть заблокирован. Если значение счетчика увеличилось,
значит, блокировка была установлена.
О / С. Часть ill. Справочник по JavaScript
Листинг 9.227. Использование метода unlockU для отмены блокировки кода
<server>
// Заблокировать код и выполнить приращение значения счетчика
// объекта server.
server.lock();
server.hitCount += 1 ;
// Снять блокировку кода,
server.unlock();
</server>
server. unwatch() ES3+
server.unwatch(свойство)
# Метод unwatch() объекта server применяется для отключения отслеживания свойства,
указанного с помощью параметра свойство.
Код в листинге 9.228 демонстрирует, как при помощи метода unwatch() прекратить от-
отслеживание свойства hostname.
Листинг 9.228. Пример использования метода unwatch()
<server>
//Функция, которая вызывается в случае изменения значения свойства.
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Включить отслеживание свойства на случай его изменения,
server.watch("hostname", alertme);
// Отключить отслеживание свойства,
server.unwatch("hostname");
</server>
SendMail.watch()
server.watch(свойство, функция)
Метод watch() объекта server применяется для организации отслеживания свойства,
указанного с помощью параметра свойство. Если после вызова метода watch() указан-
указанное свойство изменяется, будет выполняться функция, определенная с помощью пара-
параметра функция.
Код в листинге 9.229 демонстрирует, как при помощи метода watch() начать отслежи-
отслеживание свойства hostname.
Листинг 9.229. использования метода watch()
<server>
//Функция, которая вызывается в случае изменения значения свойства.
function alertme(id, oldValue, newValue){
write ("ID (" + id + ") изменено с " + oldValue + " на "
+ newValue);
return newValue;
}
// Включить отслеживание свойства на случай его изменения,
server.watch("hostname", alertme);
</server>
Session
Основной объект среды ASP.
Метод Session является основным объектом среды ASP. Этот объект применяется для хра-
хранения информации, связанной с конкретным пользователем в сеансе. В данном случае
речь идет об информации для всего сеанса пользователя, а не только о текущей стра-
Глава 9. Серверная сторона
873
нице. Сервер автоматически создает этот объект в случае, когда пользователь, не отно-
относящийся к текущему сеансу, выполняет запрос. Список коллекций, событий, методов
и свойств для данного объекта приводится в табл. 9.34.
Таблица 9.34. Коллекции, свойства, события, методы объекта Session
Тип
Коллекция
Событие
Метод
Свойство
Элемент
Contents
StaticObjects
Session OnEnd
Session OnStart
Abandon()
Contents. Remove()
Contents.RemoveAIIO
CodePage
LCID
SessionID
Timeout
Описание
Содержит элементы, добавленные в ходе выполнения
сеанса при помощи команд сценариев.
Содержит объекты, созданные с помощью дескриптора
<object> с учетом заданной области видимости сеанса.
Объявлено в файле Global.asa.
Объявлено в файле Global.asa.
Уничтожает объект Session и освобождает системные
ресурсы.
Удаляет элемент из коллекции Contents.
Удаляет все элементы из коллекции Contents.
Устанавливает кодовую страницу, используемую для
отображения символов.
Идентифицирует локальное местоположение.
Возвращает идентификатор сеанса для данного пользователя
Указывает период таймаута для состояния сеанса.
Код в листинге 9.230 демонстрирует применение свойства Timeout объекта Session для
указания периода времени в минутах, оставшегося до завершения выполнения сеанса
сценария.
Листинг 9.230. Использование объекта Session
<script runat="server" type="text/jscript" language="JScript">
Session.Timeout = 15;
</script>
Session. Abandon ASP1+
Session.Abandon()
Метод Abandon() объекта Session уничтожает все элементы, которые были добавлены к
текущему экземпляру объекта Session. При этом освобождаются все ранее задействован-
задействованные системные ресурсы. Если этот метод не был вызван явно, сервер вызывает его по
завершении сеанса.
ПРИМЕЧАНИЕ
При вызове этого метода ресурсы и элементы не очищаются до тех
пор, пока обработка страницы не будет завершена. При этом возможно использование
элементов, которые были отмечены для отмены применения на текущей странице, но
не на последующих страницах.
Код в листинге 9.231 создает элемент сеанса, уничтожает все элементы сеанса, а затем
создает новый элемент. Как только эта операция будет завершена, сценарий предприни-
предпринимает попытку вывода на страницу двух элементов. Поскольку оба элемента находятся на
одной и той же странице, для которой вызывается метод Abandon(), они оба и выво-
выводятся. Однако элемент version на последующих страницах в рамках одного и того же се-
сеанса доступен не будет.
Листинг 9.231. Использование метода AbandonO
<script runat="server" type="text/jscript" language="JScript">
// Создать элемент "version", который находится только на данной
// странице.
Session("version") = .0";
О /4 Часть III. Справочник по JavaScript
/ / Уничтожить сеанс.
Session.Abandon();
// Создать новый элемент, который будет существовать до тех пор,
// пока не будет вызван очередной метод Abandon О , либо пока не
// Завершится сеанс.
Session("name") = "Аллен";
// Попытаться вывести на страницу оба элемента.
Response.Write(Session("version"));
Response.Write(Session("name"));
</script>
Session.CodePage ASP1+
Session.Cod©Page(кодовая_страница)
# Свойство CodePage объекта Session определяет кодовую страницу, которая будет исполь-
использоваться при отображении динамического содержимого. Кодовая страница определяется
числовым значением набора символов, применяемым при идентификации различных
языков и локализаций.
Код в листинге 9.232 устанавливает свойство CodePage для представления содержимого
в кодовой таблице American English ANSI.
Листинг 9.232. Использование свойства CodePage
<script runat="server" type="text/]script" language="JScript">
Session.CodePage A252) ;
</script>
Session.Contents
Session.Contents(имя)
Коллекция Contents объекта Session включает коллекцию элементов, которые были со-
созданы для экземпляра сеанса без использования элемента <object>. Доступ к конкретным
элементам осуществляется через параметр имя. Коллекция также содержит методы
Remove() и RemoveА11().
Код в листинге демонстрирует добавление элементов к экземпляру объекта Session, до-
доступ к требуемым элементам через коллекцию Contents, а также очистку всех элемен-
элементов с использованием метода RemoveAU.
Листинг 9.233. Использование коллекции Contents
<script runat="server" type="text/jscript" language="JScript">
// Добавить к сеансу несколько элементов.
Session("version") = .0";
Session("author") = "P. Аллен Вайк";
// Получить доступ к элементу "author".
Response.Write(Session.Contents("author"));
// Удалить все элементы объекта Session.
Session .Contents .RemoveAU () ;
</script>
Session.Contents.RemoveQ ASP1+
Session.Contents.Remove(имя)
Session.Contents.Remove(число)
fe Метод Remove() из коллекции Contents объекта Session применяется для удаления эле-
элемента коллекции, указанного с помощью параметра имя. Помимо этого можно восполь-
воспользоваться индексом местоположения, передаваемым в параметре число, и точно так же
удалять элементы.
Код в листинге 9.234 демонстрирует метод добавления элементов к экземпляру объекта
Session, доступ к определенным элементам коллекции Contents, а также способ очист-
очистки элементов с использованием метода RemoveQ.
Главв 9. Серверная сторонв 87U
Листинг 9.234. Использование метода Removed
<script runat="server" type="text/jscript" language="JScript">
// Добавить к сеансу несколько элементов.
Session("version") = .0";
Session("author") = "P. Аллея Вайк";
// Получить доступ к элементу "author".
Response.Write(Session.Contents("author"));
// Удалить элемент "author" из объекта Session.
Session.Contents.Remove("author");
</script>
Session.Contents. RemoveAIIO ASP1+
Session.Contents.RemoveAll()
# Метод RemoveAH() из коллекции Contents объекта Session удаляет все элементы, кото-
которые были добавлены в сеанс.
Листинг 9.235. Использование метода RemoveAIIO
<script runat="server" type="text/jscript" language^"JScript">
// Добавить к сеансу несколько элементов.
Session("version") = .0";
Session("author") = "P. Аллеи Вайк";
// Получить доступ к элементу "author".
Response.Write(Session.Contents("author"));
// Удалить все элементы объекта Session.
Session.Contents.RemoveAll();
</script>
Session.LCID
Session.LC ID
Свойство LCID объекта Session устанавливает идентификатор локализации для отобра-
отображения динамического содержимого. Эта явная настройка отменяет действие любых дирек-
директив @LCID, которые могут быть присутствовать в файле.
Код в листинге 9.236 демонстрирует присваивание идентификатору локализации значе-
значения British English.
Листинг 9.236. Использование свойства LCID
<script runat="server" type="text/jscript" language="JScript">
Session.LCID = 2057;
</script>
Session.SessionID ASP1+
Session.SessionID
Свойство SessionID объекта Session определяет уникальный идентификатор, сгенериро-
сгенерированный сервером для текущего экземпляра объекта Session.
Код в листинге 9.237 выводит текущее значение свойства SessionID.
Листинг 9.237. Использование свойства SessionID
<script runat="server" type="text/jscript" language="JScript">
Response.Write(Session.SessionID);
</script>
Session.SessionOnEnd ASP1+
function Session_OnEnd() {
код
О 7 6 Часть III. Справочник по JavaScript
# Событийная функция Session_OnEnd объекта Session вызывается в случае генерации со-
события Session_OnEnd. Это происходит при завершении сеанса либо по прошествии за-
заданного интервала времени.
Код в листинге 9.238 демонстрирует добавление строки в конец журнального файла во
время последнего запроса сеанса.
Листинг 9.238. Использование события Session_OnEnd
<script runat="server" type="text/jscript" language="JScript">
function Session_OnEnd(){
Response.AppendToLog("Ваш сеанс завершен");
</script>
Session. Session_OnStart ASP1+
function SeBSion_OnStart() {
код
s| Событийная функция Session_OnStart объекта Session вызывается в случае генерации
события Session_OnStart. Это происходит после начала выполнения сеанса.
Код в листинге 9.239 демонстрирует добавление строки в конец журнального файла во
время первого запроса сеанса.
Листинг 9.239. Использование события Session_OnStart
<script runat="server" type="text/jscript" language="JScript">
function Session_OnStart(){
Response.AppendToLog("Ваше приложение напущено");
</script>
Session.StaticObjects ASP1+
Session.StaticObjectB(имя)
Коллекция StaticObjects объекта Session хранит все объекты, созданные вместе с элемен-
элементами <object> с учетом области видимости текущего сеанса. Доступ к этим элементам
обеспечивается через имя, передаваемое в параметре имя, которое устанавливается для
каждого экземпляра из набора элементов.
Код в листинге 9.240 демонстрирует захват экземпляра myControl с текущей ASP-стра-
ницы.
Листинг 9.240. Использование коллекции StaticObjects
<script runat="server" type="fcext/3script" language="JScript">
Session.StaticObjects("myControl");
</script>
Session.Timeout ASP1+
Session.Timeout
\ Свойство Timeout объекта Session определяет интервал времени в минутах, который дол-
должен пройти до возникновения таймаута текущего сеанса.
Код в листинге 9.241 демонстрирует, как при помоши свойства Timeout объекта Session
задать интервал времени в минутах до завершения сеанса.
Листинг 9.241. Использование свойства Timeout
<script runat="server" type="text/jscript" language="JScript">
Session.Timeout = 15;
</script>
Глава 9. Серверная сторона
877
ssjs_generateCIientlD() ES3+
ssjs_generateClientID()
Функция верхнего уровня ssjs_generateClientID() не связана с каким-либо основным
серверным объектом. Эта функция возвращает уникальный идентификатор из механиз-
механизма времени выполнения. Благодаря этому можно отслеживать пользовательские сеансы на
нескольких страницах при организации сопровождения со стороны клиента. Идентифи-
Идентификатор можно сохранить как свойство объекта client, однако потребуется запретить доступ
к нему со стороны других клиентов.
Код в листинге 9.242 демонстрирует назначение свойству объекта client идентификатора
с целью отслеживания пользователя.
Листинг 9.242. Использование функции ssjs_generateClientlD()
<server>
// Сохранить идентификатор в свойстве client.
client.sessionID = ssjs_generateClientID();
</server>
ssjs_getCGIVariabie() ES3+
ss js_getCGIVariable (леременная_среды)
% Функция верхнего уровня ssjs_getCGIVariable() не связана с каким-либо основным сер-
• верным объектом. Эта функция позволяет производить выборку переменных среды, ко-
которые являются доступными для пользовательских CGI-процессов. Если переменная не
может быть найдена, функция возвращает значение null. В табл. 9.35 приводится список
по умолчанию переменных, к которым возможен доступ.
Таблица 9.35. Переменные среды, доступ к которым возможен с помощью функции ssjs_getCGlVariable()
Переменная
Описание
AUTHTYPE Тип авторизации (в случае, если запрос защищен с помощью
некоторого вида авторизации). Возвращается значение наподобие
basic.
HTTPS Эта переманная показывает, активна ли система безопасности
сервера. Возвращаются значения ON или OFF.
HTTP KEYSIZE
Количество разрядов ключа, используемого для шифрования сеанса.
HTTPS__SECRETKEYSIZE Количество разрядов, используемых для генерации секретного
ключа сервера.
PATHJNFO Информация о пути к выбираемому файлу. Этот путь выглядит
следующим образом: /sports/baseball.html.
PATH TRANSLATED
QUERY STRING
Фактический путь к выбираемому файлу. Этот путь определяется
в формате типа /netscape/suitespot/docs/sports/baseball.html.
Информация, указанная после символа ? в URL-адресе.
REMOTE ADDR
IP-адрес хоста, отправляющего запрос.
REMOTEHOST Адрес хоста, отправляющего запрос. Для задействования этой
возможности должен быть включен DNS.
REMOTEJJSER Имя локального HTTP-пользователя Web-браузера, указываемое в
случае.если для данного URL-адреса включана авторизация доступа.
REQUEST METHOD
Тип выполненного запроса, например, GET или POST.
SCRIPT NAME
Выбираемое имя файла, такое как index.html.
SERVER NAME
Имя или IP-адрес хоста, на котором выполняется сервер.
SERVER PORT
Номер порта, на котором выполняется сервер.
SERVER PROTOCOL
SERVER URL
Версия протокола, поддерживаемого запрашивающим клиентом,
например. НТТР/1.О.
URL-адрес, который желает посетить пользователь при доступе к
серверу, например, http://www.purejavascript.com:6969.
О / О Часть III. Справочник по JavaScript
Код в листинге 9.243 возвращает переменную SERVER_URL и присваивает ее свойству
объекта server.
Листинг 9.243. Выборка переменной среды
<server>
// Сохранить идентификатор в свойстве объекта server.
server.serverURL = ssjs_getCGIVariable(SERVER_ORL);
</server>
ssjs_getClientlD()
ssjs_getClientID()
Функция верхнего уровня ssjs_getQientID() не связана с каким-либо основным серверным
объектом. Эта функция возвращает уникальный идентификатор из механизма времени
выполнения. Благодаря этому можно отслеживать пользовательские сеансы на несколь-
нескольких страницах при организации сопровождения со стороны сервера. За счет использова-
использования этой функции отпадает необходимость в хранении идентификатора в каком-либо
свойстве объекта client.
Код в листинге 9.244 выводит на страницу идентификатор, сгенерированный функцией
ssjs_getClientID().
Листинг 9.244. Результат выполнения функции ssjs_getCliBntlD
<server>
// Сохранить идентификатор в переменной.
var myldentifier = ssjs_getClientID();
// Вывести идентификатор на страницу.
write(myldentifier);
</server>
Stproc
Основной объект, создаваемый методом storedProc() базы данных или
объектов Connection.
fj£5| Объект Stproc представляет собой основной серверный объект, создаваемый методом
• storedProc() объектов Connection и database. Учитывая природу подключений к базам
данных, после завершения обработки обязательно следует вызывать метод close() соот-
соответствующего объекта. В результате освобождается память, используемая хранимой про-
процедурой. Если же метод не вызывался, объект уничтожается после выхода объектов
Connection или database за пределы области видимости.
Объект имеет только одно свойство prototype, которое применяется для добавления ме-
методов и свойств к объекту. В табл. 9.36 перечислены методы объекта Stproc.
Таблица 9.36. Методы объекта Stproc
Метод Описание
close() Закрывает экземпляр хранимой процедуры.
outParamCount() Возвращает количество выходных параметров хранимой процедуры.
outParametersQ Возвращает значение выходного параметра, переданного методу.
resultSetQ Создает новый объект Resultset.
returnValueQ Возвращает выходное значение хранимой процедуры.
unwatchQ Отменяет отслеживание указанной процедуры.
watchQ Устанавливает отслеживание указанной процедуры.
Код в листинге 9.245 создает экземпляр объекта Stproc через объект Connection. Затем
вызывается метод storedProc() и объект закрывается.
Глааа 9. Серверная сторона
879
Листинг 9.245. Создание экземпляра объекта Stproc
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
myConn.beginTransaction();
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Зафиксировать транзакцию.
myConn.commitTransaction();
// Закрыть результирующий набор.
myConn.close();
</server>
Stproc.close() ES3+
stproc.close()
# Метод close() объекта Stproc закрывает хранимую процедуру и освобождает память, ис-
используемую для хранения информации. В случае успеха возвращается 0, в противном
случае возвращается код ошибки, который можно получить с использованием методов
major ErrorCode() и majorErrorMessage() объектов Connection и database.
i s% Код в листинге 9.246 сначала создает хранимую процедуру, а затем закрывает ее.
Листинг 9.246. Закрытие курсора с помощью метода closed
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
myConn.beginTransaction();
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Сохранить результирующий набор.
var myResultSet = myStproc.resultSet();
// Зафиксировать транзакцию.
myConn.commitTransaction();
// Закрыть результирующий набор.
myResultSet.close();
</server>
Stproc.outParamCount() ES3+
srproc.outFaramCount()
# Метод outParamCountO объекта Stproc возвращает количество выходных параметров для
хранимой процедуры. Следует убедиться, что этот метод вызывается до обращения к
методу outParameters, тем самым гарантируя возврат данных параметров.
ПРИМЕЧАНИЕ
Хранимые процедуры Informix не имеют выходных пераметров, поэтому
при аызове этого метода для базы данных Informix всегда возвращается О.
Код в листинге 9.247 открывает соединение с базой данных и выполняет хранимую про-
процедуру. На базе количества выходных параметров сценарий выводит на страницу значе-
значения параметров.
Листинг 9.247. Использование метода outParamCountO
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
О oU Часть III. Справочник по JavaScript
myConn.beginTransaction() ;
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Вывести на страницу выходные параметры хранимой процедуры,
for (var i = 0; i < myStproc. outParamCount () ; i++) {
write(myStproc.outParameters(i) + '<br>');
}
// Закрыть результирующий набор.
myStproc.close();
// Зафиксировать транзакцию.
myConn.commitTransaction();
</server>
Stproc.outParameters ES3+
# Метод outParameters объекта Stproc возвращает выходной параметр из хранимой проце-
процедуры, который находится по индексу число. Возвращаемое значение может иметь тип
string, number, double или object. До вызова данного метода следует обратиться к мето-
методу outParamCount(), благодаря чему гарантируется возврат параметров.
ПРИМЕЧАНИЕ
Хранимые процедуры Informix не имеют выходных параметров, поэтому
при работе с базами данных Informix этот матод вызывать не следует.
Код в листинге 9.248 открывает соединение с базой данных и запускает на выполнение
хранимую процедуру. Используя сведения о количестве выходных параметров, сценарий
выводит на страницу значения параметров.
Листинг 9.248. Использование метода outParametersQ
<server>
// Открыть соединение.
var myConn = database.connect("ORACLE", "mySID", "myApp",
11 appsPWD " , "myTNS ") ;
myConn.beginTransaction();
// Выполнить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
// Вывести на страницу выходные параметры хранимой процедуры.
for(var i = 0; i < myStproc.outParamCount(); i++) {
write(myStproc.outParameters(i) + '<br>');
}
// Закрыть результирующий набор.
myStproc.close();
// Зафиксировать транзакцию.
myConn.commitTransaction();
</server>
Stproc. prtotype ES2+
stproc.prototype.метод = имя
s tproc.prototype.свойство = значение
й Свойство prototype объекта Stproc позволяет создавать новые свойства и методы объек-
объекта. Если добавляется метод, то тем самым устанавливается экземпляр, соответствующий
параметру имя ранее определенного метода.
Код в листинге 9.249 создает новое свойство и метод для объекта Stproc. При этом со-
создается экземпляр и устанавливается новое свойство. Затем вызывается новый метод для
проверки свойства и если свойство некорректно на страницу пользователя выводится
сообщение об ошибке.
Глава 9. Серверная сторона о и 1
Листинг 9.249. Использование свойства prototype для создания нового свойства и
метода
<server>
// Определить прототипируемый метод,
function verifyWork(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "work"){
return true ;
}else{
return false;
// Создать новый свойство и метод для объекта Stproc.
Stproc.prototype.type = null;
Stproc.prototype.isWORK = verifyWork;
// Создать пул соединений, само соединение, хранимую процедуру и
// результирующий набор.
var myPool=new DbPool("ORACLE","mySID","myApp", "appsPWD", "myTNS");
var myConn = myPool.connection('Employees', 15);
var myStproc = myConn.storedProc("sp_employees");
// Используя уже определенный прототип, установить значение
// свойства type.
myStproc.type = "work";
// Проверить допустимость типа хранимой процедуры,
if(myStproc.isWORK()){
write(myStproc + " имеет допустимый тип " + myStproc.type);
}else{
write(myStproc + " имеет недопустимый тип " + myStproc.type);
}
</server>
Stproc. resultSet() ES3+
stproc.resultSet()
| Метод resultSet() объекта Stproc создает объект Resultset, предназначенный для хране-
ния результатов выполнения хранимых процедур. Если хранимые процедуры имеют от-
отношение к базам данных DB2, Oracle, Sybase и ODBC, объект хранимой процедуры
имеет один объект Resultset для каждого SQL-оператора SELECT, выполненного про-
процедурой. С другой стороны, хранимая процедура Informix обладает лишь одним объек-
объектом Resultset.
Каждый экземпляр этого объекта имеет по одному свойству для каждого столбца в ре-
результирующем наборе. При работе с хранимыми процедурами Oracle, Sybase и ODBC
доступ к этим свойствам осуществляется по именам столбцов. Хранимые процедуры
Informix и DB2 не имеют именованных столбцов, поэтому для получения доступа к стол-
столбцу придется воспользоваться числовым индексом, нумерация которого начинается с
нуля.
После завершения работы с объектом Stproc необходимо вызывать метод close(). Модуль
времени выполнения JavaScript будет пытаться закрыть объект в случае, если связанный
объект database или DbPool выходит за пределы области видимости.
ПРИМЕЧАНИЕ
После создания результирующего набора все опервции, связанные с
ним, следует выполнять перад обращением к методвм commitTransaction(),
returnValuet), outParameters(), Connection.cursor() и Connection.SQLTable().
bbc Часть III. Справочник по JavaScript
Код в листинге 9.250 создает соединение с базой данных. После завершения проверки
соединения метод storedProc() применяется для вызова фиктивной хранимой процеду-
процедуры spjemployees. Результирующие наборы, выданные этой хранимой процедурой, затем
сохранияются в экземпляре объекта Resultset, который создается с помощью метода
resultSeU).
Листинг 9.250. Вызов метода resultSetO
<server>
// Открыть соединение..
var myConn = database.connect("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
if(myConn.connected()) {
myConn.beginTransaction();
// Запустить хранимую процедуру.
var myStproc = myConn.storedProc("sp_employees");
myResultSet = myStproc.resultSet();
// Зафиксировать транзакцию.
myConn.commitTransaction();
// Закрыть результирующий набор.
myResultSet.close();
// Освободить соединение.
myConn.release();
// В случае сбоя соединения вывести сообщение об ошибке.
}else{
write('Ошибка ('+myConn.majorErrorCode()+'): ''
+ myConn.majorErrorMessage();
}
</server>
Stproc.returnValue() ES3+
stproc.returnValue ()
& Метод returnValue() объекта Stproc выдает значение возврата хранимой процедуры. В слу-
^ чае с базами данных DB2, Informix и ODBC этот метод всегда возвращает значение null.
При работе с базой данных Oracle null возвращается только в том случае, если храни-
хранимая процедура не возвращает какого-либо значения. В случае с базой данных Sybase зна-
значение возвращается всегда.
ПРИМЕЧАНИЕ
Перед вызовом этого метода необходимо произвести выборку значе-
значений каких-либо объектов Resultset. После вызова этого матода получение данных из
текущего результирующего набора, а также создание новых результирующих наборов,
окажется невозможным.
Кол в листинге 9.251 создает хранимую процедуру, результирующий набор, а также
получает доступ к значению результата. Полученное значение выводится на страницу
пользователя.
Листинг 9.251. Доступ к значению возврата хранимой процедуры с помощью
метода returnValuel)
<server>
// Вызвать хранимую процедуру.
var myStproc = database.storedProc("sp_employees");
// Сгенерировать результирующий набор,
var myResultset = myStproc.resultSet();
Глава 9. Сервврная сторона ООО
// Получить значение возврата. Обратите внимание, что теперь
// ссылка на переменную myResultset невозможна,
var myReturnValue = myStproc.returnValue();
// Вывести результирующий набор на страницу,
write(myReturnValue);
</server>
Stproc.unwatchQ ES3+
stproc.unwatch(свойство)
йс& Метод unwatch() о&ьекта Stproc используется для отключения отслеживания определен-
» ного свойства.
j, {% Код в листинге 9.252 показывает, как при помощи метода umvatcli() прекратить отсле-
$* живапие определенного пользователем свойства type.
Листинг 9.852. Пример использования метода unwatch()
<server>
// Определить прототипируемый метод,
function verifyWork(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение,
if(this.type == "work"){
return true ;
}else{
return false;
// Создать новые свойство и метод объекта Stproc.
Stproc.prototype.type = null;
Stproc.prototype.isWORK = verifyWork;
// Создать пул соединений, само соединение, хранимую процедуру и
результирующий набор.
var myPool = new DbPool("ORACLE", "mySID", "myApp",
"appsPWD", "myTNS");
var myConn = myPool.connection('Employees', 15);
var myStproc = myConn.storedProc("sp_employees");
// Используя уже определенный прототип, установить значение
// свойства type.
myStproc.type = "work";
// проверить допустимость типа хранимой процедуры,
if(myStproc.isWORK()){
write(myStproc + " имеет допустимый тип " + myStproc.type);
}else{
write(myStproc + " имеет недопустимый тип " + myStproc.type)-
}
II Включить отслеживание свойства.
myStproc.watch("type", alertme);
// Изменить значение.
myStproc.type = null;
// Отключить отслеживание.
myStproc.unwatch("type");
// Еще раз изменить значение.
myStproc.type = "home";
</server>
Оо4 Часть III. Справочник по JavaScript
Stproc.watch()
s tproc.watch(свойство, функция)
Метод watch() объекта Stproc применяется для включения отслеживания свойства, ука-
указанного с помощью параметра свойство. Как только свойство, указанное параметром
свойство, изменяется, вызывается функция, указанная с помощью параметра функция.
^од в листинге 9.253 демонстрирует использование метода watchQ для начала отслежи-
вания определенного пользователем свойства type.
Листинг 9.253. Пример использования метода watch()
<server>
// Определить прототипируемый метод,
function verifyWork(){
// Проверить, назначается ли добавленному свойству type
// допустимое значение.
if(this.type == "work"){
return true ;
}else{
return false;
// Создать новые свойство и метод объекта Stproc.
Stproc.prototype.type = null;
Stproc.prototype.isWORK = verifyWork;
// Создать пул соединений, само соединение, хранимую процедуру и
// результирующий набор.
var myPool = new DbPool("ORACLE", "mySID", "myApp", "appsPWD", "myTNS")
var myConn = myPool.connection('Employees', 15);
var myStproc = myConn.storedProc("sp_employees");
// Используя уже определенный прототип, установить значение
// свойства type.
myStproc.type = "work";
// Проверить допустимость типа хранимой процедуры,
if(myStproc.isWORK()){
write(myStproc + " имеет допустимый тип " + myStproc.type);
}else{
write(myStproc + " имеет недопустимый тип " + myStproc.type);
}
// Включить отслеживание свойства.
myStproc.watch("type", alertme);
// Изменить значение.
myStproc.type = null;
</server>
write(j
write{строка)
write(число)
write(выражение)
Функция верхнего уровня write() не связана с каким-либо объектом. Эта функция вы-
выполняет запись на HTML-страницу информации, сгенерированной сценарием, для ее
отправки обратно клиенту. Функция оперирует с текстовыми и числовыми значениями,
а также с выражениями, которые возвращают алфавитно-цифровые результаты. Для по-
получения сведений о записи данных в файл обратитесь к описанию методов File.write()
и File. writeln().
Глава 9. Серверная сторона Dob
Модуль времени выполнения JavaScript буферизует всв записанные данные
до твх пор, пока их объвм нв достигнет 64 Кб. После этого содержимое буфвра
эвписывевтся в файл. Если требуется улучшить производительность, можно вручную
вызвать функцию вврхнвго уровня flush(J.
Код в листинге 9.254 выводит на страницу пользователя фразу "Здравствуй, мир!".
Листинг 9.254. Применение функции writeO
<server>
// Вывести строку hs страницу,
write('Здравствуй, мир!');
</server>
Часть IV
Главы с CD-ROM
В этой части
10. ЯдроООМ
11.DOMHTML
12. События DOM
13. DOMCSS
14. Библиотека времени выполнения JavaScript RunTime
15. Механизм Windows Script Host
Глава 10
ЯДРО DOM
В настоящей главе содержится описание всех привязок ядра DOM (Document Object
Model - объектная модель документа) уровня 2 с ECMAScript (т.е. Netscape
JavaScript и MS JScript). API-интерфейс ядра DOM уровня 2 предоставляет
программисту средства, при помощи которых можно создавать корректно
спроектированные XML-документы. Кроме того, API позволяет осуществлять
переход между XML-документами и изменять их структуру. Тем, кому уже знакомы
DOM-привязки с языком Java, наверняка покажется, что привязки языка ECMAScript
весьма напоминают API-интерфейс DOM Java.
Attr
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Attr представляет собой атрибут объекта Element. Он наследует все методы и
свойства объекта Node. В модели DOM объект Attr не является частью дерева
документа. Поэтому значения свойств parentNode, previomSibling и nextSibling
равны null. Все свойства объекта Attr перечислены в табл. 10.1.
Таблица 10.1. Свойства объекта Attr
Тип
Свойство
Элемент
name
ownerElement
specified
value
Описание
Возвращает имя атрибута.
Возвращает узел Element, к которому относится данный
атрибут.
Возвращает True, если в исходном документе данному
атрибуту явным образом было присвоено значение.
Возвращает значение данного атрибута в строковом
представлении.
Пример
Атрибут Attr создается с помощью метода CreateAttribute() объекта Document.
Attr. Name
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
atfrOb/.name
Описание
Свойство name объекта Attr возвращает имя данного атрибута.
888 Часть III. Справочник по JavaScript
Пример
В листинге 10.1 выполняется цикл по списку атрибутов с выводом на экран имен
атрибутов.
Листинг 10.1. Вывод на экран имен атрибутов с использованием
свойства name объекта Attr
<html>
<script language="JScript">
<!-
var attrList = nodeObj.attributes;
var i = 0;
while(i < attrList.length) {
var attrObj = attrList.item(i);
writeAttrName(attrObj.name);
</script>
</html>
Attr.specified
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
aftrOfo/specified
Описание
Свойство specified объекта Attr, которое доступно только для чтения, возвращает
значение true, если в исходном документе значение данного атрибута было
установлено явным образом.
Пример
В листинге 10.2 выполняется цикл по списку атрибутов и проверяется, были ли в
исходном XML-документе явным образом присвоены им значения.
Листинг 10.2. Проверка установленных значений атрибутов с
помощью свойства specified объекта Attr
<html>
<script language="JScript">
<!~
var attrList = nodeObj.attributes;
var i = 0;
while(i < attrList.length) {
var attrObj = attrList.item(i);
if(attrObj.specified)
handleSpecifiedAttr(attrObj);
</script>
Глава 10. Ядро DOM 889
</html>
Attr.value
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
atfrOb/Value
Описание
Свойство value объекта Attr возвращает значение данного атрибута в строковом
представлении. При использовании этого свойства может вызываться объект
DOMException со значением NO_MODIFICATION ALLOWED ERR, если узел
доступен только для чтения.
Пример
Код в листинге 10.3 определяет значение атрибута sizeAttrObj.
Листинг 10.3. Определение значения атрибута с помощью свойства
value объекта Attr
<html>
<script language="JScript">
<!--
var sizeValue = sizeAttrObj .value;
//-->
</script>
</html>
Attr.ownerElement
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
attrO fc/.ownerElement
Описание
Свойство ownerElement объекта Attr возвращает узел Element, к которому
относится данный атрибут.
Пример
Код в листинге 10.4 определяет элемент-владелец атрибута, после чего атрибут
удаляется.
Листинг 10.4. Определение элемента-владельца атрибута с
помощью свойства ownerElement объекта Attr
<html>
<script language="JScript">
•sl-
va г elementObj = attrObj.ownerElement;
elementObj.removeAttribute(attrObj);
890 Часть III. Справочник по JavaScript
</script>
</html>
CDATASection
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект CDATASection наследует все методы и свойства объектов Text и
CharacterData. Он инкапсулирует раздел CDATA XML-документа, используемого
блоками текста, которые не должны интерпретироваться как разметка.
Пример
Экземпляры объекта CDATASection создаются
CreateCDATASection() объекта Document.
CharacterData
Синтаксис
Объект ядра DOM.
Описание
Этот объект наследуется другими объектами, которым необходим доступ к
символьным данным в рамках модели DOM. Помимо свойств и методов,
перечисленных в табл. 10.2, он наследует все свойства и методы объекта Node.
Таблица 10.2. Свойства и методы объекта CharacterData
помощью метода
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Тип
Свойство
Метод
Элемент
length
data
substringData()
appendData()
insertData()
deleteData()
replaceDataQ
Описание
Это свойство, которое доступно только
для чтения, возвращает длину
символьных данных.
Это свойство, которое доступно только
для чтения, возвращает символьные
данные в виде строки.
Возвращает подстроку символьных
данных.
Присоединяет строку к концу символьных
данных узла.
Вставляет в символьные данные строку с
заданным смещением.
Удаляет из символьных данных 16-
разрядные блоки.
Заменяет символы, начиная с указанной
позиции заданной строкой.
Глава 10. Ядро DOM 891
Пример
Экземпляры объекта CharacterData не создаются напрямую. Они существуют
благодаря таким подклассам, как Text и Comment.
CharacterData.data
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
characterDataObj.data
Описание
Свойство data объекта CharacterData, которое доступно только для чтения,
возвращает символьные данные для данного узла.
Пример
Код в листинге 10.5 определяет и выводит на экран символьные данные текстового
узла.
Листинг 10.5. Определение символьных данных текстового узла с
помощью свойства data объекта CharacterData
<html>
<script language="JScript">
<!--
var textData = textObj.data;
write(textData);
//-->
</script>
</html>
CharacterData.length
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
characterDataObj. length
Описание
Свойство length объекта CharacterData, которое доступно только для чтения,
возвращает длину символьных данных в 16-разрядных блоках.
Пример
Код в листинге 10.6 определяет длину текстового поля текстового узла.
Листинг 10.6. Определение длины текстового узла с помощью
свойства length объекта CharacterData
<html>
<script language="JScript">
<!--
var dataSize = textObj.length;
892 Часть III. Справочник по JavaScript
if(dataSize > bufferSize)
printError();
//-->
</script>
</html>
CharacterData.substringData()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
characterData0bj.substringData(cMei4eHive, количество)
Описание
Метод substringData() объекта CharacterData возвращает диапазон данных узла,
начиная с позиции со смещением, заданным параметром смещение, длина которого
определяется параметром количество. При использовании этого метода может
вызываться объект DOMException со значением INDEX_SIZE_ERR, если указано
отрицательное смещение либо величина смещения превышает длину. Может также
отображаться сообщение NO MODIFICATION ALLOWED ERR в случае, если
узел доступен только для чтения.
Пример
Код в листинге 10.7 извлекает подстроку, относящуюся к текстовым данным узла.
Листинг 10.7. Создание подстроки с помощью метода substringData()
объекта CharacterData
<html>
<script language="JScript">
<!--
textObj.data = "Тестовые текстовые данные";
var subStringData = textObj.subStringData@, 8);
//-->
</script>
</html>
CharacterData.appendData()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
characterDataObj.appendData(ap2y/weHm)
Описание
Метод appendData() объекта CharacterData добавляет в конец массива данных
строку, определенную параметром аргумент. При использовании этого метода
может вызываться объект DOMException со значением
NO_MODIFICATION_ALLOWED_ERR, если узел доступен только для чтения.
Глава 10. Ядро DOM 893
Пример
Код в листинге 10.8 добавляет строку в конец значения свойства Data текстового
узла.
Листинг 10.8. Добавление данных с помощью метода appendData()
объекта CharacterData
<html>
<script language="JScript">
<!--
textObj.data = "Тестовые текстовые данные";
textObj.appendData ("Дополнительные данные");
//-->
</script>
</html>
CharacterData.insertData()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
characterDataObj.insertData(cMen/eHue, аргумент)
Описание
Метод insertData() объекта CharacterData включает строку, указанную параметром
аргумент в позицию, заданную параметром смещение. При использовании этого
метода может вызываться объект DOMException со значением INDEXSIZEERR,
если указано отрицательное смещение либо величина смещения превышает длину
поля. Также может генерироваться значение
NO MODIFICATION ALLOWED ERR, если узел доступен только для чтения.
Пример
Код в листинге 10.9 добавляет строку к значению свойства Data текстового узла.
Листинг 10.9. Включение данных с помощью метода insertData()
объекта CharacterData
<html>
<script language="JScript">
<!--
textObj.data = "Тестовые текстовые данные ";
textObj.insertData(8, "Дополнительные данные");
//-->
</script>
</html>
CharacterData.deleteData()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
characterDataObj.deleteData(cMen<eHue, количество)
894 Часть III. Справочник по JavaScript
Описание
Метод deleteData() объекта CharacterData удаляет набор данных узла, начиная с
позиции, указанной параметром смещение. Причем состав набора удаляемых
данных определяется с помощью параметра количество. При использовании этого
метода может вызываться объект DOMException со значением INDEXSIZEERR,
если указано отрицательное смещение либо его величина превышает длину поля.
Может также генерироваться значение NO_MODIFICATION_ALLOWED_ERR,
если узел доступен только для чтения.
Пример
В листинге 10.10 из значения свойства Data текстового узла удаляется строка.
Листинг 10.10. Удаление данных с помощью метода deleteData()
объекта CharacterData.
<html>
<script language="JScript">
<!--
textObj.data = "Тестовые текстовые данные";
textObj.deleteData@, 9);
//-->
</script>
</html>
CharacterData.replaceDataQ
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
characterDataObj.replaceData(c/wett(eHue, количество, аргумент)
Описание
Метод replaceData() объекта CharacterData заменяет символы в данном узле на
строку аргумент, начиная с позиции, указанной параметром смещение, с
количеством символов, определяемых параметром количество.
Пример
В листинге 10.11 приведен пример замены одной строки на другую строку в
значении свойства Data текстового узла.
Листинг 10.11. Замена данных с помощью метода replaceData()
объекта CharacterData.
<html>
<script language="JScript">
<!--
textObj.data = "Тестовые текстовые данные";
textObj.replaceData@, 8, "Новые ");
//-->
</script>
</html>
Глава 10. Ядро DOM 895
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Comment
Синтаксис
Объект ядра DOM.
Описание
Объект Comment наследует все методы и свойства объекта CharacterData и
представляет собой содержимое комментария XML-документа.
Пример
Экземпляры объекта Comment создаются с помощью метода createComment()
объекта Document.
Document
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект Document создается с помощью метода CreateDocument() объекта
DOMImplementation. Все свойства и методы объекта Document перечислены в
табл. 10.3.
Таблица 10.3. Свойства и методы объекта Document
Тип
Свойство
Метод
Элемент
docType
documentElement
implementation
createAttribute()
createAttributeNS()
createCDATASection()
createCommentO
Описание
Возвращает тип данного
XML-документа.
Возвращает корневой
элемент данного XML-
документа.
Возвращает тип
реализации DOM,
соответствующей данному
XML-документу.
Создает и возвращает
атрибут с заданным
именем.
Создает и возвращает
атрибут.
Возвращает созданный
объект CDATASection.
Возвращает созданный
объект Comment,
соответствующий данному
документу.
896 Часть III. Справочник по JavaScript
createDocumentFragmentO
createElementO
createElementNS()
createEntityReference()
createProcessinglnstruction()
createTextNode()
getElementByld()
getElementsByTagNameO
getElementsByTagNameNSO
importNodeO
Возвращает фрагмент
данного XML-документа.
Возвращает новый элемент
данного документа.
Создает и возвращает
элемент.
Создает и возвращает
ссылку на конструкцию
XML
Создает и возвращает
новую инструкцию по
обработке данного
документа.
Возвращает новый объект
TextNode,
соответствующий данному
документу.
Возвращает элемент с
указанным
идентификатором.
Возвращает элемент с
указанным именем
дескриптора.
Возвращает элемент с
указанным именем
дескриптора в заданном
пространстве имен.
Импортирует в данный
документ указанный узел.
Пример
В листинге 10.12 объект DOMImplementation используется для создания объекта
Document.
Листинг 10.12. Создание объекта Document
<html>
<script language="JScript">
<!--
var domlmplObj = new DOMImplementation();
var documentObj = domlmplObj.
createDocument("http://foobar.org/schema", "foo:bar", null);
//-->
</script>
</html>
Document.createAttributeO
Синтаксис
documentObj.createAttribute(u/wfl)
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Глава 10. Ядро DOM 897
Описание
Метод createAttribute() объекта Document создает и возвращает объект Attr с
заданным именем. При использовании этого метода может вызываться объект
DOMException со значением INVALID_CHARACTER_ERR в случае, если заданное
в качестве аргумента метода имя содержит недопустимые символы.
Пример
Код в листинге 10.13 реализует пример добавления нового атрибута к корневому
элементу ранее созданного документа.
Листинг 10.13. Создание атрибута с помощью метода createAttribute()
<html>
<script language="JScript">
<!--
var attrObj = documentObj.createAttribute("size");
var rootElement — documentObj.rootElement;
attrObj.value = 34;
rootElement.setAttributeNode(attrObj);
//-->
</script>
</html>
Document.createAttributeNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.createAttributeNS(namespace(yR/, qualifiedName)
Описание
Метод createAttributeNSO объекта Document создает и возвращает объект Attr типа
qualifiedName, который находится в пространстве имен nameSpaceURI. Значение
атрибута nodeName возвращаемого объекта Attr равно qualifiedName, атрибуту
nameSpaceURI присваивается значение nameSpaceURI, атрибут prefix равен
префиксу, извлеченному из qualifiedName, или значению null, если префикс
отсутствует, а атрибут localName соответствует локальному имени, извлеченному из
qualifiedName. Атрибуту пате присваивается значение qualifiedName, а атрибут
nodeValue содержит пустую строку.
Следует отметить, что при использовании данного метода объекта Document не
требуется выполнение реализации. При работе с этим методом может вызываться
объект DOMException со значением INVALID CHARACTER ERR в случае, если
атрибут qualifiedName содержит недопустимые символы; со значением
NAMESPACE ERR, если qualifiedName имеет неверный формат, qualifiedName
содержит префикс, а значение namespaceURI равно Null, или если qualifiedName
содержит префикс xml, а значение namespaceURI не записано в формате, указанном
на узле по адресу http://www.w3.org/XML/1998/namespace.
898 Часть III. Справочник по JavaScript
Пример
Код в листинге 10.14 реализует пример создания атрибута с указанием пространства
имен.
Листинг 10.14. Пример создания атрибута
<html>
<script language="JScript">
<!--
var new/Attribute = documentObj.createAttributeNS
("http://foo.com/namespace", "foo:quantity");
newAttribute.Value = 10;
myLineltemElement.SetAttributeNode(newAttribute);
//-->
</script>
</html>
Document.createCDATASection()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.createCDATASection(daHHb/e)
Описание
Метод createCDATASection() объекта Document создает и возвращает новый
экземпляр объекта CDATASection со значением, определенным с помощью
параметра данные. Если данный документ является HTML-документом, вызывается
объект DOMException со значением NOT SUPPORTED ERR.
Пример
В листинге 10.15 приведен пример создания и включения в документ раздела
CDATA.
Листинг 10.15. Включение нового раздела CDATA
<html>
<script language="JScript">
<!~
var cdataSectionObj = documentObj.createCDATASection("foo");
//-->
</script>
</html>
Document.createCommentO
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.createComment( данные)
Глава 10. Ядро DOM 899
Описание
Метод createComment() объекта Document на основе данных, определенных с
помощью параметра данные, имеющих тип DOMString, создает и возвращает
новый узел Comment.
Пример
В коде из листинга 10.16 для создания и включения нового объекта Comment в
данный XML-документ используется ранее созданный объект Document.
Листинг 10.16. Вставка в XML-документ нового объекта Comment
<html>
<script language="JScript">
<!--
var commentObj = documentObj.createComment
("Это пример комментария.");
//-->
</script>
</html>
Document.createDocumentFragment()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.createDocumentFragmentO
Описание
Метод createDocumentFragment() объекта Document создает пустой объект
DocumentFragment.
Пример
В коде из листинга 10.17 для создания объекта DocumentFragment используется
объект Document.
Листинг 10.17. Создание фрагмента документа с помощью метода
createDocumentFragmentO объекта Document
<html>
<script language="JScript">
<!--
var documentFragmentObj = documentObj.createDocumentFragmentO;
var nodeType = documentFragmentObj.NodeType;
if(nodeType != Node.DOCUMENT_FRAGMENT_NODE)
printError();
//-->
</script>
</html>
Document.createElement()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
900 Часть III. Справочник по JavaScript
Синтаксис
documentObj.createElement( имя_дескриптора)
Описание
Метод createElement() объекта Document создает новый элемент с типом,
указанным через параметр имя_дескриптора. Этот метод возвращает экземпляр
объекта Element. При этом значение атрибута nodeName устанавливается равным
имядескриптора, а значения других атрибутов равны Null. Если параметр
имядескриптора содержит недопустимые символы, вызывается объект
DOMException со значением INVALID CHARACTER ERR.
Пример
В листинге 10.18 с помощью объекта Document создается новый элемент.
Листинг 10.18. Проверка наличия для данного элемента дочерних
элементов с помощью метода hasChildren() объекта Element
<html>
<script language="JScript">
<!--
var elementObj = documentObj.createElement("foo");
var hasChildren = elementObj.hasChildren();
//-->
</script>
</html>
Document.createElementNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.CreateElementNS(nameSpaceL/f?/, qualifiedName)
Описание
Метод createElementNS() объекта Document создает и возвращает элемент типа
qualifiedName, находящийся в пространстве имен nameSpaceURI. Значение
атрибута nodeName возвращаемого объектом Element равно qualifiedName,
атрибута nameSpaceURI — значению nameSpaceURI, атрибута prefix - значению
префикса, извлеченному из qualifiedName, атрибута \ocalName - локальному имени,
извлеченному из qualifiedName, атрибута tagName - значению qualifiedName.
Следует отметить, что для применения данного метода объекта Document не
требуются дополнительные реализации. При использовании этого метода может
вызываться объект DOMException со значением INVALID CHARACTER ERR в
случае, если qualifiedName содержит недопустимые символы, или со значением
NAMESPACE ERR, если qualifiedName имеет неверный формат, qualifiedName
содержит префикс, а значение namespaceURI равно Null, или если qualifiedName
содержит префикс xml, а значение namespaceURI не соответствует формату,
определенному на Web-сайте http://www.w3.org/XML/1998/namespace.
Глава 10. Ядро DOM 901
Пример
Код в листинге 10.19 добавляет в текущий документ новый элемент.
Листинг 10.19. Добавление нового элемента
<html>
<script language="JScript">
<!--
var myLineltemElement = documentObj.createElementNS
("http://foo.com/namespace", "foo:lineltem");
//-->
</script>
</html>
Document.createEntityReference()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.createEntityReference(u/wfl)
Описание
Метод createEntityReference() объекта Document создает и возвращает новый
экземпляр объекта EntityReference, который содержит ссылку на объект,
определенный с помощью параметра имя. Если объект с указанным именем уже
существует, список дочерних элементов узла EntityReference будет соответствовать
списку дочерних элементов соответствующего объекта. При использовании этого
метода может вызываться объект DOMException со значением
INVALID CHARACTERERR в случае, если в имени содержатся недопустимые
символы, или со значением NOTSUPPORTEDERR, если данный документ
является HTML-документом.
Пример
Код в листинге 10.20 представляет пример использования ранее созданного объекта
Document для установки ссылки на объект.
Листинг 10.20. Создание объекта EntityReference
<html>
<script language="JScript">
<!--
var entityReferenceObj = documentObj.createEntityReference("myRef);
if(entityReferenceObj.hasAttributes())
handleNoAttributes();
//-->
</script>
</html>
Document.createProcessinglnstruction()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
902 Часть III. Справочник по JavaScript
Синтаксис
documentObj.createProcessinglnstruction(i^b, данные)
Описание
Метод createProcessingInstruction() объекта Document создает и возвращает
экземпляр узла Processinglnstruction с параметрами цель и данные типа
DOMStrings. При использовании этого метода может вызываться объект
DOMException со значением INVALIDCHARACTERERR, если параметр цель
содержит недопустимые символы, или DOMException со значением
NOTSUPPORTEDERR, если данный документ является HTML-документом.
Пример
В листинге 10.21 приведен пример включения в ранее созданный документ раздела
CDATA.
Листинг 10.21. Включение раздела CDATA
<html>
<script language="JScript">
<!--
var cdataSectionObj = documentObj.createCDATASection("foo CDATA Section");
//-->
</script>
</html>
Document.createTextNode()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.createTextNode(daHHb/e)
Описание
Метод createTextNode() объекта Document использует строку, определенную
параметром данные, для создания нового текстового узла данного объекта
Document. Он возвращает новый объект Text, значение атрибута data которого
установлено равным значению аргумента данные.
Пример
В листинге 10.22 приведен пример использования ранее созданного объекта
Document для создания в текущем документе нового текстового узла.
Листинг 10.22. Создание нового текстового узла с помощью метода
createTextNode() объекта Document
<html>
<script language="JScript">
<!--
vartextObj = documentObj.createTextNode("HoBbii/i текст.");
var splitText = textObj.splitTextD);
//-->
</script>
Глава 10. Ядро DOM 903
</html>
Document.doctype
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.docType
Описание
Свойство doctype объекта Document возвращает объявление типа, соответствующее
данному документу. Свойство доступно только для чтения, а его значение нельзя
изменить с помощью методов, унаследованных от объекта Node (например, методов
insertNode() и removeNode()). Возвращаемое значение имеет тип DocumentType.
Для HTML-документов свойство doctype возвращает значение Null.
Пример
Код в листинге 10.23 реализует пример определения типа текущего документа.
Листинг 10.23. Определение значение свойства docType
<html>
<script language="JScript">
<!--
var docTypeObj = documentObj.docType;
if(docTypeObj == null)
handleHTML();
else
handleXMLO;
//-->
</script>
</html>
Document.documentElement
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.documentElement
Описание
Свойство documentElement объекта Document, которое доступно только для
чтения, обеспечивает непосредственный доступ к корневому элементу данного
документа. Возвращаемое значение имеет тип Element.
Пример
В листинге 10.24 приведен пример использования объекта Document для
определения корневого элемента текущего документа.
904 Часть III. Справочник по JavaScript
Листинг 10.24. Определение корневого элемента текущего
документа с помощью свойства documentElement объекта Document
<html>
<script language="JScript">
<!--
var rootElementObj = documentObj.documentElement;
var hasFooAttribute = rootElementObj.hasAttribute("foo");
//-->
</script>
</html>
Document.getElementByld()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj. де1Е\егг\ег\\ВуЩидентификатор_элемента)
Описание
Метод getElementById() объекта Document возвращает объект Element данного
документа, идентификатор которого указан в параметре
идентификатор элемента.
Пример
В листинге 10.25 приведен пример выборки элемента по его идентификатору.
Листинг 10.25. Выборка элемента по его идентификатору.
<html>
<script language="JScript">
<!~
var myElement = documentObj.getElementByld(2932945");
//-->
</script>
</html>
Document.getElementsByTagName()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.getElementsByTagName(u/wfl_decKpunmopa)
Описание
Метод getElementsByTagName() объекта Document возвращает список NodeList
всех элементов с дескриптором, указанным с помощью параметра
имядескриптора. В возвращаемом списке элементы расположены в том порядке, в
котором они встречаются в документе.
Глава 10. Ядро DOM 905
Пример
Код в листинге 10.26 осуществляет выборку всех элементов в ранее созданном
объекте Document и выполняет цикл по списку элементов.
Листинг 10.26. Выборка элементов по указанномуимени
дескриптора
<html>
<script language="JScript">
<!--
var elementListObj = documentObj.getElementsByTagName("item");
var i = 0;
while (i < elementListObj.length) {
processElementValue(elementListObj.item(i).nodeValue);
}
//-->
</script>
</html>
Document.getElementsByTagNameNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.getElementByTagNameNS(namespacel/R/, localName)
Описание
Метод getElementsByTagNameNS() объекта Document возвращает список NodeList
всех элементов данного объекта Document с указанным именем localName в
заданном пространстве имен nameSpaceURI. В возвращаемом списке элементы
расположены в том порядке, в котором они встречаются при просмотре документа в
обычном порядке.
Пример
Код в листинге 10.27 осуществляет выборку всех элементов с указанным именем
дескриптора.
Листинг 10.27. Выборка элементов по имени дескриптора
<html>
<script language="JScript">
<!--
var elementListObj = documentObj.getElementsByTagName
("http://foo.com/namespace", "foo:item");
var i = 0;
while (i < elementListObj.length) {
processElementValue(elementListObj.ltem(i).NodeValue);
</script>
</html>
906 Часть III. Справочник по JavaScript
Document.implementation
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.implementation
Описание
Свойство implementation объекта Document, которое доступно только для чтения,
возвращает объект DOMImplementation, соответствующий данному документу. Это
свойство было введено исключительно в целях удобства.
Пример
Код в листинге 10.28 представляет пример использования объекта Document для
определения текущего объекта DOMImplementation.
Листинг 10.28. Пример использования свойства implementation
<html>
<script language="JScript">
<!--
var domlmplObj = documentObj.implementation;
var hasHTMLEvents = domlmplObj.hasFeature("HTMLEvents", .0");
//-->
</script>
</html>
Doc u m e nt. im port Node()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentObj.\трохШоде{импортируемый_узел, глубина)
Описание
Метод importNode() объекта Document импортирует указанный в параметре
импортируемый_узел объект Node из другого документа в данный документ и
возвращает этот объект. Значение атрибута parentNode возвращаемого объекта
устанавливается равным null. Объект Node не удаляется из документа, из которого
он импортируется, он просто копируется в текущий документ. Если значение
аргумента глубина равно true, из документа-источника копируется и поддерево узла
importNode. Если данный документ является HTML-документом, вызывается объект
DOMException со значением NOT SUPPORTED ERR.
Пример
Код в листинге 10.29 представляет собой пример импортирования ранее созданного
узла в текущий документ и назначения его дочерним элементом имеющегося в
документе элемента.
Листинг 10.29. Импортирование узла
<html>
Глава 10. Ядро DOM 907
<script language="JScript">
<!--
var importedNode = documentObj.importNode(newNode, true);
elementObj.append(importedNode);
//-->
</script>
</html>
DocumentFragment
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект DocumentFragment содержит часть дерева XML-документа. Он отличается
от объекта Document своей упрощенностью. Используется для упрощения
изменений структуры документа. В этом отношении он является некоторым
аналогом буфера обмена в операциях вырезки и вставки. Объект DocumentFragment
наследует все методы и свойства своего родительского объекта Node.
Пример
Код в листинге 10.30 реализует пример использования объекта Document для
создания нового объекта DocumentFragment.
Листинг 10.30. Пример создания фрагмента документа с помощью
метода createDocumentFragment() объекта Document
<html>
<script language="JScript">
<!~
var docFragmentObj = documentObj.createDocumentFragment();
//-->
</script>
</html>
DocumentType
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект DocumentType предоставляет доступ к списку объектов, определенных в
DTD (Document Type Definition — Описание типа документа) XML-документа. Он
наследует все свойства и методы объекта Node. Все свойства объекта
DocumentType перечислены в табл. 10.4.
908 Часть III. Справочник по JavaScript
Таблица 10.4. Свойства объекта DocumentType
Тип
Свойство
Элемент
entities
internalSubset
name
notations
publicld
system Id
Описание
Список всех внутренних и внешних сущностей,
содержащихся в описании типа документа.
Строковое представление внутреннего подмножества
(зависящего от реализации).
Имя типа документа (описания типа документа).
Список обозначений, объявленных в данном описании
типа документа.
Открытый идентификатор внешнего подмножества.
Системный идентификатор внешнего подмножества.
Пример
Объект DocumentType создается с помощью метода CreateDocumentTypeO объекта
DOMImplementation. Объект DocumentType содержит описание типа документа,
используемое для создания XML-документов.
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
DocumentType.entities
Синтаксис
documentTypeObj.entities
Описание
Свойство entities объекта DocumentType, которое доступно только для чтения,
возвращает объект NamedNodeMap, содержащий внешние и внутренние сущности,
объявленные в описании типа документа.
Пример
Код в листинге 10.31 выполняет цикл по списку элементов, после чего на экране
отображаются обозначения элементов.
Листинг 10.31. Организация цикла по свойству entities объекта
DocumentType
<html>
<script language="JScript">
<!--
var entityList = docTypeObj. entities;
var i = 0;
while( i < entityList.length) {
writeEntityNarne(entityList.item(i).notationName);
</script>
</html>
Глава 10. Ядро DOM 909
DocumentType.internalSubset
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentTypeObj. I nternalSubset
Описание
Свойство internalSubset объекта DocumentType, которое доступно только для
чтения, возвращает строковое представление внутреннего подмножества.
Пример
Код в листинге 10.32 представляет собой пример определения внутреннего
подмножества объекта DocumentType.
Листинг 10.32. Считывание свойства internalSubset объекта
DocumentType
<html>
<script language="JScript">
<!--
var internalSubset = docTypeObj.internalSubset;
//-->
</script>
</html>
DocumentType. name
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentTypeObj.name
Описание
Свойство name объекта DocumentType, которое доступно только для чтения,
возвращает имя данного определения типа документа.
Пример
В листинге 10.33 приведен пример выборки имени определения типа документа с
помощью свойства name объекта DocumentType.
Листинг 10.33. Пример использования свойства name объекта
DocumentType
<html>
<script language="JScript">
<!--
var docTypeName = docTypeObj.name;
//-->
</script>
</html>
910 Часть III. Справочник по JavaScript
DocumentType.notations
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentTypeObj .notations
Описание
Свойство notations объекта DocumentType, которое доступно только для чтения,
возвращает объект NamedNodeMap, содержащий все обозначения, объявленные в
описании типа документа.
Пример
Код в листинге 10.34 выполняет цикл по списку обозначений, в результате чего на
экране отображаются соответствующие открытые идентификаторы.
Листинг 10.34. Считывание свойства notations объекта DocumentType
<html>
<script language="JScript">
<!--
var notationList = docTypeObj.notations;
var i = 0;
while( i < entityList.length) {
writeEntityName(entityList.item(i).publicld);
}
//-->
</script>
</html>
DocumentType.publicld
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentTypeObj.publicld
Описание
Свойство publicld объекта DocumentType, которое доступно только для чтения,
возвращает общедоступный идентификатор внешнего подмножества.
Пример
В листинге 10.35 приведен пример выборки из объекта DocumentType
общедоступного идентификатора внешнего подмножества.
Листинг 10.35. Считывание свойства publicID объекта DocumentType
<html>
<script language="JScript">
<!--
var publicld = docTypeObj.publicld;
//-->
</script>
Глава 10. Ядро DOM 911
</html>
DocumentType.systemld
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
documentTypeObj.systemld
Описание
Свойство systemld объекта DocumentType, которое доступно только для чтения,
возвращает системный идентификатор внешнего подмножества.
Пример
Код в листинге 10.36 реализует пример выборки из объекта DocumentType
системного идентификатора внешнего подмножества.
Листинг 10.36. Считывание свойства systemld объекта DocumentType
<html>
<script language="JScript">
<!--
var systemld = docTypeObj.systemld;
//-->
</script>
</html>
JavaScript 1.5+, JScript 5.0+
DOMException
Синтаксис
Объект ядра DOM.
Описание
Объект DOMException инкапсулирует все исключения, которые могут быть
сгенерированы в API ядра DOM уровня 2. Все типы исключений и свойства объекта
DOMException перечислены в табл. 10.5.
Таблица 10.5. Типы исключений и свойства объекта DOMException
Тип
Константа
Элемент
INDEX_SIZE_ERR
DOMSTRING_SIZE_ERR
HIERARCHY_REQUEST_ERR
WRONG_DOCUMENT_ERR
INVALID_CHARACTER_ERR
Описание
Константа с числовым
значением 1.
Константа с числовым
значением 2.
Константа с числовым
значением 3.
Константа с числовым
значением 4.
Константа с числовым
значением 5.
912 Часть III. Справочник по JavaScript
Свойство
NO_DATA_ALLOWED_ERR
NO_MODIFICATION_ALLOWED_ERR
NOT_FOUND_ERR
NOT_SUPPORTED_ERR
INUSE_ATTRIBUTE_ERR
INVALID_STATE_ERR
SYNTAX_ERR
INVALID_MODIFICATION_ERR
NAMESPACE_ERR
INVALID_ACCESS_ERR
code
Константа с числовым
значением 6.
Константа с числовым
значением 7.
Константа с числовым
значением 8.
Константа с числовым
значением 10.
Константа с числовым
значением 10.
Константа с числовым
значением 11.
Константа с числовым
значением 12.
Константа с числовым
значением 13.
Константа с числовым
значением 14.
Константа с числовым
значением 15.
Число, соответствующее
одному из
вышеперечисленных
исключений.
Пример
Код в листинге 10.37 создает и вызывает новый объект DOMException, значение
свойства code которого равно NAMESPACE_ERR.
Листинг 10.37. Создание объекта DOMException
<html>
<script language="JScript">
<!--
vardomExceptionObj = new DOMException(DOMException.NAMESPACE_ERR);
throw domExceptionObj;
//-->
</script>
</html>
DOMException.code
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
domExceptionObj.code
Описание
Свойство code объекта DOMException возвращает число, которое указывает тип
сгенерированного исключения.
Глава 10. Ядро DOM 913
Пример
В листинге 10.38 приведен пример перехвата объекта DOMException и определения
значения свойства code для обработки соответствующей ошибки.
Листинг 10.38. Перехват объекта DOMException
<html>
<script language="JScript">
<!--
var domlmplObj = new DOMImplementation();
try{
var documentObj = domlmplObj.createDocument
("http://foobar.org/schema", "foo:bar", null);
} catch(e if e == "DOMException") {
if (e.code == DOMException.INVALID_CHARACTER_ERR)
handleError(e)
</script>
</html>
DOMlmplementation
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект DOMlmplementation используется для создания XML-документов и типов
документов, не зависящих от реализации. Объект предоставляет несколько удобных
методов выполнения необходимых действий вне зависимости от используемой
реализации. Все методы объекта DOMlmplementation перечислены в табл. 10.6.
Таблица 10.6. Аргументы объекта DOMlmplementation
Тип
Метод
Элемент
create Document()
create Docu mentType()
hasFeatureQ
Описание
Создает новый XML-документ с использованием
указанных пространства имен URI, уточненного
имени и типа документа.
Создает пустой документ с использованием нового
уточненного имени, открытого идентификатора
типа и системного идентификатора для нового
документа.
Проверят наличие определенной функции в
данной реализации DOM.
Пример
Код в листинге 10.39 создает объекты DOMlmplementation и Document.
914 Часть III. Справочник по JavaScript
Листинг 10.39. Использование объекта DOM Implementation
<html>
<script language="JScript">
<!-
var domlmplObj = new DOMImplementation();
var documentObj = domlmplObj.createDocument
("http://foobar.org/schema", "foo:bar", null);
//-->
</script>
</html>
DOMImplementation.createDocument()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
DOMImplementation.CreateDocument(namespaceUR/, qualifiedName, doctype)
Описание
Метод createDocument() объекта DOMImplementation принимает два аргумента
типа DOMString, namespaceURI и qualifiedName, а также аргумент doctype типа
DocumentType, и возвращает новый XML-документ заданного типа. При
использовании данного метода может вызываться объект DOMException со
следующими значениями параметра code:
• INVALID CHARACTER ERR, если параметр qualifiedName содержит
недопустимые символы
• NAMESPACEERR, если параметр qualifiedName имеет некорректный формат
или имеет префикс xml, а значение параметра namespaceURI не соответствует
правилам, указанным на Web-сайте http://www.w3.org/XML/1998/namespace
• WRONGDOCUMENTERR, если параметр doctype уже использовался
совместно с другим документом или был создан с помощью другой реализации
DOM.
Пример
В листинге 10.40 приведен пример использования объекта DOMImplementation для
создания нового объекта Document.
Листинг 10.40. Пример создания объекта Document с помощью
метода createDocument() объекта DOMImplementation
<html>
<script language="JScript">
<!--
var domlmplObj = new DOMImplementation();
var documentObj = domlmplObj.createDocument
("http://foobar.org/schema", "foo:bar", null);
//-->
</script>
</html>
Глава 10. Ядро DOM 915
DOMImplementation.createDocumentType()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
DOMImplementation.createDocumentType(c7ua//ffed/\/ame, publicld, systemld)
Описание
Метод createDocumentType() объекта DOMImplementation принимает три
аргумента типа string, qualifiedName, publicld и systemld, и возвращает новый
пустой объект DocumentType. При использовании этого метода может вызываться
объект DOMException со значением INVALIDCHARACTERERR, если заданный
в качестве аргумента параметр qualifiedName содержит недопустимые символы, или
со значением NAMESPACE_ERR, если параметр qualifiedName имеет неверный
формат.
Пример
Код в листинге 10.41 реализует пример использования объекта DOMImplementation
для создания нового типа пустого XML-документа.
Листинг 10.41. Создание пустого типа документа с помощью метода
createDocumentTypeO объекта DOMImplementation
<html>
<script language="JScript">
<!--
var domlmplementation = new DOMImplementation();
var docTypeObj = domlmplObj.createDocumentType("foo:bar",
"http://foobar.com/foo.xml","http://foobar.com/bar.xml");
//-->
</script>
</html>
DOMImplementation.hasFeature()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
DOM I implementation. hasFeature(ceotfcmeo, версия)
Описание
Метод hasFeature() объекта DOMImplementation принимает аргументы свойство и
версия типа DOMString и возвращает булево значение, указывающее на то, имеется
ли заданная функция в реализации DOMImplementation.
Пример
Код в листинге 10.42 реализует пример использования объекта DOMImplementation
для проверки того, поддерживает ли уровень 2 события HTML.
916 Часть III. Справочник по JavaScript
Листинг 10.42. Пример использования метода
DOM Implementation.hasFeature()
<html>
<script language="JScript">
<!--
var domlmplObj = new DOMImplementation();
var hasHTMLEvents = domlmplObj.hasFeature("HTMLEvents", .0");
//-->
</script>
</html>
Element
Синтаксис
Объект ядра DOM
Описание
Объект Element представляет собой элемент XML- или HTML-документа. Объект
Element наследует все методы и свойства объекта Node. Свойства и методы объекта
Element перечислены в табл. 10.7.
Таблица 10.7. Свойства и методы объекта Element
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Тип
Свойство
Метод
Элемент
tagName
getAttribute()
getAttributeNode()
getAttributeNodeNS()
getAttributeNS()
getElementsByTagNameO
getElementsByTagNameNSO
hasAttribute()
hasAttributeNS()
removeAttributeO
Описание
Имя данного элемента.
Возвращает значение атрибута с
указанным именем.
Возвращает узел атрибута с указанным
именем.
Возвращает узел атрибута с указанным
локальным именем и пространством имен
URI.
Возвращает значение атрибута с
указанным локальным именем и
пространством имен URI.
Возвращает список NodeList элементов с
указанным именем.
Возвращает список NodeList элементов с
указанным именем и пространством имен
URI.
Указывает, имеет ли данный элемент
значение для указанного атрибута.
Указывает, имеет ли данный элемент
значение для атрибута с указанным
именем и пространством имен URI.
Удаляет из элемента значение
указанного атрибута.
Глава 10. Ядро DOM 917
removeAttributeNS()
removeAttributeNode()
setAttribute()
setAttributeNS()
setAttributeNode()
setAttributeNodeNSQ
Удаляет из элемента значение элемента
с указанным именем и пространством
имен URI.
Удаляет указанный узел атрибута.
Устанавливает значение атрибута с
указанным именем.
Устанавливает значение атрибута с
указанным локальным именем и
пространством имен URI.
Создает новый узел атрибута с
указанным именем.
Включает новый узел атрибута с
указанным локальным именем в
пространстве имен URI.
Пример
Код в листинге 10.43 реализует пример создания объекта Element из объекта
Document.
Листинг 10.43. Создание объекта Element из объекта Document
<html>
<script language="JScript">
<!~
var newElementObj = documentObj.createElement("item");
//-->
</script>
</html>
Element.getAttribute()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.getAttribute(iiMH)
Описание
Метод getAttribute() объекта Element возвращает значение атрибута имя в
строковом представлении.
Пример
Код в листинге 10.44 определяет значение атрибута quantity элемента, содержащего
количество заказываемых изделий в бланке заказа.
Листинг 10.44. Определение значение атрибута элемента с
помощью метода getAttribute() объекта Element
<html>
<script language="JScript">
<!--
var qtyAttrValue = elementObj.getAttribute("quantity");
918 Часть III. Справочник по JavaScript
</script>
</html>
Element.getAttributeNode()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.getAttributeNode(u&w7)
Описание
Метод getAttributeNodeO объекта Element извлекает атрибут с именем name и
представляет его в формате объекта Attr. Если объект Attr с указанным именем
отсутствует, метод возвращает значение null.
Пример
Код в листинге 10.45 извлекает узел атрибута элемента и устанавливает его
значение.
Листинг 10.45. Извлечение узла атрибута с помощью метода
getAttributeNodeO объекта Element
<html>
<script language="JScript">
<!--
var qtyAttr = elementObj.getAttributeNode("quantity");
qtyAttr.value = ";
//-->
</script>
</html>
Element.getAttributeNodeNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.getAttributeNodeNS(namespaceL/R/, localName)
Описание
Метод getAttributeNodeNS() объекта Element возвращает значение объекта Attr,
содержащего указанное пространство имен namespaceURI и локальное имя
localName.
Пример
Код в листинге 10.46 извлекает узел атрибута элемента, являющийся элементом
строки.
Листинг 10.46. Извлечение узла атрибута с помощью метода
getAttributeNodeNS() объекта Element
<html>
<script language="JScript">
Глава 10. Ядро DOM 919
var qtyAttrNodeObj = invoiceElementObj.getAttributeNodeNS
("http://foo.com/namespace", "foo:quantity");
</script>
</html>
Element.getAttributeNSO
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.getAttributeNS(namespaceUR/, localName)
Описание
Метод getAttributeNSO объекта Element возвращает значение атрибута, заданного
пространством имен namespaceURI и локальным именем localName, в строковом
представлении.
Пример
Код в листинге 10.47 определяет значение атрибута, заданного пространством имен
и локальным именем.
Листинг 10.47. Определение значение атрибута, заданного
пространством имен и локальным именем с помощью метода
getAttributeNSO объекта Element
<html>
<script language="JScript">
<!--
var qtyAttrValue = elementObj.getAttributeNS
("http://foo.com/namespace", "foo:quantity");
//-->
</script>
</html>
Element.getElementsByTagNameO
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.getElementsByTagName(iiMfl)
Описание
Метод getElementsByTagName() объекта Element возвращает список NodeList, в
котором содержатся элементы с именем, указанным с помощью параметра имя.
Пример
Код в листинге 10.48 создает список элементов строки из объекта Element,
определяющего банковский счет.
920 Часть III. Справочник по JavaScript
Листинг 10.48. Извлечение элементов по имени дескриптора с
помощью метода getElementsByTagNameO объекта Element
<html>
<script language="JScript">
<!--
var lineltemList = invoiceElementObj.getElementsByTagName("lineltem");
//-->
</script>
</html>
Element.getElementsByTagNameNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.getElementsByTagNameNS(namespaceL/R/, localName)
Описание
Метод getElementsByTageNameNS() объекта Element возвращает список NodeList,
в котором содержатся элементы с пространством имен namespaceURI и локальным
именем пате.
Пример
Код в листинге 10.49 создает список элементов строки из объекта Element,
определяющего банковский счет.
Листинг 10.49. Извлечение элементов по имени дескриптора с
помощью метода getElementsByTageNameNS() объекта Element
<html>
<script language="JScript">
<!--
var lineltemList = invoiceElementObj.getElementsByTagNameNS
("http://foo.com/namespace", "lineltem");
//-->
</script>
</html>
Element.hasAttributeO
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.hasAttribute(uMfl)
Описание
Метод hasAttributeO объекта Element возвращает значение true, если данный
элемент содержит атрибут с именем, определенным параметром имя.
Пример
Код в листинге 10.50 определяет, имеет ли элемент строки атрибут price.
Глава 10. Ядро DOM 921
Листинг 10.50. Проверка наличия для элемента определенного
атрибута с помощью метода hasAttribute() объекта Element
<html>
<script language="JScript">
<!--
if(!lineltemElementObj.hasAttribute("price"))
lineltemElementObj.setAttribute("price", .44");
//-->
</script>
</html>
Element.hasAttributeNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.hasAttributeNS(namespaceL/R/, localName)
Описание
Метод hasAttributeNSO объекта Element возвращает значение true, если данный
элемент содержит атрибут с пространством имен namespaceURI и именем пате.
Пример
Код в листинге 10.51 определяет, имеет ли строковой элемент атрибут price.
Листинг 10.51. Проверка наличия для элемента определенного
атрибута с помощью метода hasAttributeNSO объекта Element
<html>
<script language="JScript">
<!--
if(!lineltemElementObj.hasAttributeNS("http://foo.com/namespace", "price"))
lineltemElementObj.setAttribute("price", .44");
//-->
</script>
</html>
Element. removeAttribute()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.removeAttribute(uMH)
Описание
Метод removeAttribute() объекта Element удаляет из данного элемента атрибут, имя
которого определяется с помощью атрибута имя.
Пример
Код в листинге 10.52 удаляет из элемента, представляющего собой строковой
элемент, атрибут quantity.
922 Часть III. Справочник по JavaScript
Листинг 10.52. Удаление атрибута с помощью метода
removeAttribute() объекта Element
<html>
<script language="JScript">
<!--
elementObj.removeAttribute("quantity");
//-->
</script>
</html>
Element.removeAttributeNode()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.removeAttributeNode(o/cWffr)
Описание
Метод removeAttributeNode() объекта Element удаляет атрибут oldAttr. При
использовании этого метода может вызываться объект DOMException со значением
NO_MODIFICATION_ALLOWED_ERR, если узел доступен только для чтения, или
со значением NOT_FOUND_ERR, если атрибут с именем oldAttr для данного
элемента отсутствует.
Пример
В листинге 10.53 из элемента удаляется атрибут узла.
Листинг 10.53. Удаление атрибута узла с помощью метода
removeAttributeNode() объекта Element.
<html>
<script language="JScript">
<!--
elementObj.removeAttributeNode(oldNode);
//-->
</script>
</html>
Element. removeAttributeNSQ
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.removeAttributeNS(namespaceUR/, localName)
Описание
Метод removeAttributeNS() объекта Element удаляет атрибут, заданный
пространством имен namespaceURI и именем localName. Если узел доступен только
для чтения, вызывается объект DOMException со значением
NO MODIFICATION ALLOWED ERR.
Глава 10. Ядро DOM 923
Пример
Код в листинге 10.54 удаляет атрибут quantity из элемента, представляющего счет-
фактуру.
Листинг 10.54. Удаление атрибута с помощью метода
removeAttributeNSO объекта Element.
<html>
<script language="JScript">
<!--
invoiceElementObj.removeAttributeNS
("http://foo.com/namespace", "foo:quantity");
//-->
</script>
</html>
Element.setAttributeQ
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.setAttribute(uMH, значение)
Описание
Метод setAttribute() объекта Element устанавливает значение нового атрибута с
именем имя равным параметру значение. Если атрибут с именем имя уже
существует, его значение меняется на значение. При использовании этого метода
может вызываться объект DOMException со значением
INVALIDCHARACTERERR, если в указанном имени используются
недопустимые символы, или со значением NO MODIFICATION ALLOWED ERR,
если узел доступен только для чтения.
Пример
При выполнении кода из листинга 10.55 для элемента, представляющего собой
строковой элемент, устанавливается значение атрибута quantity.
Листинг 10.55. Установка значения атрибута элемента с помощью
метода setAttribute() объекта Element
<html>
<script language="JScript">
<!--
elementObj.setAttributeC'quantity", ");
//-->
</script>
</html>
Element.setAttributeNode()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
924 Часть III. Справочник по JavaScript
Синтаксис
elementObj.setAttributeNode(new/4#r)
Описание
Метод setAttributeNode() объекта Element создает новый узел атрибута с именем
newAttr. Метод возвращает созданный объект Attr. Если данный элемент уже имеет
атрибут new Attr, возвращается значение Null.
Пример
При выполнении кода из листинга 10.56 для элемента, представляющего собой
строку, устанавливается атрибут quantity.
Листинг 10.56. Установка атрибута узла с помощью метода
setAttributeNode() объекта Element
<html>
<script language="JScript">
<!--
var qtyAttr = documentObj.createAttribute("quantity");
qtyAttr.value = ";
elementObj.setAttributeNode(qtyAttr);
//-->
</script>
</html>
Element.setAttributeNodeNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.setAttributeNodeNS(new4#A)
Описание
Метод setAttributeNodeNS() объекта Element создает новый атрибут узла с именем
newAttr. Если атрибут с указанным локальным именем и пространством имен URI
уже существует, он будет заменен на новый атрибут. При использовании этого
метода может вызываться объект DOMException со значением
WRONG_DOCUMENT_ERR, если атрибут с именем newAttr создается не тем
документом, который создал данный элемент, или со значением
INUSE_ATTRIBUTE_ERR, если атрибут с именем newAttr уже является атрибутом
другого элемента.
Пример
В листинге 10.57 для элемента, представляющего строковой элемент,
устанавливается новый атрибут quantity.
Листинг 10.57. Установка атрибута с помощью метода
setAttributeNodeNS() объекта Element.
<html>
<script language="JScript">
Глава 10. Ядро DOM 925
var qtyAttrObj = documentObj.createAttribute("quantity");
lineltemElementObj.setAttributeNodeNS(qtyAttrObj);
//-->
</script>
</html>
Element.setAttributeNSO
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.setAttributeNS(namespaceGR/, qualifiedName, значение)
Описание
Метод setAttributeNS() объекта Element добавляет к данному элементу новый
атрибут. Если атрибут с указанным пространством имен namespaceURI и именем
qualifiedName уже существует, он получает новое значение, передаваемое в
параметре значение.
Пример
Код в листинге 10.58 устанавливает значение атрибута с заданным пространством
имен URI.
Листинг 10.58. Установка значения атрибута с помощью метода
setAttributeNS() объекта Element
<html>
<script language="JScript">
<!--
invoiceElementObj.setAttributeNS
("http://foo.com/namespace", "foo:quantity", ");
//-->
</script>
</html>
Element.tagName
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
elementObj.tagName
Описание
Свойство tagName объекта Element, которое доступно только для чтения,
возвращает имя данного элемента.
Пример
Код в листинге 10.59 запрашивает объект Element по параметру tagName.
926 Часть III. Справочник по JavaScript
Листинг 10.59. Считывание значения свойства tagName объекта
Element
<html>
<script language="JScript">
<!--
var tagName = elementObj.tagName;
//-->
</script>
</html>
Entity
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Основной объект DOM.
Описание
Объект Entity представляет собой XML-конструкцию, которая может быть либо
разобранной, либо не разобранной. Этот объект наследует все методы и свойства
объекта Node. Перечень свойств объекта Entity приведен в табл. 10.8.
Таблица 10.8. Аргументы, имеющие отношение к объекту Entity
Тип
Свойство
Элемент
notationName
publicld
system Id
Описание
Возвращает имя обозначения данной конструкции.
Общедоступный идентификатор данной конструкции.
Системный идентификатор данной конструкции.
Пример
Экземпляры объекта Entity создается с помощью метода createEntity() объекта
Document. Они наследуют все методы и свойства объекта Node.
Entity.notationName
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
entityObj. notationName
Описание
Свойство notationName объекта Entity, которое доступно только для чтения,
возвращает имя обозначения данной конструкции, если она синтаксически не
проанализирована. Если конструкция синтаксически разобрана, свойство возвращает
значение null.
Пример
Код в листинге 10.60 определяет обозначение для объекта Entity.
Глава 10. Ядро DOM 927
Листинг 10.60. Считывание значения свойства notation Name объекта
Entity
<html>
<script language="JScript">
<!--
var notationName = entityObj.notationName;
//-->
</script>
</html>
Entity.publicid
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
entityObj.publicid
Описание
Свойство publicid объекта Entity, которое доступно только для чтения, возвращает
общедоступный идентификатор данной конструкции. Если общедоступный
идентификатор не задан, возвращается значение null.
Пример
Код в листинге 10.61 определяет общедоступный идентификатор объекта Entity.
Листинг 10.61. Считывание значения свойства publicid объекта Entity
<html>
<script language="JScript">
<!~
var publicid = entityObj.publicid;
//-->
</script>
</html>
Entity.systemld
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
entityObj.systemld
Описание
Свойство systemld объекта Entity, которое доступно только для чтения, возвращает
системный идентификатор данной конструкции. Если системный идентификатор не
задан, возвращается значение null.
Пример
Код в листинге 10.62 считывает системный идентификатор объекта Entity
928 Часть III. Справочник по JavaScript
Листинг 10.62. Считывание значения свойства systemid объекта
Entity
<html>
<script language="JScript">
<!-
var systemid = entityObj.systemid;
//-->
</script>
</html>
EntityReference
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект EntityReference наследует все методы и свойства объекта Node.
Пример
Экземпляры объекта EntityReference создаются с помощью метода
createEntityReferenceQ объекта Document.
NamedNodeMap
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Этот объект представляет собой список узлов DOM с их именами. Все свойства и
методы объекта NamedNodeMap перечислены в табл. 10.9.
Таблица 10.9. Аргументы объекта NamedNodeMap
Тип
Свойство
Метод
Элемент
length
getNamedltem()
getNamedltemsNSO
item()
removeNamedltemO
removeNamedltemNSO
setNamedltem()
setNamedltemNSO
Описание
Свойство, доступное только для чтения,
возвращающее количество узлов в списке.
Возвращает узел с указанным именем.
Возвращает узел с указанным локальным
именем и пространством имен URI.
Возвращает узел с указанным индексом.
Удаляет узел с указанным именем.
Удаляет узел с указанным локальным именем
и пространством имен URI.
Включает узел, используя в качестве имени
атрибут NodeName.
Включает узел, используя заданное
пространство имен URI и локальное имя.
Глава 10. Ядро DOM 929
Пример
Код в листинге 10.63 из объекта HTMLBodyElement выбирает свойство attributes
объекта NamedNodeList, а также считывает значение его свойства bgColor.
Листинг 10.63. Получение значения свойства attributes в формате
объекта NamedNodeList и считывание значения свойства bgColor
<html>
<script language="JScript">
<!--
var bodyAtts = bodyObj.attributes;
var color = bodyAtts.bgColor;
//-->
</script>
</html>
NamedNodeMap.getNamedltem()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
namedNodeMapObj.getNamedltem(iM«7)
Описание
Метод getNamedItem() объекта NamedNodeMap возвращает узел с именем,
указанным с помощью параметра имя.
Пример
Код в листинге 10.64 из объекта NamedNodeMap выбирает атрибут с заданным
именем, который затем обрабатывается требуемым образом.
Листинг 10.64. Выборка элемента из списка по его имени с
помощью метода getNamedltem() объекта NamedNodeMap
<html>
<script language="JScript">
<!--
var attrList = nodeObj.attributes;
var size = attrList.getNamedltemfsize");
//-->
</script>
</html>
NamedNodeMap.getNamedltemNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
namedNodeMap.getNamedltemNS(/iamespaceG/?/, localName)
930 Часть III. Справочник по JavaScript
Описание
Метод getNamedltemNSO объекта NamedNodeMap возвращает узел с заданным
локальными именем localName и пространством имен namespaceURl. Если узла с
указанными параметрами не существует, метод возвращает значение Null.
Пример
Код в листинге 10.65 из объекта NamedNodeMap выбирает атрибут с заданным
локальным именем и пространством имен, который затем обрабатывается
соответствующим образом.
Листинг 10.65. Выборка элемента из списка по его имени с
помощью метода getNamedltemNSO объекта NamedNodeMap
<html>
<script language="JScript">
<!--
var attrList = nodeObj. attributes;
var size = attrList.getNamedltemNS("http://foo.com/namespace", "foo:size");
//-->
</script>
</html>
NamedNodeMap.item()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
namedNodeMapObj.item(uHde/cc)
Описание
Метод item() объекта NamedNodeMap возвращает узел, находящийся в списке в
позиции с индексом, указанным с помощью параметра индекс. Если в указанной
позиции узел отсутствует, возвращается значение null.
Пример
Код в листинге 10.66 выполняет итерации в цикле по всем атрибутам списка.
Листинг 10.66. Выборка элемента с указанным индексом с помощью
метода item() объекта NamedNodeMap
<html>
<script language="JScript">
<!--
var attrList = nodeObj.attributes;
var i = 0;
while(i < attrList.length) {
processAttr(attrList.item(i));
</script>
</html>
Глава 10. Ядро DOM 931
Named NodeMap. length
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
namedNodeMapObj. length
Описание
Свойство length объекта NamedNodeMap возвращает количество узлов,
находящихся в данном списке имен.
Пример
В коде из листинга 10.67 проверяется, имеет ли определенный узел какие-либо
атрибуты. Если атрибуты существуют, в цикле выполняется их обработка. Объект
attrList является примером объекта NamedNodeMap.
Листинг 10.67. Определение размера списка NamedNodeMap
<html>
<script language="JScript">
<!--
if(nodeObj.hasAttributes()) {
var attrList = nodeObj.attributes;
var i = 0;
while(i < attrList.length) {
processAttr(attrList.ltem(i);
</script>
</html>
NamedNodeMap.removeNamedltemO
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
namedNodeMapObj.removeNamedltem(tiMfl)
Описание
Метод removeNamedItem() объекта NamedNodeMap удаляет узел, заданный с
помощью параметра имя, и возвращает его как выходное значение. При
использовании этого метода может вызываться объект DOMException со значением
NOT_FOUND_ERR, или со значением NO_MODIFICATION_ALLOWED_ERR,
если в данном списке узла с именем имя не существует, если данный список
доступен только для чтения.
Пример
Код в листинге 10.68 удаляет именованный объект из списка атрибутов.
932 Часть III. Справочник по JavaScript
Листинг 10.68. Удаление именованного объекта с помощью метода
removeNamedltemO объекта NamedNodeMap
<html>
<script language="JScript">
<!--
attrList.removeNamedltem("size");
//-->
</script>
</html>
NamedNodeMap.removeNamedltemNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
namedNodeMapObj.removeNamedltemNS(uMH)
Описание
Метод removeNamedItemNS() объекта NamedNodeMap удаляет узел, заданный с
помощью параметра имя, и возвращает его в качестве выходного значения. Если
указанного узла не существует, возвращается значение null.
Пример
В листинге 10.69 из списка атрибутов удаляется один элемент.
Листинг 10.69. Удаление элемента с помощью метода
removeNamedltemNSO объекта NamedNodeMap
<html>
<script language="JScript">
<!--
attrListObj.removeNamedltemNS("size");
//-->
</script>
</html>
NamedNodeMap.setNamedltem()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nameNodeMapObj.setNamedltem(y3&n)
Описание
Метод setNamedItem() объекта NamedNodeMap добавляет узел с именем node.
Если в данном списке именованных элементов узел с указанным именем уже
существует, он будет заменен новым узлом. Метод возвращает добавленный
элемент. При использовании метода setNamedItem() может вызываться объект
DOMException со следующими значениями:
• WRONG_DOCUMENT_ERR, если узел создается не на базе документа, который
создал данный список;
Глава 10. Ядро DOM 933
• NO MODIFICATION ALLOWED ERR, если список доступен только для
чтения;
• INUSEATTRIBUTEERR, если узел представляет собой объект Attr, который
уже является атрибутом другого объекта Element. В этом случае, пользователь
DOM для повторного использования атрибута Attr должен выполнить его
клонирование.
Пример
В листинге 10.70 в списке атрибутов создается новый именованный атрибут.
Листинг 10.70. Добавление в список атрибутов нового
именованного атрибута с помощью метода setNamedltem() объекта
NamedNodeMap
<html>
<script language="JScript">
<!--
var newAttr = documentObj.createAttributefsize");
attrList.setNamedltem(newAttr);
//-->
</script>
</html>
NamedNodeMap.setNamedltemNS()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
namedNodeMapObj.setNamedltemNS(y3e^
Описание
Метод setNamedItemNS() объекта NamedNodeMap добавляет узел, используя в
качестве ключей пространство имен namespaceURI и локальное имя localName.
Если в данном списке именованных элементов узел с указанными ключами уже
существует, он будет заменен новым узлом. Метод возвращает добавленный
элемент. При использовании метода setNamedItemNS() может вызываться объект
DOMException со следующими значениями:
• WRONG DOCUMENT ERR, если узел создается не на базе документа, который
сгенерировал данный список;
• NO_MODIFICATIOA ALLOWED ERR, если список доступен только для
чтения;
• INUSE_ATTRIBUTE_ERR, если узел представляет собой объект Attr, который
уже является атрибутом другого объекта Element. В этом случае, пользователь
DOM для повторного использования атрибута Attr должен его клонировать
явным образом.
Пример
Код в листинге 10.71 создает новый именованный атрибут в списке атрибутов.
934 Часть III. Справочник по JavaScript
Листинг 10.71. Добавление в список атрибутов нового
именованного атрибута с помощью метода setNamedltemNS()
объекта NamedNodeMap
<html>
<script language="JScript">
<!--
var newAttr = documentObj.createAttribute("size");
attrList.setNamedltemNS(newAttr);
//-->
</script>
</html>
Node
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект Node представляет собой узел XML-документа. Все константы, свойства и
методы объекта Node перечислены в табл. 10.10.
Таблица 10.10. Константы, свойства и методы объекта Node
Тип
Константа
Элемент
ELEMENT_NODE
ATTRIBUTE_NODE
TEXT_NODE
CDATA_SECTION_NODE
ENTITY_REFERENCE_NODE
ENTITY_NODE
Описание
Соответствует типу данного
узла, когда он создается как
объект Element. Числовое
значение константы равно 1.
Соответствует типу данного
узла, когда он создается как
объект Attr. Числовое значение
константы равно 2.
Соответствует типу данного
узла, когда он создается как
объект Text. Числовое
значение константы равно 3.
Соответствует типу данного
узла, когда он создается как
объект CDATASection.
Числовое значение константы
равно 4.
Соответствует типу данного
узла, когда он создается как
объект EntityReference.
Числовое значение константы
равно 5.
Соответствует типу данного
узла, когда он создается как
объект Entity. Числовое
значение константы равно 6.
Глава 10. Ядро DOM 935
Свойство
PROCESSING_INSTRUCTION_NODE
COMMENT_NODE
DOCUMENT_NODE
DOCUMENT_TYPE_NODE
DOCUMENT_FRAGMENT_NODE
NOTATION_NODE
attributes
childNodes
firstChild
lastChild
localName
namepaceURI
nextSibling
nodeName
Соответствует типу данного
узла, когда он создается как
объект Processinglnstruction.
Числовое значение константы
равно 7.
Соответствует типу данного
узла, когда он создается как
объект Comment. Числовое
значение константы равно 8.
Соответствует типу данного
узла, когда он создается как
объект Document. Числовое
значение константы равно 10.
Соответствует типу данного
узла, когда он создается как
объект DocumentType.
Числовое значение константы
равно 10.
Соответствует типу данного
узла, когда он создается как
объект DocumentFragment.
Числовое значение константы
равно 11.
Соответствует типу данного
узла, когда он создается как
объект Notation. Числовое
значение константы равно 12.
Возвращает объект
NamedNodeMap, который
содержит все атрибуты данного
узла.
Возвращает объект NodeList,
который содержит все дочерние
узлы данного узла.
Возвращает объект Node,
который содержит первый
дочерний узел данного узла.
Возвращает объект Node,
который содержит последний
дочерний узел данного узла.
Возвращает объект DOMString,
который содержит локальную
часть уточненного имени
данного узла.
Возвращает объект DOMString,
который содержит
пространство имен URI.
Возвращает узел, который
находится непосредственно
после данного узла.
Возвращает объект DOMString,
который содержит имя данного
узла в зависимости от его типа.
936 Часть III. Справочник по JavaScript
Метод
nodeType
nodeValue
ownerDocument
parentNode
prefix
previousSibling
appendChild()
cloneNode()
hasAttributes()
hasChildNodes()
insertBeforeO
isSupported()
normalize()
removeChild()
replaceChildQ
Возвращает константу типа
unsigned short, которая
соответствует типу данного
узла.
Возвращает объект DOMString,
который содержит значение
данного узла в зависимости от
его типа.
Возвращает объект Document,
который соответствует данному
узлу.
Возвращает объект Node,
который является дочерним
узлом данного узла.
Возвращает объект DOMString,
который содержит префикс
пространства имен данного
узла.
Возвращает узел, который
находится непосредственно
перед данным узлом.
Возвращает новый дочерний
узел данного узла.
Возвращает новый узел,
который является клоном
данного узла.
Указывает, имеет ли данный
узел атрибуты.
Указывает, имеет ли данный
узел дочерние узлы.
Возвращает новый узел,
который был вставлен перед
данным узлом.
Указывает, поддерживается ли
в данной реализации DOM
определенная функция.
Используется при попытке
нормализации содержимого
данного узла.
Возвращает узел,
представляющий собой
дочерний узел который был
удален из данного узла.
Заменяет дочерний узел новым
узлом и возвращает новый
узел.
Пример
Поскольку объект Node является родительским объектом для всех объектов ядра
DOM, его экземпляры никогда не создаются сами по себе. Доступ к методам и
свойствам объекта Node осуществляется через его дочерние объекты.
Глава 10. Ядро DOM 937
Node.attributes
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.attributes
Описание
Свойство attributes объекта Node, которое доступно только для чтения, возвращает
объект NamedNodeMap, который содержит все атрибуты данного узла.
Пример
Код в листинге 10.72 выполняет цикл по списку атрибутов узла и осуществляет
обработку атрибутов.
Листинг 10.72. Организация цикла по элементам свойства attributes
объекта Node
<html>
<script language="JScript">
<!--
var attrList = nodeObj.attributes;
var i = 0;
while(i < attrList.length) {
processAttr(attrList.item(i);
</script>
</html>
Node.appendChild()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj. appendChild(newC/?//d)
Описание
Метод appendChild() объекта Node добавляет узел newChild в список дочерних
узлов данного узла. Если узел newChild уже включен в состав дерева, то перед
операцией включения он удаляется. Метод возвращает добавленный дочерний узел.
При использовании метода appendChild(), может вызываться объект DOMException
со значением HIERARCHY REQUEST ERR, если данный узел принадлежит к типу,
который не может иметь дочерних узлов типа newChild. Значение этого объекта
может соответствовать WRONG_DOCUMENT_ERR, если узел newChild был создан
не документом, который сгенерировал данный узел, или со значением
NO_MODIFICATION_ALLOWED, если данный узел доступен только для чтения.
Пример
Код в листинге 10.73 в узел включает новый дочерний узел.
938 Часть III. Справочник по JavaScript
Листинг 10.73. Включение дочернего узла с помощью метода
appendChild() объекта Node
<html>
<script language="JScript">
<!--
var newElementObj = documentObj.createElement("item");
nodeObj.appendChild(newElementObj);
//-->
</script>
</html>
Node.childNodes
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.childNodes
Описание
Атрибут childNodes объекта Node возвращает объект NodeList, который содержит
все дочерние узлы данного узла.
Пример
Код в листинге 10.74 определяет полный список дочерних узлов данного узла, а
затем в цикле выполняется вывод на экран текстового содержимого текстовых узлов.
Листинг 10.74. Организация цикла по элементам свойства childNodes
объекта Node
<html>
<script language="JScript">
■sl-
va г nodeListObj = nodeObj.childNodes;
var i = 0;
while(i < nodeListObj.Length) {
if(nodeListObj.item(i).nodeType == Node.TEXT_NODE)
handleTextNode(nodeListObj.ltem(i));
</script>
</html>
Node.cloneNode()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.cloneNode^y6i/Ha)
Глава 10. Ядро DOM 939
Описание
Метод cloneNode() объекта Node возвращает копию данного узла. Если значение
параметра глубина равно true, вместе с узлом клонируется и его поддерево.
Пример
Код в листинге 10.75 клонирует узел, а затем созданный клон включается в качестве
дочернего узла другого узла.
Листинг 10.75. Клонирование узла с помощью метода cloneNode()
объекта Node
<html>
<script language="JScript">
<!--
var clonedNodeObj = nodeObj.cloneNode(true);
anotherNodeObj.appendChild(clonedNodeObj);
//-->
</script>
</html>
Node.firstChild
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.firstChild
Описание
Свойство firstChild объекта Node, которое доступно только для чтения, возвращает
первый дочерний узел данного узла.
Пример
Код в листинге 10.76 определяется тип первого дочернего узла данного узла.
Листинг 10.76. Считывание значения свойства firstChild объекта Node
<html>
<script language="JScript">
<!--
var childNodeObj = nodeObj.firstChild;
if(childNodeObj.nodeName == "foo")
process(childNodeObj);
//-->
</script>
</html>
Node.hasAttributes()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.hasAttributes()
940 Часть III. Справочник по JavaScript
Описание
Метод hasAttributes() объекта Node возвращает true, если у данного узла есть
атрибуты.
Пример
В листинге 10.77 проверяется наличие для узла атрибутов. В случае, если атрибуты
существуют, по списку атрибутов организуется цикл.
Листинг 10.77. Проверка наличия атрибутов с помощью метода
hasAttributes() объекта Node
<html>
<script language="JScript">
<!--
if(nodeObj.hasAttributes()) {
var attrList = nodeObj.attributes;
var i = 0;
while(i < attrList.Length) {
processAttr(attrList.ltem(i);
</script>
</html>
Node.hasChildNodes()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.hasChildNodesO
Описание
Метод hasChildNodesO объекта Node возвращает true в случае, когда данный узел
имеет дочерние узлы.
Пример
Код из листингп 10.78 проверяет наличие для данного узла дочерних узлов.
Листинг 10.78. Проверка наличия дочерних узлов с помощью
метода hasChildNodesO объекта Node
<html>
<script language="JScript">
<!--
if(nodeObj.hasChildNodesO)
handleChildren(nodeObj);
//-->
</script>
</html>
Глава 10. Ядро DOM 941
Node.insertBefore()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.insertBefore(newC/?/Vc/, refChild)
Описание
Метод insertBefore() объекта Node вставляет узел newChild перед существующим
дочерним узлом refChild. Если узел newChild уже существует в дереве, перед
включением нового узла прежний узел удаляется. Метод возвращает включенный
дочерний узел. При использовании метода insertBefore() может вызываться объект
DOMException со следующими значениями:
HIERARCHY_REQUEST_ERR, если данный узел принадлежит к типу,
который не может включать дочерние узлы типа newChild;
WRONG_DOCUMENT_ERR, если узел newChild был создан не документом,
сгенерировавшим данный узел;
NOMODIFICATIONALLOWED, если данный узел доступен только для
чтения;
NOT_FOUND_ERR, если узел refChild не является дочерним узлом для
данного узла.
Пример
Код в листинге 10.79 вставляет новый дочерний узел перед указанным дочерним
узлом.
Листинг 10.79. Включение нового дочернего узла с помощью метода
insertBefore() объекта Node
<html>
<script language="JScript">
<!--
var newElementObj = documentObj.createElement("item");
nodeObj.insertBefore(newElementObj, existingChild);
//-->
</script>
</html>
Node.isSupported()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.isSupported(ceoucmeo, версия)
Описание
Метод isSupported() объекта Node определяет, поддерживается ли данным узлом
функция свойство версии, указанной параметром версия.
942 Часть III. Справочник по JavaScript
Пример
Код в листинге 10.80 проверяет, поддерживается ли узлом определенная функция.
Листинг 10.80. Проверка поддержки функции с помощью метода
isSupported() объекта Node
<html>
<script language="JScript">
<!--
if(nodeObj.isSupported("HTMLEvents", .0")
handleHTMLEvents();
//-->
</script>
</html>
Node.lastChild
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.lastChild
Описание
Свойство lastChild объекта Node, которое доступно только для чтения, возвращает
последний дочерний узел данного узла.
Пример
Код в листинге 10.81 определяет тип последнего дочернего узла данного узла.
Листинг 10.81. Считывание значения свойства lastChild объекта Node
<html>
<script language="JScript">
<!--
var childNodeObj = nodeObj. lastChild;
if(childNodeObj.nodeName == "foo")
process(childNodeObj);
//-->
</script>
</html>
Node.localName
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.localName
Описание
Свойство localName объекта Node, которое доступно только для чтения, возвращает
локальную часть уточненного имени данного узла.
Глава 10. Ядро DOM 943
Пример
Код в листинге 10.82 определяет локальное имя узла, к которому для получения
уточненного имени узла добавляется префикс.
Листинг 10.82. Определение значения свойства localName объекта
Node
<html>
<script language="JScript">
<!--
var localName = nodeObj.localName;
var prefix = nodeObj.prefix;
var qualifiedName = prefix+":"+localName;
//-->
</script>
</html>
Node.namespaceURI
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.namespaceURI
Описание
Свойство namespaceURI объекта Node, которое доступно только для чтения,
возвращает объект string, содержащий пространство имен URI данного узла.
Пример
Код в листинге 10.83 осуществляет сопоставление префикса и пространства имен
UR1, и в случае, если префикс равен foo, а пространство имен соответствует
http://foo.com/namespace, генерируется исключение.
Листинг 10.83. Считывание свойства значения namespaceURI
объекта Node
<html>
<script language="JScript">
<!--
if((nodeObj.Prefix == "foo")
&& (nodeObj.NamespaceURI != "http://foo.com/namespace"))
throw new DOMException(DOMException.NAMESPACE_ERR);
//-->
</script>
</html>
Node.nextSibling
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.nextSibling
944 Часть III. Справочник по JavaScript
Описание
Свойство nextSibling объекта Node, которое доступно только для чтения,
возвращает узел, находящийся непосредственно после данного узла.
Пример
Код в листинге 10.84 определяет тип следующего узла.
Листинг 10.84. Считывание значения свойства nextSibling объекта
Node
<html>
<script language="JScript">
<!-
var siblingNodeObj = nodeObj.nextSibling;
if(siblingNodeObj. nodeName == "foo")
process(siblingNodeObj);
//-->
</script>
</html>
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Node.nodeName
Синтаксис
nodeObj. nodeName
Описание
Свойство nodeName объекта Node возвращает имя данного узла, указанное в
атрибуте nodeType.
Пример
В листинге 10.85 берется узел Node и в зависимости от значения свойства nodeName
над ним выполняется определенная операция.
Листинг 10.85. Считывание значения свойства nodeName
<html>
<script language="JScript">
<!--
if(elementObj. nodeName == "foobar")
processElement(elementObj);
//-->
</script>
</html>
Node.nodeType
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.nodeType
Глава 10. Ядро DOM 945
Описание
Свойство nodeType объекта Node возвращает число, которое указывает тип данного
узла и соответствует одной из описанных выше констант.
Пример
В листинге 10.86 определяется тип узла и в соответствии с полученным результатом
выполняется обработка узла.
Листинг 10.86. Определение значения свойства nodeType объекта
Node
<html>
<script language="JScript">
<!--
var nodeType = textObj.nodeType;
if(nodeType == Node.TEXT_NODE)
handleText(textObj);
//-->
</script>
</html>
Node.nodeValue
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.nodeValue
Описание
Свойство nodeValue объекта Node возвращает значение данного узла в зависимости
от значения атрибута nodeType.
Пример
Код в листинге 10.87 реализует пример организации цикла по списку элементов с
обработкой свойства nodeValue каждого элемента.
Листинг 10.87. Обработка свойства nodeValue объекта Node
Выкусить листинг 10.87 на стр. 1466
Node.normalize()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.normalizeO
Описание
Метод normalizeO объекта Node помещает все текстовые узлы в поддерево данного
узла, которое имеет полную высоту. Этот метод может использоваться для того,
чтобы гарантировать, что документ в DOM выглядит так, как если бы он был
сохранен и загружен снова.
946 Часть III. Справочник по JavaScript
Пример
В листинге 10.88 приведен пример нормализации узла перед его сохранением в
файле.
Листинг 10.88. Нормализация узла с помощью метода normalize()
объекта Node
<html>
<script language="JScript">
<!--
nodeObj.normalize();
writeNode(nodeObj);
//-->
</script>
</html>
Node.ownerDocument
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.ownerDocument
Описание
Свойство ownerDocument объекта Node, которое доступно только для чтения,
возвращает соответствующий данному узлу объект Document.
Пример
При выполнении кода из листинга 10.89 определяется документ-владелец данного
узла и создается новый элемент.
Листинг 10.89. Считывание значения свойства ownerDocument
объекта Node
<html>
<script language="JScript">
<!--
var documentObj = nodeObj.ownerDocument;
var elementObj = documentObj. createElement("lineltem");
nodeObj. appendChild(elementObj);
//-->
</script>
</html>
Node.parentNode
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.parentNode
Глава 10. Ядро DOM 947
Описание
Свойство parentNode объекта Node возвращает родительский узел для данного узла.
Пример
Код в листинге 10.90 проверяет, имеет ли данный узел родительский узел.
Листинг 10.90. Проверка значения свойства parentNode объекта Node
<html>
<script language="JScript">
<!--
if(elementObj.parentNode != null)
processAsChild(elementObj);
//-->
</script>
</html>
Node.prefix
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.prefix
Описание
Свойство prefix объекта Node возвращает префикс пространства имен данного узла.
При использовании этого свойства может вызываться объект DOMException со
следующими значениями:
• INVALID_CHARACTER_ERR, если префикс содержит недопустимые символы;
• NO MODIFICATION ALLOWED ERR, если узел доступен только для чтения;
• NAMESPACE_ERR, если префикс имеет неверный формат, NamespaceURI
равен Null или префикс равен NameSpaceURI, a NamespaceURI не равен
http://www.w3.org/XML/1998/namespace.
Пример
Код в листинге 10.91 проверяет значения префикса и пространства имен URI. Если
префикс равен foo, а пространство имен не равно http://foo.com/namespace,
генерируется исключение.
Листинг 10.91. Считывание значения свойства prefix объекта Node
<html>
<script language="JScript">
<!--
if((nodeObj.prefix == "foo")
&& (nodeObj.namespaceURI != "http://foo.com/namespace"))
throw new DOMException(DOMException.NAMESPACE_ERR);
//-->
</script>
</html>
948 Часть III. Справочник по JavaScript
Node.previousSibling
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.previousSibling
Описание
Свойство previousSibling объекта Node, которое доступно только для чтения,
возвращает узел, находящийся непосредственно перед данным узлом.
Пример
Код в листинге 10.92 определяет тип предшествующего узла.
Листинг 10.92. Считывание значения свойства previousSibling
объекта Node
<html>
<script language="JScript">
<!--
var siblingNodeObj = nodeObj.previousSibling;
if(siblingNodeObj.nodeName == "foo")
process(siblingNodeObj);
//-->
</script>
</html>
Node.removeChild()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj. removeChild(o/dCft//d)
Описание
Метод removeChild() объекта Node удаляет дочерний узел с именем oldChild из
списка дочерних узлов данного узла. При использовании этого метода может
вызываться объект DOMException со значением
NO_MODIFICATION ALLOWED ERR, если данный узел доступен только для
чтения, или со значением NOT_FOUND_ERR, если узел oldChild не является
дочерним узлом данного узла.
Пример
Код в листинге 10.93 удаляет дочерний узел узла.
Листинг 10.93. Удаление дочернего узла с помощью метода
removeChild() объекта Node
<html>
<script language="JScript">
<!--
nodeObj.removeChild(existingChild);
Глава 10. Ядро DOM 949
</script>
</html>
Node.replaceChild()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
nodeObj.replaceChild(newC/i//c/, oldChild)
Описание
Метод replaceChild() объекта Node заменяет дочерний узел oldChild новым
дочерним узлом newChild. Если узел newChild уже существует в дереве, он сначала
удаляется. При использовании этого метода может вызываться объект
DOMException со следующими значениями:
HIERARCHY REQUEST ERR, если данный узел принадлежит к типу,
который не может иметь дочерних узлов типа newChild;
WRONG_DOCUMENT_ERR, если узел newChild был создан не документом,
который сгенерировал данный узел;
NO MODIFICATION ALLOWED, если данный узел доступен только для
чтения;
NOTFOUNDERR, если узел refChild не является дочерним узлом данного
узла.
Пример
Код в листинге 10.94 заменяет существующий узел новым узлом.
Листинг 10.94. Замена дочернего узла с помощью метода
replaceChild() объекта Node.
<html>
<script language="JScript">
<!--
var newElementObj = documentObj.createElement("item");
nodeObj.replaceChild(newElementObj, existingChild);
//-->
</script>
</html>
Notation
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект Notation наследует все свойства и методы своего родительского класса
Node. Объект Notation объявляет в XML-документе сущность, не подвергнутую
синтаксическому анализу. Все свойства объекта Notation перечислены в табл. 10.11.
950 Часть III. Справочник по JavaScript
Таблица 10.11. Аргументы объекта Notation
Тип
Свойство
Элемент
publicid
system Id
Описание
Открытый идентификатор для данного обозначения.
Системный идентификатор для данного обозначения
Пример
Экземпляры объекта Notation создаются с помощью метода createNotation()
объекта Document.
Notation.publicid
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
notationObj.publicid
Описание
Свойство publicid объекта Notation, которое доступно только для чтения,
возвращает открытый идентификатор данного обозначения. Если для данного
объекта открытый идентификатор не задан, возвращается значение null.
Пример
В коде из листинга 10.95 определяется открытый идентификатор для объекта
Notation.
Листинг 10.95. Считывание значения свойства publicid объекта
Notation
<html>
<script language="JScript">
<!~
var publicid = docTypeObj.publicid;
//-->
</script>
</html>
Notation.systemld
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
notationObj.systemld
Описание
Свойство systemld объекта Notation, которое доступно только для чтения,
возвращает системный идентификатор данного обозначения. Если для данного
объекта системный идентификатор не задан, возвращается значение null.
Пример
Код в листинге 10.96 определяет системный идентификатор объекта Notation.
Глава 10. Ядро DOM 951
Листинг 10.96. Считывание значение свойства system Id объекта
Notation
<html>
<script language="JScript">
<!--
var systemld = docTypeObj.systemld;
//-->
</script>
</html>
Processinglnstruction
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект Processinglnstruction наследует все свойства и методы объекта Node. Он
служит для представления инструкции по обработке, которая используется для
хранения в XML-документе данных, предназначенных для синтаксического
анализатора. Свойства объекта Processinglnstruction описываются в табл. 10.12.
Таблица 10.12. Свойства объекта Processinglnstruction
Тип
Свойство
Элемент
data
target
Описание
Содержимое инструкции по обработке.
Объект данной инструкции по обработке.
Пример
Экземпляры объекта Processinglnstruction создаются с помощью метода
createProcessingInstruction() объекта Document.
Processinglnstruction.data
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
processinglnstructionObj.data
Описание
Свойство data объекта Processinglnstruction, которое доступно только для чтения,
возвращает содержимое инструкции по обработке. При использовании этого
свойства может вызываться объект DOMException со значением
NO MODIFICATION ALLOWED ERR, если данный узел доступен только для
чтения.
952 Часть III. Справочник по JavaScript
Пример
Код в листинге 10.97 приводит пример определения значения свойства data объекта
Processinglnstruction.
Листинг 10.97. Считывание значения свойства data объекта
Processinglnstruction
<html>
<script language="JScript">
<!--
var instructionData= processinglnstructionObj.data;
//-->
</script>
</html>
Processinglnstruction.target
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
processinglnstructionObj.target
Описание
Свойство target объекта Processinglnstruction, которое доступно только для чтения,
возвращает объект, для которого предназначена данная инструкция по обработке.
Пример
В листинге 10.97 приведен пример определения значения свойства target объекта
Processinglnstruction.
Листинг 10.97. Считывание значения свойства target объекта
Processinglnstruction.
<html>
<script language="JScript">
<!--
var targetToken = processinglnstructionObj.target;
//-->
</script>
</html>
Text
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
Объект ядра DOM.
Описание
Объект Text определяет текстовое содержимое XML-документа. Если в содержимом
данного элемента отсутствует текст разметки, он хранится в виде объекта Text.
Объект Text наследует все методы и свойства объекта CharacterData, который, в
Глава 10. Ядро DOM 953
свою очередь, наследует методы и свойства объекта Node. Объект Text включает
следующий метод:
Тип
Метод
Элемент
splitTextQ
Описание
В указано позиции разбивает данный узел на два.
Пример
Объект Text создается с помощью метода createTextNode() объекта Document.
Text.splitText()
JavaScript 1.5+, JScript 5.0+
Nav6+, IE5+
Синтаксис
textO bj. spl \\Тех\.(смещениё)
Описание
Метод splitText() объекта Text разбивает данный текстовый узел на два в позиции,
заданной параметром смещение. После разбивки текста новый узел, который
содержит весь текст, находящийся после позиции, указанной параметром смещение,
становится узлом того же уровня, что и данный узел. Метод возвращает новый
текстовый узел. При использовании метода splitText() может вызываться объект
DOMException со значением INDEX_SIZE_ERR, если параметр смещение имеет
отрицательное значение или значение, превышающее длину текстовых данных, или
со значением NO_MODIFICATION_ALLOWED_ERR, если узел доступен только
для чтения.
Пример
Код в листинге 10.98 представляет собой пример разбивки данных текстового узла с
получением нового текстового узла.
Листинг 10.98. Разбивка текста с помощью метода splitText() объекта
Text
<html>
<script language="JScript">
<!--
var textObj = documentObject.createTextNode(To пример текста");
var splitTextObj = textObj.splitTextE);
//-->
</script>
</html>
Глава 11
DOM HTML
В главе рассматриваются объекты и методы ядра API DOM уровня 2, используемые
в HTML-документах. Описание функциональных возможностей, которые
необходимы для работы с иерархическими структурами документов, элементов и
атрибутов, можно найти в главе, посвященной ядру DOM. В этой главе приводится
описание функциональных возможностей, которые зависят от элементов,
объявленных в HTML-документе.
API-библиотека DOM, специфичная для HTML, выполняет следующие функции:
• Специализация и расширение функциональных возможностей, которые
характерны для HTML-документов и элементов.
• Обеспечение обратной совместимости с DOM уровня 0.
• Предоставление, где это только возможно, удобных механизмов для выполнения
общих и часто применяемых операций в HTML-документах.
Главные различия между ядром DOM и HTML-приложениями DOM заключаются в
том, что объектная модель документа HTML предоставляет целый ряд
специализированных методов и свойств, совместимых с существующими моделями
DOM уровня 1 и 0, которые привычнее для разработчика сценариев. Во многих
случаях эти расширения неприменимы к обобщенной модели DOM, поскольку
модель рассчитана на использование конкретного определения типа документа
(Document Type Definition, DTD). В HTML 4.0 применяются традиционные
определения DTD, а также DTD для набора фреймов. Возможность взаимодействия
между различными реализациями гарантируется только для элементов и атрибутов,
которые указаны в DTD HTML 4.O.
В частности, этот документ включает следующие специализации HTML:
• Интерфейс HTMLDocument, построенный на базе основного интерфейса
Document. Интерфейс HTMLDocument определяет операции и запросы,
которые можно выполнить при работе с HTML-документом.
• Интерфейс HTMLElement, основанный на основном интерфейсе Element.
Интерфейс HTMLElement определяет операции и запросы, которые можно
выполнить с HTML-элементом. Интерфейс HTMLElement включает методы,
которые позволяют выбирать и изменять атрибуты для всех HTML-элементов.
• Специализации для всех HTML-элементов содержат более специфические
атрибуты, нежели интерфейс HTMLElement. Для всех таких атрибутов
производный интерфейс элемента содержит явные методы, предназначенные
для записи и чтения значений.
• Модель DOM уровня 2 включает механизмы, предназначенные для обеспечения
доступа и изменения стиля, заданного с помощью каскадного списка стилей, а
также определяет модель событий, которая может использоваться в HTML-
документах.
955 Часть III. Справочник по JavaScript
Примечание
На момент написания этой главы спецификация DOM HTML уровня 2 находилась в
состоянии рабочего проекта, в то время как остальные части DOM уровня 2 (ядро,
события и др.) существовали в виде рабочих версий. Поэтому некоторые описания и
данные, упомянутые в главе, в окончательной версии спецификации вполне могут
измениться.
HTMLAnchorElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLAnchorElement предназначен для представления HTML-привязки. Он
наследует все методы и свойства объекта HTMLElement. Свойства и методы объекта
HTMLAnchorElement перечислены в табл. 11.1.
Таблица 11.1. Свойства и методы объекта HTMLAnchorElement
Тип
Свойство
Метод
Элемент
accessKey
charset
coords
href
hrefLang
name
rel
rev
shape
tablndex
target
type
blurO
focus()
Описание
Односимвольный ключ доступа, который используется для
доступа к элементу.
Кодировка символов связанного с привязкой ресурса.
Перечень величин, определяющих активную область.
URI связанного с привязкой ресурса.
Код языка связанного с привязкой ресурса.
Имя данной привязки.
Тип ссылки вперед.
Тип ссылки назад.
Форма активной области данной привязки.
Номер, указывающий для данной привязки порядок обхода
по клавише табуляции.
Фрейм, в котором будет выводиться ресурс, на который
ссылается данная привязка.
Желаемый тип содержимого данной привязки.
Убирает фокус с данной привязки.
Переносит фокус на данную привязку.
Пример
Код в листинге 11.1 создает объект HTMLBodyElement с помощью объекта
HTMLDocument, после чего устанавливает его свойство Alink.
Листинг 11.1. Пример создания объекта HTMLAnchorElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
Глава 11. DOM HTML 956
</script>
</html>
HTMLAnchorElement.accessKey
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
/7fm//\nc/?orOb/'.accessKey
Описание
Свойство accessKey объекта HTMLAnchorElement представляется в виде одного
символа, который используется для доступа к элементу управления формы.
Пример
Код в листинге 11.2 с помощью объекта HTMLDocument создает объект
HTMLAnchorElement и устанавливает его свойство accessKey.
Листинг 11.2. Создание объекта HTMLAnchorElement и установка его
свойства accessKey
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElementfa");
anchorObj.accessKey = "A";
//-->
</script>
</html>
HTMLAnchorElement.blurO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj.blur()
Описание
Метод blur() объекта HTMLAnchorElement убирает фокус с элемента.
Пример
Код в листинге 11.3 с помощью объекта HTMLDocument создает объект
HTMLAnchorElement, а затем вызывает его метод blur().
Листинг 11.3. Пример создания объекта HTMLAnchorElement и
вызова его метода blur()
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
957 Часть III. Справочник по JavaScript
anchorObj.blur();
</script>
</html>
HTMLAnchorElement.charset
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj.dnaxsei
Описание
Свойство charset объекта HTMLAnchorElement определяет кодировку символов
ресурса, на который ссылается данная привязка.
Пример
Код в листинге 11.4 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство charset.
Листинг 11.4. Пример создания объекта HTMLAnchorElement и
установки его свойства charset
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElementfa");
anchorObj.charSet = "us/english";
//-->
</script>
</html>
HTMLAnchorElementcoords
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj.coords
Описание
Свойство coords объекта HTMLAnchorElement представляет собой список
разделенных запятыми величин, определяющих геометрию активной области (см.
также свойство shape, которое определяет форму активной области).
Пример
Код в листинге 11.5 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство coords.
Листинг 11.5. Пример создания объекта HTMLAnchorElement и
установки его свойства coords
<html>
Глава 11. DOM HTML 958
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
anchorObj.coords = 2,34,10, 10";
</script>
</html>
HTMLAnchorElement.focus()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
html AnchorObj.iocusi)
Описание
Метод focus() объекта HTMLAnchorElement переносит фокус на данный элемент.
Пример
Код в листинге 11.6 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и вызывает его метод focus().
Листинг 11.6. Пример создания объекта HTMLAnchorElement и
вызова его метода focus()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var anchorObj = bodyObj.createElement("a");
anchorObj. focus();
//-->
</script>
</html>
HTMLAnchorElement.href
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
html AnchorObj. h ref
Описание
Свойство href объекта HTMLAnchorElement содержит URI ресурса, на который
ссылается данная привязка.
Пример
Код в листинге 11.7 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство href.
959 Часть III. Справочник по JavaScript
Листинг 11.7. Пример создания объекта HTMLAnchorElement и
установки его свойства href
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
anchorObj.href = "http://foo.bar/";
//-->
</script>
</html>
HTMLAnchorElement.hrefLang
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
MmMncftorOb/.hrefLang
Описание
Свойство hrefLang объекта HTMLAnchorElement содержит код языка ресурса, на
который ссылается данная привязка.
Пример
Код в листинге 11.8 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство hrefLang.
Листинг 11.8. Пример создания объекта HTMLAnchorElement и
установки его свойства hrefLang
<html>
<script language="JavaScript" type="text/javascript">
<!--
var anchorObj = bodyObj.createElement("a");
anchorObj.hrefLang = "us/english";
//-->
</script>
</html>
HTMLAnchorElement.name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj. name
Описание
Свойство name объекта HTMLAnchorElement определяет имя привязки.
Глава 11. DOM HTML 960
Пример
Код в листинге 11.9 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство name.
Листинг 11.9. Пример создания объекта HTMLAnchorElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
anchorObj.name = "Ссылка на Web-узел foo";
//-->
</script>
</html>
HTMLAnchorElement. rel
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj. rel
Описание
Свойство rel объекта HTMLAnchorElement определяет тип ссылки вперед.
Пример
Код в листинге 11.10 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство rel.
Листинг 11.10. Пример создания объекта HTMLAnchorElement и
установки его свойства rel.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var anchorObj = bodyObj.createElement("a");
anchorObj.rel = "http://foo.bar/link.htm";
//-->
</script>
</html>
HTMLAnchorElement. rev
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj. rev
961 Часть III. Справочник по JavaScript
Описание
Свойство rev объекта HTMLAnchorElement определяет тип ссылки назад.
Пример
Код в листинге 11.11 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство rev.
Листинг 11.11. Пример создания объекта HTMLAnchorElement и
установки его свойства rev.
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
anchorObj.rev = "http://foo.bar/link.htm";
//-->
</script>
</html>
HTMLAnchorElement.shape
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj. shape
Описание
Свойство shape объекта HTMLAnchorElement содержит описание формы активной
области. Координаты активной области определяются с помощью свойства coords.
Пример
Код в листинге 11.12 с помощью объекта HTMLBody создает объект
HTMLAnchorElement и устанавливает его свойство shape.
Листинг 11.12. Пример создания объекта HTMLAnchorElement и
установки его свойства shape
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
anchorObj.shape = "oval";
//-->
</script>
</html>
HTMLAnchorElement. tablndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 962
Синтаксис
htmlAnchorObj.\ab\x\uex
Описание
Свойство tablndex объекта HTMLAnchorElement определяет индекс, который
соответствует положению элемента в порядке обхода по клавише табуляции.
Пример
Код в листинге 11.13 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство tablndex.
Листинг 11.13. Пример создания объекта HTMLAnchorElement и
установки его свойства tablndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
anchorObj.tablndex = 3;
//-->
</script>
</html>
HTMLAnchorElement.target
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj.VarQeX
Описание
Свойство target объекта HTMLAnchorElement определяет фрейм, где отображается
ресурс, на который ссылается привязка.
Пример
Код в листинге 11.14 с помощью объекта HTMLBodyElement создает объект
HTMLAnchorElement и устанавливает его свойство target.
Листинг 11.14. Пример создания объекта HTMLAnchorElement и
установки его свойства target
<html>
<script language="JavaScript" type="text/javascript">
<!--
varanchorObj = bodyObj.createElement("a");
anchorObj.target = "framel";
//-->
</script>
</html>
HTMLAnchorElement. type
963 Часть III. Справочник по JavaScript
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAnchorObj. type
Описание
Свойство type объекта HTMLAnchorElement определяет желаемый тип
содержимого.
Пример
В листинге 11.15 с помощью объекта HTMLBodyElement создается объект
HTMLAnchorElement и устанавливается его свойство type.
Листинг 11.15. Пример создания объекта HTMLAnchorElement и
установки его свойства type.
<html>
<script language="JavaScript" type="text/javascript">
varanchorObj = bodyObj.createElement("a");
anchorObj.type = "text/html";
</script>
</html>
HTMLAppletElement
Синтаксис
Основной объект DOM HTML.
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Описание
Объект HTMLAppletElement представляет HTML-элемент applet. Он наследует все
свойства и методы объекта HTMLElement. Свойства и методы объекта
HTMLAppletElement перечислены в табл. 11.2.
Таблица 11.2. Свойства и методы объекта HTMLAppletElement
Тип
Свойство
Элемент
align
alt
archive
code
CodeBase
height
hspace
name
object
vspace
Описание
Горизонтальное выравнивание аплета.
Альтернативный текст, который будет выводиться вместо
аплета.
Список архивных файлов, связанных сданным аплетом.
Файл, в котором содержится данный аплет.
Базовый URI, указывающий размещение кода и архива.
Высота аплета.
Горизонтальный просвет слева и справа от аплета.
Имя аплета.
Сериализованный файл аплета.
Вертикальный просвет сверху и снизу от аплета.
Глава 11. DOM HTML 964
| width
Ширина аплета.
Пример
Код в листинге 11.16 с помощью объекта HTMLBodyElement создает объект
HTMLAppletElement и устанавливает его свойство align.
Листинг 11.16. Пример создания объекта HTMLAppletElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
//-->
</script>
</html>
HTMLAppletElement.align
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. align
Описание
Свойство align объекта HTMLAppletElement выравнивает объект (в вертикалъном и
горизонтальном направлениях) относительно окружающего текста.
Пример
Код в листинге 11.17 с помощью объекта HTMLBodyElement создает объект
HTMLAppletElement и устанавливает его свойство align.
Листинг 11.17. Пример создания объекта HTMLAppletElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.align = "bottom";
//-->
</script>
</html>
HTMLAppletElement.alt
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. alt
965 Часть III. Справочник по JavaScript
Описание
Свойство alt объекта HTMLAppletElement содержит альтернативный текст,
который будет отображаться вместо аплета в случае невозможности отображения
обычного содержимого аплета.
Пример
Код в листинге 11.18 с помощью объекта HTMLBodyElement создает объект
HTMLAppletElement и устанавливает его свойство alt.
Листинг 11.18. Пример создания объекта HTMLAppletElement и
установки его свойства alt
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElement("applet");
appletObj.alt = "Аплет не может быть отображен!";
//-->
</script>
</html>
HTMLAppletElement.archive
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. a rch i ve
Описание
Свойство archive объекта HTMLAppletElement представляет собой список
разделенных запятыми имен архивных файлов.
Пример
Код в листинге 11.19 с помощью объекта HTMLBodyObject создает объект
HTMLAppletElement и устанавливает его свойство archive.
Листинг 11.19. Пример создания объекта HTMLAppletElement и
установки его свойства archive
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.archive = "foo.jar.bar.jar";
//-->
</script>
</html>
HTMLAppletElement.code
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 966
Синтаксис
htmlAppletObj. code
Описание
Свойство code объекта HTMLAppletElement определяет файл класса аплета.
Пример
В листинге 11.20 с помощью объекта HTMLBodyObject создается объект
HTMLAppletElement и устанавливается его свойство code.
Листинг 11.20. Пример создания объекта HTMLAppletElement и
установки его свойства code
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.code = "foo.bar.applets.FooApplet";
//-->
</script>
</html>
HTMLAppletElement.codeBase
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. CodeBase
Описание
Свойство CodeBase объекта HTMLAppletElement определяет дополнительный
базовый URI аплета.
Пример
Код в листинге 11.21 с помощью объекта HTMLBodyObject создает объект
HTMLAppletElement и устанавливает его свойство CodeBase.
Листинг 11.21. Пример создания объекта HTMLAppletElement и
установки его свойства CodeBase
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.codebase = "http://foo.bar/applets/";
//-->
</script>
</html>
HTMLAppletElement. height
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
967 Часть III. Справочник по JavaScript
Синтаксис
html AppletObj.he\Qh\
Описание
Свойство height объекта HTMLAppletElement позволяет программисту
устанавливать высоту аплета.
Пример
Код в листинге 11.22 с помощью объекта HTMLBodyObject создает объект
HTMLAppletElement и устанавливает его свойство height.
Листинг 11.22. Пример создания объекта HTMLAppletElement и
установки его свойства height
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElement("applet");
appletObj.height = 5";
//-->
</script>
</html>
HTMLAppletElement. hspace
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlApplet Obj. hspace
Описание
Свойство hspace объекта HTMLAppletElement позволяет устанавливать
горизонтальный просвет слева и справа от аплета.
Пример
Код в листинге 11.23 с помощью объекта HTMLBodyElement создает объект
HTMLAppletElement и устанавливает его свойство hspace.
Листинг 11.23. Пример создания объекта HTMLAppletElement и
установки его свойства hspace
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.hspace = 2;
//-->
</script>
</html>
HTMLAppletElement.name
Глава 11. DOM HTML 968
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. name
Описание
Свойство name объекта HTMLAppletElement определяет имя аплета.
Пример
Код в листинге 11.24 с помощью объекта HTMLBodyElement создает объект
HTMLAppletElement и устанавливает его свойство name.
Листинг 11.24. Пример создания объекта HTMLAppletElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.name = "аплет, определяющий выбор цвета";
//-->
</script>
</html>
HTMLAppletElement. object
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. object
Описание
Свойство object объекта HTMLAppletElement определяет сериализованный файл
аплета.
Пример
Код в листинге 11.25 с помощью объекта HTMLBodyElement создает объект
HTMLAppletElement и устанавливает его свойство object.
Листинг 11.25. Пример создания объекта HTMLAppletElement и
установки его свойства object
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.object = "http://foo.bar/applets/colorapplet.ser"
//-->
</script>
</html>
969 Часть III. Справочник по JavaScript
HTMLAppletElement.vspace
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. vspace
Описание
Свойство vspace объекта HTMLAppletElement позволяет устанавливать
вертикальный просвет сверху и снизу от аплета.
Пример
Код в листинге 11.26 с помощью объекта HTMLBodyElement создает объект
HTMLAppletElement и устанавливает его свойство vspace.
Листинг 11.26. Пример создания объекта HTMLAppletElement и
установки его свойства vspace
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.vspace = 5;
//-->
</script>
</html>
HTMLAppletElement. width
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAppletObj. width
Описание
Свойство width объекта HTMLAppletElement позволяет программисту
устанавливать ширину окна аплета.
Пример
Код в листинге 11.27 с помощью объекта HTMLBodyObject создает объект
HTMLAppletElement и устанавливает его свойство width.
Листинг 11.27. Пример создания объекта HTMLAppletElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
varappletObj = bodyObj.createElementfapplet");
appletObj.width = 30;
//-->
</script>
Глава 11. DOM HTML 970
</html>
HTMLAreaElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Этот объект служит для представления HTML-элемента area (область). Свойства и
методы объекта HTMLAreaElement перечислены в табл. 11.3.
Таблица 11.3. Свойства и методы объекта HTMLAreaElement
Тип
Свойства
Элемент
accessKey
alt
coords
href
noHref
shape
tablndex
target
Описание
Ключ, который используется для доступа к элементу.
Альтернативный текст, который будет отображаться
вместо элемента area.
Список величин, определяющий активную область
элемента area.
URI ресурса, на который ссылается данный элемент.
Если равно true, значит, элемент area неактивен.
Определяет форму активной области.
Номер, указывающий для данного элемента порядок
обхода по клавише табуляции.
Фрейм, в котором будет выводиться ресурс, на который
ссылается данный элемент.
Пример
Код в листинге 11.28 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство accessKey.
Листинг 11.28. Пример создания объекта HTMLAreaElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
varareaObj = mapObj.createElement("area");
//-->
</script>
</html>
HTMLAreaElement.accessKey
Синтаксис
html Area Obj. access Key
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
971 Часть III. Справочник по JavaScript
Описание
Свойство accessKey объекта HTMLAreaElement определяет один символ, который
используется для доступа к элементу управления формы.
Пример
Код в листинге 11.29 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство accessKey.
Листинг 11.29. Создание объекта HTMLAreaElement и установка его
свойства accessKey
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
varareaObj = mapObj.createElement("area");
areaObj.AccessKey = "Z";
//-->
</script>
</html>
HTMLAreaElement.alt
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAreaObj.an
Описание
Свойство alt объекта HTMLAreaElement содержит альтернативный текст, который
будет отображаться вместо данного элемента в случае, если не может быть выведено
обычное содержимое элемента.
Пример
Код в листинге 11.30 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство alt.
Листинг 11.30. Пример создания объекта HTMLAreaElement и
установки его свойства alt
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
varareaObj = mapObj.createElement("area");
areaObj.alt = "Это область 1";
//-->
</script>
</html>
HTMLAreaElement. coords
Глава 11. DOM HTML 972
JavaScript 1 .5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAreaObj. coords
Описание
Свойство coords объекта HTMLAreaElement определяет список разделенных
запятыми величин, определяющих геометрию активной области.
Пример
Код в листинге 11.31 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство coords.
Листинг 11.31. Пример создания объекта HTMLAreaElement и
установка его свойства coords
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
varareaObj = mapObj.createElement("area");
areaObj.coords = 3,45,34,44";
//-->
</script>
</html>
HTMLAreaElement.href
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAreaObjbref
Описание
Свойство href объекта HTMLAreaElement определяет URI ресурса, на который
ссылается данный элемент.
Пример
Код в листинге 11.32 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство href.
Листинг 11.32. Пример создания объекта HTMLAreaElement и
установки его свойства href
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
varareaObj = mapObj. createElement("area");
areaObj.href = "http://foo.bar/link.html";
//-->
</script>
973 Часть III. Справочник по JavaScript
</html>
HTMLAreaElementnoHref
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAreaObj. noHref
Описание
Свойство noHref объекта HTMLAreaElement указывает, что данная область
неактивна, поскольку за ней не закреплено определенное действие.
Пример
Код в листинге 11.33 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство noHref.
Листинг 11.33. Пример создания объекта HTMLAreaElement и
установки его свойства noHref
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
var areaObj = mapObj.createElement("area");
areaObj.noHref = true;
//-->
</script>
</html>
HTMLAreaElement.shape
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAreaObj. shape
Описание
Свойство shape объекта HTMLAreaElement определяет описание формы активной
области. Координаты активной области определяются с помощью свойства coords.
Пример
Код в листинге 11.34с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство shape.
Листинг 11.34. Пример создания объекта HTMLAreaElement и
установки его свойства shape
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
Глава 11. DOM HTML 974
varareaObj = mapObj.cCreateElement("area");
areaObj.shape = "rect";
</script>
</html>
HTMLAreaElement.tablndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAreaObj. tablndex
Описание
Свойство tablndex объекта HTMLAreaElement содержит индекс, который
соответствует положению элемента в порядке обхода по клавише табуляции.
Пример
Код в листинге 11.35 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство tablndex.
Листинг 11.35. Пример создания объекта HTMLAreaElement и
установки его свойства tablndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
varareaObj = mapObj.createElement("area");
areaObj.Tablndex = 3;
//-->
</script>
</html>
HTMLAreaElement. target
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlAreaObj. target
Описание
Свойство target объекта HTMLAreaElement определяет фрейм, где отображается
ресурс, на который ссылается данный элемент.
Пример
Код в листинге 11.36 с помощью объекта HTMLMapElement создает объект
HTMLAreaElement и устанавливает его свойство target.
975 Часть III. Справочник по JavaScript
Листинг 11.36. Пример создания объекта HTMLAreaElement и
установки его свойства target
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
var areaObj = mapObj.createElement("area");
areaObj.target = "mainframe";
//-->
</script>
</html>
HTMLBaseElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLBaseElement инкапсулирует базовый URI объекта Document. Он
наследует все методы и свойства объекта HTMLEIement. Список свойств и методов
объекта HTMLBaseElement приведен в табл. 11.4.
Таблица 11.4. Свойства элемента HTMLBaseElement
Элемент
href
target
Описание
Базовый URI документа.
Фрейм, который будет использоваться по умолчанию для вывода
документа.
Пример
Код в листинге 11.37 с помощью объекта HTMLDocument создает объект
HTMLBaseElement.
Листинг 11.37. Пример создания объекта HTMLBaseElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moй HTML-документ");
htmlDoc.open();
var baseElement = htmlDoc.createElement("base");
//
</script>
</html>
HTMLBaseElement.href
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 976
Синтаксис
htmlBaseElemObj.href
Описание
Свойство href объекта HTMLBaseElement определяет базовый URI данного
элемента.
Пример
Код в листинге 11.38 с помощью объекта HTMLDocument создается объект
HTMLBaseElement и устанавливает его свойства href и target.
Листинг 11.38. Пример создания объекта HTMLBaseElement и
установка его свойства href
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var baseElement = htmlDoc.createElement("base");
baseElement.href = "http://foo.bar/";
//-->
</script>
</html>
HTMLBaseElement.target
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBaseElemObj. target
Описание
Свойство target объекта HTMLBaseElement определяет имя фрейма, который по
умолчанию будет использоваться для отображения документа.
Пример
Код в листинге 11.39 с помощью объекта HTMLDocument создает объект
HTMlBaseElement и устанавливает его свойство target.
Листинг 11.39. Пример создания объекта HTMLBaseElement и
установка его свойства target
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.openO;
var baseElement = htmlDoc.createElement("base");
baseElement.target = "MainFrame";
//-->
</script>
977 Часть III. Справочник по JavaScript
</html>
HTMLBaseFontElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLBaseFontElement предназначен для представления объекта
BASEFONT. Он наследует все методы и свойства объекта HTMLElement. Список
свойств объекта HTMLBaseFontElement приведен в табл. 11.5.
Таблица 11.5. Свойства объекта HTMLBaseFontElement
Элемент
color
face
size
Описание
Цвет текущего базового шрифта.
Идентификатор типа шрифта для текущего базового шрифта.
Размер шрифта для текущего базового шрифта.
Пример
Код в листинге 11.40 с помощью объекта HTMLBodyElement создает объект
HTMLBaseFontElement.
Листинг 11.40. Пример создания объекта HTMLBaseFontElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var baseFontObj = bodyObj.createElement("basefont");
//-->
</script>
</html>
HTMLBaseFontElement.color
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBaseFontObj. color
Описание
Свойство color объекта HTMLBaseFontElement определяет цвет данного шрифта.
Пример
Код в листинге 11.41 с помощью объекта HTMLBody создает объект
HTMLBaseFontElement и устанавливает его свойство color.
Глава 11. DOM HTML 978
Листинг 11.41. Пример создания объекта HTMLBaseFontElement и
установки его свойства color
<html>
<script language="JavaScript" type="text/javascript">
<!--
var baseFontObj = bodyObj.createElement("basefont");
baseFontObj.color = "#FFFFFF";
//-->
</script>
</html>
HTMLBaseFontElement.face
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBaseFontObj. face
Описание
Свойство face объекта HTMLBaseFontElement определяет идентификатор типа
шрифта.
Пример
Код в листинге 11.42 с помощью объекта HTMLBodyElement создает объект
HTMLBaseFontElement и устанавливает его свойство face.
Листинг 11.42. Пример создания объекта HTMLBaseFontElement и
установки его свойства face
<html>
<script language="JavaScript" type="text/javascript">
<!--
var baseFontObj = bodyObj.createElement("basefont");
baseFontObj.face = "courier";
//-->
</script>
</html>
HTMLBaseFontElement.size
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBaseFontObj .s\ze
Описание
Свойство size объекта HTMLBaseFontElement определяет размер шрифта.
979 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.43 с помощью объекта HTMLBodyElement создает объект
HTMLBaseFontElement и устанавливает его свойство size.
Листинг 11.43. Пример создания объекта HTMLBaseFontElement и
установки его свойства size
<html>
<script language="JavaScript" type="text/javascript">
<!--
var baseFontObj = bodyObj.createElement("basefont");
baseFontObj.size = 12;
//-->
</script>
</html>
HTMLBodyElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Этот объект инкапсулирует тело HTML-документа. Данный элемент всегда
присутствует в API DOM, даже если в исходном документе отсутствуют HTML-
дескрипторы. Объект HTMLBodyElement наследует все методы и свойства объекта
HTMLElement. Свойства объекта HTMLBodyElement перечислены в табл. 11.6.
Таблица 11.6. Свойства объекта HTMLBodyElement
Элемент
aLink
background
bgColor
link
text
vLink
Описание
Цвет активных ссылок в элементе body.
URI элемента фонового изображения.
Цвет фона документа.
Цвет неактивных не посещенных ссылок.
Цвет текста данного документа.
Цвет посещенных ссылок.
Пример
В листинге 11.44 приведен пример создания объекта HTMLBodyElement.
Листинг 11.44. Пример создания объекта HTMLBodyElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
//-->
</script>
Глава 11. DOM HTML 980
</html>
HTMLBodyElement.aLink
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBodyObj. aLink
Описание
Свойство aLink объекта HTMLBodyElement определяет цвет активных ссылок
(после нажатия кнопки мыши, но до ее отпускания).
Пример
Код в листинге 11.45 с помощью объекта HTMLDocument создает объект
HTMLBodyElement и устанавливает его свойство aLink.
Листинг 11.45. Пример создания объекта HTMLBodyElement и
установки его свойства aLink
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElementfbody");
bodyObj.aLink = "#FF0000"
//-->
</script>
</html>
HTMLBodyElement. background
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBodyObj. background
Описание
Свойство background объекта HTMLBodyElement определяет URI элемента
фонового изображения.
Пример
Код в листинге 11.46 с помощью объекта HTMLDocument создает объект
HTMLBodyElement и устанавливает его свойство background.
Листинг 11.46. Пример создания объекта HTMLBodyElement и
установки его свойства background
<html>
<script language="JavaScript" type="text/javascript">
981 Часть III. Справочник по JavaScript
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
bodyObj. background = "http://foo.bar/images/tile.jpg"
//-->
</script>
</html>
HTMLBodyElement. bgColor
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBodyObj. bgColor
Описание
Свойство bgColor объекта HTMLBodyElement определяет цвет фона документа.
Пример
Код в листинге 11.47 с помощью объекта HTMLDocument создает объект
HTMLBodyElement и устанавливает его свойство bgColor.
Листинг 11.47. Пример создания объекта HTMLBodyElement и
установки его свойства bgColor
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElementfbody");
bodyObj.bgColor = "#FFFFFF";
//-->
</script>
</html>
HTMLBodyElement.link
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBodyObj. link
Описание
Свойство link объекта HTMLBodyElement содержит цвет неактивных
непосещенных ссылок.
Пример
Код в листинге 11.48 с помощью объекта HTMLDocument создает объект
HTMLBodyElement и устанавливает его свойство Link.
Глава 11. DOM HTML 982
Листинг 11.48. Пример создания объекта HTMLBodyElement и
установки его свойства Link
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
bodyObj.link = "#000066"
//-->
</script>
</html>
HTMLBodyElementtext
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBodyObjXeyX
Описание
Свойство text объекта HTMLBodyElement определяет цвет текста документа.
Пример
Код в листинге 11.49 с помощью объекта HTMLDocument создает объект
HTMLBodyElement и устанавливает его свойство text.
Листинг 11.49. Пример создания объекта HTMLBodyElement и
установки его свойства text
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi4 HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
bodyObj.text = "#000000"
//-->
</script>
</html>
HTMLBodyElement.vLink
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlBodyObj.vLmk
Описание
Свойство vLink объекта HTMLBodyElement определяет цвет посещенных ссылок.
983 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.50 с помощью объекта HTMLDocument создает объект
HTMLBodyElement и устанавливает его свойство vLink.
Листинг 11.50. Пример создания объекта HTMLBodyElement и
установки его свойства vLink
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElement("body");
bodyObj.vLink = "#6666CC"
//-->
</script>
</html>
HTMLBREIement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Этот объект представляет собой HTML-элемент, который вставляет символ разрыва
строки. Объект HTMLBREIement наследует все методы и свойства объекта
HTMLElement. Объект имеет следующие свойства:
Элемент
Описание
clear
Управляет потоком текста
Пример
Код в листинге 11.51 с помощью объекта HTMLBodyElement создает объект
HTMLBREIement.
Листинг 11.51. Пример создания объекта HTMLBREIement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var brObj = bodyObj.createElement("br");
//-->
</script>
</html>
HTMLBREIement.clear
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 984
Синтаксис
htmlBRObj. clear
Описание
Свойство clear объекта HTMLBREIement управляет потоком текста.
Пример
Код в листинге 11.52 с помощью объекта HTMLBodyElement создает объект
HTMLBREIement и устанавливает его свойство clear.
Листинг 11.52. Пример создания объекта HTMLBREIement и
установки его свойства clear
<html>
<script language="JavaScript" type="text/javascript">
<!--
var brObj = bodyObj.createElement("br");
brObj.clear = "left";
//-->
</script>
</html>
HTMLButtonElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Этот объект предназначен для представления HTML-кнопки. Он наследует все
методы и свойства объекта HTMLElement. Свойства объекта HTMLButtonElement
перечислены в табл. 11.7.
Таблица 11.7. Свойства объекта HTMLButtonElement
Элемент
accessKey
disabled
form
name
tablndex
type
value
Описание
Односимвольный ключ доступа, который обеспечивает управление
данной кнопкой.
Указывает, является ли данная кнопка неактивной.
Форма, в которой находится данная кнопка.
Имя данной кнопки.
Число, указывающее для данной кнопки порядок обхода по кнопке
табуляции.
Тип данной кнопки.
Значение данной кнопки.
Пример
В листинге 11.53 с помощью объекта HTMLFormElement создается объект
HTMLButtonElement и устанавливается его свойство type.
985 Часть III. Справочник по JavaScript
Листинг 11.53. Пример создания объекта HTMLButtonElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var buttonObj = formObj.createElement("button");
buttonObj.type = "submit";
//-->
</script>
</html>
HTMLButtonElement.accessKey
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlButtonObj. accessKey
Описание
Свойство accessKey объекта HTMLButtonElement представляет собой
односимвольный ключ доступа, который обеспечивает доступ к элементу
управления формы.
Пример
Код в листинге 11.54 с помощью объекта HTMLFormElement создает объект
HTMLButtonElement и устанавливает его свойство accessKey.
Листинг 11.54. Создание объекта HTMLButtonElement и установка его
свойства accessKey
<html>
<script language="JavaScript" type="text/javascript">
<!--
var buttonObj = formObj.createElement("button");
buttonObj.accessKey = "B";
//-->
</html>
HTMLButtonElement.disabled
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlButtonObj.disabled
Глава 11. DOM HTML 986
Описание
Свойство disabled объекта HTMLButtonElement позволяет блокировать экземпляр
кнопки.
Пример
Код в листинге 11.55 с помощью объекта HTMLFormElement создает объект
HTMLButtonElement и устанавливает его свойство disabled.
Листинг 11.55. Создание объекта HTMLButtonElement и установка его
свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var buttonObj = formObj.createElementfbutton");
buttonObj.disabled = true;
//-->
</script>
</html>
HTMLButtonElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlButtonObj. form
Описание
Свойство form объекта HTMLButtonElement возвращает элемент FORM, в
котором содержится данный элемент управления. Если кнопка находится не в
контексте формы, возвращается Null.
Пример
Код в листинге 11.56 с помощью объекта HTMLFormElement создает объект
HTMLButtonElement, а затем считывает его свойство form.
Листинг 11.56. Создание объекта HTMLButtonElement и считывание
его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
var buttonObj = formObj.createElementfbutton");
if(buttonObj.form.name == "emailForm")
processEmail(buttonObj.form);
//-->
</script>
</html>
HTMLButtonElement.name
JavaScript 1.5+, JScript 5+
987 Часть III. Справочник по JavaScript
Nav6+,IE5+
Синтаксис
htmlButtonObj.name
Описание
Свойство name объекта HTMLButtonElement содержит имя элемента управления
формы или объекта, передаваемое вместе с формой.
Пример
Код в листинге 11.57 с помощью объекта HTMLFormElement создает объект
HTMLButtonElement и устанавливает его свойство name.
Листинг 11.57. Создание объекта HTMLButtonElement и установка его
свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
var buttonObj = formObj.createElement("button");
buttonObj.name = "foo";
//-->
</script>
</html>
HTMLButtonElement. tablndex
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlButtonObj.tab\ndex
Описание
Свойство tablndex объекта HTMLButtonElement содержит индекс, который
соответствует положению элемента при переходе по клавише табуляции.
Пример
Код в листинге 11.58 с помощью объекта HTMLFormElement создает объект
HTMLButtonElement и устанавливает его свойство tablndex.
Листинг 11.58. Пример создания объекта HTMLButtonElement и
установки его свойства tablndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
var buttonObj = formObj.createElement("button");
buttonObj.tablndex = 10;
//-->
</script>
</html>
Глава 11. DOM HTML 988
HTMLButtonElement. type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlButtonObj.type
Описание
Свойство type объекта HTMLButtonElement описывает тип кнопки.
Пример
Код в листинге 11.59 с помощью объекта HTMLFormElement создает объект
HTMLButtonElement и устанавливает его свойство type.
Листинг 11.59. Пример создания объекта HTMLButtonElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var buttonObj = formObj.createElement("button");
buttonObj.type = "submit";
//-->
</script>
</html>
HTMLButtonElement. value
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlButtonObj. value
Описание
Свойство value объекта HTMLButtonElement содержит текущее значение данного
элемента управления.
Пример
Код в листинге 11.60 с помощью объекта HTMLFormElement создает объект
HTMLButtonElement и устанавливает его свойство value.
Листинг 11.60. Пример создания объекта HTMLButtonElement и
установки его свойства value
<html>
<script language="JavaScript" type="text/javascript">
<!--
var buttonObj = formObj.createElement("button");
buttonObj.type = "submit";
buttonObj.value = "Передать данные";
//-->
</script>
989 Часть III. Справочник по JavaScript
</html>
HTMLCollection
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLCollection представляет собой список узлов. Доступ к каждому узлу
можно получить либо по индексу, либо по имени или идентификатору узла.
Примечание
В DOM HTML коллекции автоматически обновляются при изменении документа.
Свойства и методы объекта HTMLCollection перечислены в табл. 11.8.
Таблица 11.8. Свойства и методы объекта HTMLCollection
Тип
Свойство
Метод
Элемент
length
item()
namedltemO
Описание
Количество элементов в данной коллекции.
Возвращает элемент коллекции с заданным индексом.
Возвращает элемент коллекции с заданным именем.
Пример
Код в листинге 11.61 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по его свойству images с
последующей обработкой каждого изображения.
Листинг 11.61. Выполнение итераций по объекту HTMLCollection
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var htmlDoclmages = htmlDoc.images;
var i = 0;
while(i < htmlDoclmages.length) {
var image = htmlDoclmages.item(i);
processlmageSrc(imageSrc);
</script>
</html>
HTMLCollection.length
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 990
Синтаксис
htmlCollectionObj. length
Описание
Свойство length объекта HTMLCollection определяет длину или размер списка
узлов.
Пример
Код в листинге 11.62 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по его свойству images,
выполняя обработку каждого изображения.
Листинг 11.62. Выполнение итераций по объекту HTMLCollection с
помощью свойства length
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var htmlDoclmages = htmlDoc.images;
var i = 0;
while(i < htmlDoclmages.length) {
var image = htmlDoclmages.item(i);
processlmageSrc(imageSrc);
</script>
</html>
HTMLCollection.item()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlCollection Obj. item (index)
Описание
Метод item() объекта HTMLCollection выбирает из коллекции узел с заданным
индексом. Узлы нумеруются в порядке обхода дерева узлов.
Пример
Код в листинге 11.63 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по его свойству images и
обрабатывает каждое изображение.
Листинг 11.63. Выполнение итераций по объекту HTMLCollection
<html>
<script language="JavaScript" type="text/javascript">
991 Часть III. Справочник по JavaScript
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var htmlDoclmages = htmlDoc.images;
var i = 0;
while(i < htmlDoclmages.length) {
var image = htmlDoclmages.item(i);
processlmageSrc(imageSrc);
</script>
</html>
HTMLCollection.namedltem()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlCollectionObj.name6\\em{uMn)
Описание
Метод namedltem() объекта HTMLCollection выбирает из коллекции узел с
заданным именем имя. Сначала поиск выполняется по значениям атрибута ID. Если
требуемый узел не найден, поиск выполняется по значениям атрибута имя, но
только по тем элементам, которые имеют такой атрибут.
Пример
Код в листинге 11.64 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по его свойству images и
обрабатывает каждое изображение.
Листинг 11.64. Выполнение итераций по объекту HTMLCollection с
помощью метода namedltem()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var htmlDoclmages = htmlDoc.images;
var i = 0;
while(i < htmlDoclmages.Length) {
var image = htmlDoclmages.namedltem("iconlmage");
processlmageSrc(imageSrc);
</script>
</html>
HTMLDirectoryElement
Глава 11. DOM HTML 992
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLDirectoryElement предназначен для представления каталога. Он
наследует все методы и свойства объекта HTMLElement. Объект
HTMLDirectoryElement имеет следующее свойство:
Элемент Описание
compact
Если значение этого элемента равно true, уменьшается расстояние
между элементами списка.
Пример
Код в листинге 11.65 представляет пример создания объекта
HTMLDirectoryElement с помощью объекта HTMLDListElement.
Листинг 11.65. Пример создания объекта HTMLDirectory
<html>
<script language="JavaScript" type="text/javascript">
<!--
vardListObj = bodyObj.createElement("dlist");
var directoryObj = dListObj.createElementfdirectory");
//-->
</script>
</html>
HTMLDirectoryElement. compact
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDirectoryObj. com pact
Описание
Свойство compact объекта HTMLDirectoryElement применяется для уменьшения
расстояния между элементами списка.
Пример
Код в листинге 11.66 с помощью объекта HTMLDListElement создает объект
HTMLDirectoryElement, в котором устанавливается свойство compact.
Листинг 11.66. Пример создания объекта HTMLDirectoryElement и
установки его свойства compact
<html>
<script language="JavaScript" type="text/javascript">
<!--
vardListObj = bodyObj.createElement("dlist");
993 Часть III. Справочник по JavaScript
var directoryObj = dListObj.createElementfdirectory");
directoryObj. compact = true;
//-->
</script>
</html>
HTMLDivElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLDivElement предназначен для представления контейнера блока. Он
наследует все методы и свойства объекта HTMLEIement. Объект HTMLDivElement
имеет следующее свойство:
Элемент
align
Описание
Горизонтальное выравнивание текста для текущего элемента.
Пример
Код в листинге 11.67 с помощью объекта HTMLBodyElement создает объект
HTMLDivElement и устанавливает его свойство align.
Листинг 11.67. Пример создания объекта HTMLDivElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var divObj = bodyObj.createElementfdiv");
divObj.align = "top";
//-->
</script>
</html>
HTMLDivElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDivObj.a\\gr\
Описание
Свойство align объекта HTMLDivElement устанавливает выравнивание текста по
горизонтали.
Пример
Код в листинге 11.68 с помощью объекта HTMLBodyElement создает объект
HTMLDivElement и устанавливает его свойство align.
Глава 11. DOM HTML 994
Листинг 11.68. Пример создания объекта HTMLDivElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
vardivObj = bodyObj.createElementfdiv");
divObj.align = "botton";
//-->
</script>
</html>
HTMLDListElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLDListElement предназначен для представления списка каталогов. Он
наследует все методы и свойства объекта HTMLElement. Объект
HTMLDListElement имеет следующее свойство:
Элемент Описание
compact
Если значение этого свойства равно true, уменьшается расстояние
между элементами списка.
Пример
Код в листинге 11.69 с помощью объекта HTMLBodyElement создает объект
HTMLDListElement и устанавливает его свойство compact.
Листинг 11.69. Пример создания объекта HTMLDListElement и
установки его свойства compact
<html>
<script language="JavaScript" type="text/javascript">
<!--
vardListObj = bodyObj.createElement("dlist");
dListObj. compact = true;
//-->
</script>
</html>
HTMLDListElement.com pact
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDListObj. com pact
995 Часть III. Справочник по JavaScript
Описание
При использовании свойства compact объекта HTMLDListElement уменьшается
расстояние между элементами списка.
Пример
Код в листинге 11.70 с помощью объекта HTMLBodyElement создает объект
HTMLDListElement и устанавливает его свойство compact.
Листинг 11.70. Пример создания объекта HTMLDListElement и
установки его свойства compact
<html>
<script language="JavaScript" type="text/javascript">
<!--
vardListObj = bodyObj.createElement("dlist");
dListObj.compact = true;
//-->
</script>
</html>
HTMLDocument
Синтаксис
Основной объект DOM HTML.
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Описание
Объект HTMLDocument является корнем иерархии HTML, в котором хранится все
содержимое. Помимо предоставления доступа к иерархии он также предлагает
несколько методов, которые позволяют выбирать из документа определенные
наборы данных. Свойства и методы объекта HTMLDocument перечислены в табл.
11.9.
Таблица 11.9. Свойства и методы объекта HTMLDocument
Тип
Свойство
Элемент
anchors
applets
cookie
body
domain
forms
images
links
referrer
Описание
Список содержащихся в документе привязок.
Список содержащихся в документе аплетов.
Cookie-файл, соответствующий данному
документу.
Текст тела данного документа.
Домен, с которого был загружен данный
документ.
Список содержащихся в документе форм.
Список содержащихся в документе
изображений.
Список содержащихся в документе внешних
ссылок.
URL документа, из которого был загружен
данный документ (по ссылке).
Глава 11. DOM HTML 996
Метод
title
url
close()
getElementsByName()
open()
write()
writeln()
Заголовок данного HTML-документа.
Полностью определенный URL-адрес данного
документа.
Закрывает поток документа.
Возвращает список NodeList всех элементов с
указанным именем.
Открывает поток документа для записи.
Записывает в открытый поток документа.
Записывает в открытый поток документа.
Пример
Код в листинге 11.71 с помощью метода createHTMLDocument() объекта
HTMLDOMImplementation создает объект HTMLDocument.
Листинг 11.71. Пример создания нового объекта HTMLDocument
<html>
<script language="JavaScript" type="text/javascript">
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moй HTML-документ");
htmlDoc.open();
vartextArea = htmlDoc.createElement("textarea");
textArea.value = "Текст, отображаемый в тестовой области";
</script>
</html>
HTMLDocument.anchors
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/Doc.anchors
Описание
Свойство anchors объекта HTMLDocument представляет собой коллекцию всех
привязок (А), содержащихся в документе с установленным атрибутом name.
Примечание
Для обеспечения обратной совместимости свойство anchors содержит список
привязок, которые были созданы с помощью атрибута name, и не содержит
привязки, при создании которых использовался атрибут ID.
Пример
Код в листинге 11.72 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняют итерации по свойству anchors
документа с последующей обработкой каждой привязки.
Листинг 11.72. Выполнение итераций по свойству anchors документа
<html>
997 Часть III. Справочник по JavaScript
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var htmlDocAnchors = htmlDoc.anchors;
var i = 0;
while(i < htmlDocAnchors.length) {
var anchor = htmlDocAnchors.item(i);
processAnchor(anchor);
</script>
</html>
HTMLDocument.applets
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/Doc.applets
Описание
Свойство applets объекта HTMLDocument представляет собой коллекцию
элементов OBJECT, которые включают аплеты, и элементов APPLET (устаревшие),
содержащихся в данном документе.
Пример
Код в листинге 11.73 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по свойству applets документа
с последующей обработкой каждого аплета.
Листинг 11.73. Выполнение итераций по свойству applets документа
<html>
<script language="JavaScript" type="text/javascript">
<!-
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("MoM HTML-документ");
htmlDoc.openO;
var htmlDocApplets = htmlDoc.applets;
var i = 0;
while(i < htmlDocApplets.length) {
var applet = htmlDoclmages.item(i);
processlmageSrc(applet);
</script>
</html>
HTMLDocument. body
JavaScript 1.5+, JScript 5+
Глава 11. DOM HTML 998
Nav6+,IE5+
Синтаксис
html Doc. body
Описание
Свойство body объекта HTMLDocument представляет собой элемент,
определяющий все содержимое документа. В документах с элементом BODY это
свойство возвращает элемент BODY. В документах с наборами фреймов свойство
body возвращает элемент FRAMESET верхнего уровня.
Пример
Код в листинге 11.74 с помощью метода createHTMLDocument() объекта
HTMLDOMImplementation создает объект HTMLDocument, а затем изменяет цвет
фона свойства body.
Листинг 11.74. Считывание и установка свойства body
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var docBody = htmlDoc.body;
docBody.bgColor = "#FFFFFF";
//-->
</script>
</html>
HTMLDocument.close()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDoc.c\ose()
Описание
Метод close() объекта HTMLDocument закрывает поток документа, открытый
методом ореп(), и выполняет визуализацию содержимого документа.
Пример
Код в листинге 11.75 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем для открытия документа в режиме записи
вызывается метод ореп().
Листинг 11.75. Закрытие документа с помощью метода close()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
htmlDoc.cookie = "sessionld=3213;expires=34283028";
999 Часть III. Справочник по JavaScript
htmlDoc.closeO;
</script>
</html>
HTM LDocu merit, cookie
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDoc.cook\e
Описание
Свойство cookie объекта HTMLDocument содержит cookie-набор, соответствующий
данному документу. Если документ не содержит cookie-набора, свойство возвращает
пустую строку. В противном случае свойство cookie содержит строку, состоящую из
разделенных точками с запятой пар имя=значения для всех cookie-наборов данной
страницы. Например, name=value;expires=date.
Пример
Код в листинге 11.76 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument и устанавливает значение его свойства cookie.
Листинг 11.76. Пример использования свойства cookie
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
htmlDoc.cookie = "sessionld=3213;expires=34283028";
}
</html>
HTMLDocument.domain
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDoc.doma'm
Описание
Свойство domain объекта HTMLDocument возвращает доменное имя сервера, на
котором находится данный документ, или Null, если сервер нельзя
идентифицировать по доменному имени.
Пример
Код в листинге 11.77 с помощью метода createHTMLDocument() объекта
HTMLDOMImplementation создает объект HTMLDocument. Затем для
определения доменного имени сервера, на котором находится данный документ,
считывается значение его свойства domain.
Глава 11. DOM HTML 1000
Листинг 11.77. Пример использования свойства domain
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
if(htmlDoc.domain == "foo.bar")
cameFromFooBar = true;
//-->
</script>
</html>
HTMLDocument.forms
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Wm/Doc.forms
Описание
Свойство forms объекта HTMLDocument определяет коллекцию всех форм
документа.
Пример
Код в листинге 11.78 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по свойству forms документа
с последующей обработкой формы с именем emailForm.
Листинг 11.78. Выполнение итераций по свойству forms документа
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.open();
var htmlDocForms = htmlDoc.forms;
var i = 0;
while(i < htmlDocForms.length) {
var form = htmlDocforms.ltem(i);
if(form.name == "emailForm")
processEmailForm(form);
</script>
</html>
HTMLDocument.getElementsByNameO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 001 Часть III. Справочник по JavaScript
Синтаксис
ftfm/Doc.getElementsByName(uMH)
Описание
Метод getElementsByName() объекта HTMLDocument возвращает (возможно,
пустую) коллекцию элементов с именами name.
Пример
Код в листинге 11.79 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем с помощью метода getElementsByName()
выполняет итерации по списку изображений документа с последующей обработкой
каждого изображения.
Листинг 11.79. Выполнение итераций по изображениям документа с
помощью метода getElementsByName()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var imageList = htrnlDoc.getElementsByName("image");
var i = 0;
while(i < imageList.length) {
var image = imageList.item(i);
processlmage(image);
</script>
</html>
HTMLDocument.images
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/Doc.images
Описание
Свойство images объекта HTMLDocument представляет собой коллекцию всех
элементов IMG, содержащихся в данном документе. В целях обеспечения обратной
совместимости действие свойства ограничивается только элементами IMG.
Пример
Код в листинге 11.80 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по свойству images документа
с последующей обработкой всех изображений.
Листинг 11.80. Выполнение итераций по коллекции HTMLCollection
<html>
Глава 11. DOM HTML 1002
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var htmlDoclmages = htmlDoc.images;
var i = 0;
while(i < htmlDoclmages.length) {
var image = htmlDoclmages.namedltemficonlmage");
processlmageSrc(imageSrc);
</script>
</html>
HTMLDocument.links
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDoc. links
Описание
Свойство links объекта HTMLDocument определяет коллекцию всех элементов
AREA, содержащихся в данном документе, с установленным значением атрибута
href.
Пример
Код в листинге 11.81 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument, а затем выполняет итерации по свойству links документа с
последующей обработкой всех аплетов.
Листинг 11.81. Выполнение итераций по свойству links документа
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var htmlDocLinks = htmlDoc.links;
var i = 0;
while(i < htmlDocApplets.length) {
var link = htmlDocLinks.item(i);
processLink(link);
</script>
</html>
HTMLDocument.open()
JavaScript 1.5+, JScript 5+
1 003 Часть III. Справочник по JavaScript
Nav6+,IE5+
Синтаксис
htmlDoc.openQ
Описание
Метод ореп() объекта HTMLDocument используется для открытия потока
документа с целью выполнения записи. Если указанный документ открыт, он
очищается.
Пример
Код в листинге 11.82 с помощью объекта HTMLDOMImplementation создает
объект HTMLDOMImplementation, затем с целью открытия документа для записи
вызывается метод ореп().
Листинг 11.82. Открытие документа HTMLDocument с помощью
метода ореп()
<html>
<script language="JavaScript" type="text/javascript">
<!-
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
htmlDoc.cookie = "sessionld=3213;expires=34283028"
htmlDoc.closeO;
//-->
</script>
</html>
HTMLDocument. referrer
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDoc. referrer
Описание
Свойство referrer объекта HTMLDocument возвращает LJRI Web-страницы, которая
содержала ссылку на данную страницу. Если пользователь перешел на страницу
непосредственно (не по ссылке, а, например, по закладке), значение этого свойства
равно пустой строке.
Пример
В листинге 11.83 с помощью метода createHTMLDocument() объекта
HTMLDOMImplementation создается новый объект HTMLDocument. Для
определения того, с какого сервера получена данная страница, считывается его
свойство referrer.
Листинг 11.83. Пример использования свойства referrer
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 1 004
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
if(htmlDoc.referrer == "http://www.foo.bar/index.htm")
cameFromFooBar = true;
//-->
</script>
</html>
HTMLDocument.title
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDocM\e
Описание
Свойство title объекта HTMLDocument содержит заголовок документа, указанный в
элементе TITLE документа.
Пример
В листинге 11.84 с помощью метода createHTMLDocument() объекта
HTMLDOMImplementation создается новый объект HTMLDocument и изменяется
его заголовок.
Листинг 11.84. Пример изменения свойства title
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
htmlDoc.title = "Новый заголовок моего HTML-документа";
//-->
</script>
</html>
HTMLDocumentURL
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDoc.URL
Описание
Свойство URL объекта HTMLDocument содержит полный URI для документа.
Пример
Код в листинге 11.85 с помощью метода createHTMLDocument() объекта
HTMLDOMImplementation создает новый объект HTMLDocument. Затем в
1 005 Часть III. Справочник по JavaScript
документе создается элемент TEXTAREA, значению свойства value которого
присваивается значение свойства URL.
Листинг 11.85. Пример использования свойства URL
<html>
<script language="JavaScript" type="text/javascript">
<!-
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
vartextArea = htmlDoc.createElement("textarea");
textArea.value = htmlDoc.URL;
//-->
</script>
</html>
HTMLDocument.write()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
ЫтЮос.ж'Ле(строка)
Описание
Метод write() объекта HTMLDocument используется для записи строки, указанной
параметром строка, в поток документа, открытый с помощью метода ореп(). При
этом строка вносится в модель структуры документа.
Пример
Код в листинге 11.86 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument. Затем для вывода в документ текстовых данных
применяется метод write().
Листинг 11.86. Пример использования метода write()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
htmlDoc.write("<h1 >3дравствуй, мир!</п1 >");
htmlDoc.closeO;
//-->
</html>
HTMLDocument.writeln()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDoc■.writeln(cmpora)
Глава 11. DOM HTML 1006
Описание
Метод writeln() объекта HTMLDocument используется для записи строки, заданной
параметром строка, за которой следует символ конца строки, в поток документа,
открытый с помощью метода ореп(). При этом строка вносится в модель структуры
документа.
Пример
Код в листинге 11.87 с помощью объекта HTMLDOMImplementation создает
объект HTMLDocument. Затем для вывода в документ текстовых данных
применятся метод writeln().
Листинг 11.87. Пример использования метода writeln()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
htmlDoc.writeln("<h1>3flpaBCTByPi, мир!</М>");
htmlDoc.closeO;
//-->
</script>
</html>
HTMLDOMImplementation
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLDOMImplementation наследует все свойства и методы объекта
DOMImplementation, а также содержит метод, предназначенный для создания
экземпляра HTML-документа:
Элемент
createHTMLDocumentO
Описание
Создает и возвращает HTML-документ.
Пример
Код в листинге 11.88 с помощью метода createHTMLDocumentO объекта
HTMLDOMImplementation создает объект HTMLDocument.
Листинг 11.88. Пример создания объекта HTMLDOMImplementation
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
vartextArea = htmlDoc.createElement("textarea");
textArea.Value = "Это пример текста в текстовой области");
1 007 Часть III. Справочник по JavaScript
</script>
</html>
HTMLDOMImplementation.createHTMLDocumentO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlDOMImpl.createHTMLDocument(documenf77f/e);
Описание
Метод createHTMLDocumentO объекта HTMLDOMImplementation создает объект
HTMLDocument с минимальным набором узлов: HTML, HEAD, TITLE и BODY.
Параметр documentTitle содержит строку, которая через дочерний узел Text будет
применяться в качестве содержимого элемента TITLE.
Пример
Код в листинге 11.89 с помощью метода createHTMLDocumentO объекта
HTMLDOMImplementation создает объект HTMLDocument.
Листинг 11.89. Пример создания элемента HTMLDocument с
помощью метода createHTMLDocumentO
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mon HTML-докуент");
htmlDoc.open();
vartextArea = htmlDoc.createElement("textarea");
textArea.Value = "Это пример текста в текстовой области.");
//-->
</script>
</html>
HTMLEIement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Все HTML-объекты являются производными объекта HTMLEIement. Базовый
объект HTMLEIement предназначен для представления элементов, которые имеют
только основные HTML-атрибуты.
В данном случае идет речь о следующих элементах:
• HEAD
• специальные элементы: SUB, SUP, SPAN, BDO
• элементы для работы со шрифтами: ТТ, I, В, U, S, STRIKE, BIG, SMALL
Глава 11. DOM HTML 1008
• фразы: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ACRONYM,
ABBR
• списки: DD, DT
• NOFRAMES, NOSCRIPT
• ADDRESS, CENTER
Свойства объекта HTMLEIement перечислены в табл. 11.10.
Таблица 11.10. Свойства объекта HTMLEIement
Элемент
className
dir
id
lang
title
Описание
Атрибут class данного элемента.
Указывает базовое направление, в котором располагается текст
данного элемента.
Идентификатор данного элемента.
Код языка для данного элемента.
Желаемый заголовок элемента.
Пример
Код в листинге 11.90 представляет пример создания элемента BaseElement с
последующим считыванием значения его свойства id с целью проверки его типа.
Листинг 11.90. Пример создания объекта BaseElement и считывания
значения свойства id
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mon HTML-документ");
htmlDoc.openO;
var textAreaObj = htmlDoc.createElementftextarea");
if(textAreaObj.id != "textarea")
throw new DOMException("Omn6Ka реализации!");
//-->
</script>
</html>
HTMLEIement.className
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/E/emOfo/className
Описание
Свойство className объекта HTMLEIement содержит значение атрибута class для
данного элемента.
1 009 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.91 реализует пример создания объекта Text Area Element, а также
установку его свойства className.
Листинг 11.91. Пример создания объекта TextAreaElement и
установки его свойства className
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.open();
var textAreaObj = htmlDoc.createElement("textarea");
textAreaObj.classname = "TextArea";
//-->
</html>
HTMLEIement.dir
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlElemObj.dir
Описание
Свойство dir объекта HTMLElement указывает базовое направление текста и
таблиц.
Пример
В листинге 11.92 приведен пример установки свойства dir объекта HTMLElement.
Листинг 11.92. Пример установки свойства dir объекта HTMLElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
var textAreaObj = htmlDoc.createElement("textarea");
textAreaObj.dir = "right";
//-->
</html>
HTMLEIement.id
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlElemObj.id
Описание
Свойство id объекта HTMLElement возвращает идентификатор элемента.
Глава 11. DOM HTML 1010
Пример
Код в листинге 11.93 представляет пример создания объекта HTMLEIement и
считывания значения его свойства id с целью проверки типа элемента.
Листинг 11.93. Пример считывания свойства id объекта HTMLEIement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var textAreaObj = htmlDoc.createElementftextarea");
if(textAreaObj.id != "textarea")
throw new ООМЕхсерИопС'Ошибка реализации!");
//-->
</html>
HTMLEIement.lang
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlElemObj. lang
Описание
Свойство lang объекта HTMLEIement определяет код языка элемента в
соответствии с RFC 1766 (этот документ можно найти по адресу
http://www.ietf.org).
Пример
Код в листинге 11.94 реализует пример установки значения свойства lang объекта
HTMLEIement.
Листинг 11.94. Пример установки свойства lang
<html>
<script language="JavaScript" type="text/javascript">
<!-
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var textAreaObj = htmlDoc.createElementftextarea");
textAreaObj.lang = "us/english";
//-->
</html>
HTMLEIement.title
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/E/emOb/.title
1 011 Часть III. Справочник по JavaScript
Описание
Свойство title объекта HTMLElement определяет желаемый заголовок элемента.
Пример
Код в листинге 11.95 реализует пример создания объекта HTMLElement и
установки его свойства title.
Листинг 11.95. Пример установки свойства title объекта HTMLElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var textAreaObj = htmlDoc.createElement("textarea");
texAreaObj.title = "Элемент TextArea";
//-->
</html>
HTMLFieldSetElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLFieldSetElement объединяет элементы управления формы в
логические группы. Он наследует все свойства и методы объекта HTMLElement.
Объект HTMLFieldSetElement содержит следующее свойство:
Элемент
Описание
form
Форма, в которой находится данная группа элементов.
Пример
Код в листинге 11.96 реализует пример создания объекта HTMLFieldSetElement.
Листинг 11.96. Пример создания объекта HTMLFieldSetElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var fieldSetObj = formObj.createElement("fieldset");
//-->
</script>
</html>
HTMLFieldSetElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 1012
Синтаксис
htmlFormSetObj.form
Описание
Свойство form объекта HTMLFieldSetElement возвращает элемент FORM, в
котором находится данный элемент управления. Если данный элемент управления
находится не в контексте формы, свойство form возвращает Null.
Пример
Код в листинге 11.97 с помощью объекта HTMLFormElement создает объект
HTMLFieldSetElement и считывает значение его свойства form.
Листинг 11.97. Пример создания объекта HTMLFieldSetElement и
считывания его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
var fieldSetObj = formObj.createElement("fieldset");
if(fieldSetObj. form, name == "emailForm")
processEmail(fieldSetObj.Form);
//-->
</html>
HTMLFontElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLFontElement предназначен для представления объекта Font HTML.
Он наследует все методы и свойства объекта HTMLElement. Свойства объекта
HTMLFontElement перечислены в табл. 11.11.
Таблица 11.11. Свойства объекта HTMLFontElement
Элемент
color
face
size
Описание
Цвет шрифта.
Гарнитура шрифта.
Кегль шрифта.
Пример
Код в листинге 11.98 с помощью объекта HTMLBodyElement создает объект
HTMLFontElement.
Листинг 11.98. Пример создания объекта HTMLFontElement
<html>
<script language="JavaScript" type="text/javascript">
1 01 3 Часть III. Справочник по JavaScript
varfontObj = bodyObj.createElementffont");
//-->
</script>
</html>
HTMLFontElementcolor
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFontObj. color
Описание
Свойство color объекта HTMLFontElement определяет цвет шрифта.
Пример
Код в листинге 11.99 с помощью объекта HTMLBodyElement создает объект
HTMLFontElement и устанавливает его свойство color.
Листинг 11.99. Пример создания объекта HTMLBodyElement и
установки его свойства color
<html>
<script language="JavaScript" type="text/javascript">
<!--
varfontObj = bodyObj.createElementffont");
fontObj.color = "#FFFFFF";
//-->
</html>
HTMLFontElementface
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFontObj.face
Описание
Свойство face объекта HTMLFontElement определяет гарнитуру шрифта.
Пример
Код в листинге 11.100 с помощью объекта HTMLBodyElement создает объект
HTMLFontElement и устанавливает его свойство face.
Листинг 11.100. Пример создания объекта HTMLBodyElement и
установки его свойства face
<html>
<script language="JavaScript" type="text/javascript">
<!--
varfontObj = bodyObj.createElementffont");
fontObj.face = "courier";
Глава 11. DOM HTML 1014
</script>
</html>
HTMLFontElementsize
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFontObj. size
Описание
Свойство size объекта HTMLFontElement определяет кегль шрифта.
Пример
Код в листинге 11.101 с помощью объекта HTMLBodyElement создает объект
HTMLFontElement и устанавливает его свойство size.
Листинг 11.101. Пример создания объекта HTMLBodyElement и
установки его свойства size
<html>
<script language="JavaScript" type="text/javascript">
<!--
varfontObj = bodyObj.createElementffont");
fontObj.size = 10;
//-->
</script>
</html>
HTMLFormElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Элемент FORM выполняет функции, аналогичные функциям коллекции и элемента.
Он предоставляет прямой доступ к элементам ввода и атрибутам формы. Объект
HTMLFormElement наследует все методы и свойства объекта HTMLElement.
Свойства и методы объекта HTMLFormElement перечислены в табл. 11.12.
Таблица 11.12. Свойства и методы объекта HTMLElement
Тип
Свойство
Элемент
acceptCharset
action
elements
enctype
Описание
Список поддерживаемых сервером наборов символов.
Серверный обработчик формы.
Коллекция всех элементов формы.
Тип содержимого переданной формы.
1015 Часть III. Справочник по JavaScript
Метод
length
method
name
target
reset()
submit()
Количество элементов управления, находящихся на
форме.
HTTP-метод, используемый для передачи данных
формы.
Имя текущей формы.
Фрейм, в котором будет производиться визуализация
ресурса.
Восстанавливает для всех элементов управления
формы их значения по умолчанию.
Передает данную форму серверу.
Пример
Код в листинге 11.102 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement, затем выполняет итерации по его свойству elements.
Листинг 11.102. Пример создания объекта HTMLFormElement и
выполнения итераций по его свойству elements
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
varformElements = formObj.elements;
var i = 0;
while(i < formElements.length) {
processFormElement(formElements.lndex(i));
</script>
</html>
HTMLFormElement.acceptCharset
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Wm/FormOb/.acceptCharset
Описание
Свойство acceptCharset объекта HTMLFormElement
поддерживаемых сервером наборов символов.
Пример
Код в листинге 11.103 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement и устанавливает его свойство acceptCharset.
содержит список
Глава 11. DOM HTML 1016
Листинг 11.103. Пример создания объекта HTMLFormElement и
установки его свойства acceptCharset
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
formObj.acceptCharset = "us/english";
//-->
</script>
</html>
HTMLFormElement.action
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj. action
Описание
Свойство action объекта HTMLFormElement представляет серверный обработчик
формы.
Пример
Код в листинге 11.104 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement и устанавливает его свойство action.
Листинг 11.104. Пример создания объекта HTMLFormElement и
установки его свойства action
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
formObj. action = "http://foo.bar/cgi-bin/processForm.pl";
//-->
</script>
</html>
HTMLFormElementelements
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/FormOb/.elements
1 01 7 Часть III. Справочник по JavaScript
Описание
Свойство elements объекта HTMLFormElement возвращает коллекцию всех
элементов управления для данной формы.
Пример
Код в листинге 11.105 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement, а затем выполняет итерации по его свойству elements.
Листинг 11.105. Пример создания объекта HTMLFormElement и
выполнения итераций по его свойству elements
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
varformElements = formObj.elements;
var i = 0;
while(i < formElements.length) {
processFormElement(formElements.item(i));
</script>
</html>
HTMLFormElementenctype
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj. enctype
Описание
Свойство enctype объекта HTMLFormElement определяет тип содержимого
предоставленной формы, как правило, в формате "application/x-www-form-
urlencoded".
Пример
В листинге 11.106 с помощью объекта HTMLBodyElement создается объект
HTMLFormElement и устанавливается его свойство enctype.
Листинг 11.106. Пример создания объекта HTMLFormElement и
установки его свойства enctype.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
Глава 11. DOM HTML 1018
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
formObj.enctype = "application/x-www-form-urlencoded"
//-->
</script>
</html>
HTMLFormElement.length
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj. length
Описание
Свойство length объекта HTMLFormElement определяет количество элементов
управления, находящихся на форме.
Пример
Код в листинге 11.107 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement, а также считывает его свойство length.
Листинг 11.107. Пример создания объекта HTMLFormElement и
считывания его свойства length
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var formElements = formObj.elements;
var i = 0;
while(i < formElements.length) {
processFormElement(formElements.item(i));
</script>
</html>
HTMLFormElement. method
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj. method
1019 Часть III. Справочник по JavaScript
Описание
Свойство method объекта HTMLFormElement представляет собой HTTP-метод,
используемый для передачи данных формы.
Пример
Код в листинге 11.108 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement и устанавливает его свойство method.
Листинг 11.108. Пример создания объекта HTMLFormElement и
установки его свойства method
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
formObj.method = "post";
//-->
</script>
</html>
HTMLFormElementname
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj. name
Описание
Свойство name объекта HTMLFormElement определяет имя формы.
Пример
Код в листинге 11.109 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement, а также устанавливает его свойство name.
Листинг 11.109. Пример создания объекта HTMLFormElement и
установки его свойства name.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
formObj.name = "checkoutForm";
//-->
</script>
</html>
Глава 11. DOM HTML 1020
HTMLFormElement.reset()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj. reset()
Описание
Метод reset() объекта HTM LForm Element восстанавливает для всех элементов
управления формы их значения, заданные по умолчанию. Он выполняет ту же
функцию, что и кнопка reset.
Пример
Код в листинге 11.110 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement, а также вызывает его метод reset().
Листинг 11.110. Пример создания объекта HTMLFormElement и
вызова его метода reset()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
formObj.resetO;
//-->
</script>
</html>
HTMLFormElement.submit()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj .subm\l()
Описание
Метод submitQ объекта HTMLFormElement передает данные формы. Он
выполняет ту же функцию, что и кнопка submit.
Пример
Код в листинге 11.111 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement, а также вызывает его метод submit().
Листинг 11.111. Пример создания объекта HTMLFormElement и
вызова его метода submit()
<html>
<script language="JavaScript" type="text/javascript">
1 021 Часть III. Справочник по JavaScript
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
formObj.submitO;
//-->
</script>
</html>
HTMLFormElement. target
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFormObj. target
Описание
Свойство target объекта HTMLFormElement содержит имя фрейма, в котором
будет выполняться визуализация ресурса.
Пример
Код в листинге 11.112 с помощью объекта HTMLBodyElement создает объект
HTMLFormElement и устанавливает его свойство target.
Листинг 11.112. Пример создания объекта HTMLFormElement и
установки его свойства target
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj. createElement("form");
formObj.target = "MainFrame";
//-->
</script>
</html>
HTMLFrameElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLFrameElement представляет собой HTML-фрейм. Этот объект
применяется для создания фреймов. Объект HTMLFrameElement наследует все
свойства и методы объекта HTMLElement. Свойства объекта HTMLFrameElement
описаны в табл. 11.13.
Глава 11. DOM HTML 1022
Таблица 11.13. Свойства объекта HTMLFrameElement
Элемент
contentDocument
frameBorder
longDesc
marginHeight
marginWidth
name
noResize
src
scrolling
Описание
Документ, который находится в данном фрейме.
Ширина рамки фрейма.
URI, с использованием которого можно найти развернутое
описание данного фрейма.
Высота поля фрейма (в пикселах).
Ширина поля фрейма (в пикселах).
Имя данного фрейма.
Указывает, может ли агент пользователя изменять размеры
данного фрейма.
URI, по которому можно найти начальное содержимое фрейма.
Указывает можно ли пролистывать содержимое данного
фрейма.
Пример
Код в листинге 11.113 реализует пример создания объекта HTMLFrameElement с
помощью объекта HTMLFrameSetElement.
Листинг 11.113. Пример создания объекта HTMLFrameElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
//-->
</script>
</html>
HTMLFrameElement.contentDocument
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/FrameOfo/.contentDocument
Описание
Свойство contentDocument объекта HTMLFrameElement представляет собой
документ, содержащийся в данном фрейме.
Пример
Код в листинге 11.114 реализует пример считывания свойства contentDocument
объекта HTMLFrameElement.
Листинг 11.114. Пример считывания свойства contentDocument
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDocObj = frameObj.contentDocument;
1 023 Часть III. Справочник по JavaScript
</script>
</html>
HTMLFrameElement.frameBorder
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameObj.frameBorder
Описание
Свойство frameBorder объекта HTMLFrameElement определяет ширину рамки
данного фрейма.
Пример
Код в листинге 11.115 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement и устанавливается его свойство frameBorder.
Листинг 11.115. Пример создания объекта HTMLFrameElement и
установки его свойства frameBorder
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj. Border = 0;
//-->
</script>
</html>
HTMLFrameElement.longDesc
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameObj. longDesc
Описание
Свойство longDesc объекта HTMLFrameElement содержит URI, по которому
можно найти развернутое описание данного изображения или фрейма.
Пример
Код в листинге 11.116 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement, а также устанавливает свойство longDesc.
Листинг 11.116. Пример создания объекта HTMLFrameElement и
установки его свойства longDesc
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 1 024
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj.longDesc = "http://foo.bar/framedesc.html"
</script>
</html>
HTMLFrameElement.marginHeight
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameObj. marginHeight
Описание
Свойство marginHeight объекта HTMLFrameElement определяет высоту поля
фрейма (в пикселах).
Пример
Код в листинге 11.117 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement и устанавливает его свойство marginHeight.
Листинг 11.117. Пример создания объекта HTMLFrameElement и
установки его свойства marginHeight
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj.marginHeight = 3;
//-->
</script>
</html>
HTMLFrameElementmarginWidth
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Wm/FrameOfo/.marginWidth
Описание
Свойство margin Width объекта HTMLFrameElement определяет ширину поля
фрейма (в пикселах).
Пример
Код в листинге 11.118 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement, а также устанавливает его свойство marginWidth.
1 025 Часть III. Справочник по JavaScript
Листинг 11.118. Пример создания объекта HTMLFrameElement и
установки его свойства marginWidth
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj.marginWidth = 3;
//-->
</script>
</html>
HTMLFrameElementname
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameObj. name
Описание
Свойство name объекта HTMLFrameElement определяет имя данного фрейма
(объект атрибута target).
Пример
Код в листинге 11.119 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement, а также устанавливает его свойство name.
Листинг 11.119. Пример создания объекта HTMLFrameElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj.name = "mainframe";
//-->
</script>
</html>
HTMLFrameElement. noResize
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameObj noRes\ze
Описание
Свойство noResize объекта HTMLFrameElement в случае, если его значение равно
true, запрещает пользователю изменять размеры фрейма.
Глава 11. DOM HTML 1026
Пример
Код в листинге 11.120 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement, а также устанавливается его свойство noResize.
Листинг 11.120. Пример создания объекта HTMLFrameElement и
установки его свойства noResize
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj.noResize = true;
//-->
</script>
</html>
HTMLFrameElement.scrolling
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameObj. scrolling
Описание
Свойство scrolling объекта HTMLFrameElement указывает, должен ли фрейм иметь
полосы прокрутки.
Пример
Код в листинге 11.121 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement и устанавливает его свойство scrolling.
Листинг 11.121. Пример создания объекта HTMLFrameElement и
установки его свойства scrolling
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj.scrolling = false;
//-->
</script>
</html>
HTMLFrameElementsrc
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameObj. src
1 027 Часть III. Справочник по JavaScript
Описание
Свойство src объекта HTMLFrameElement содержит URI, по которому находится
исходное содержимое фрейма.
Пример
Код в листинге 11.122 с помощью объекта HTMLFrameSetElement создает объект
HTMLFrameElement и устанавливает его свойство src.
Листинг 11.122. Пример создания объекта HTMLFrameElement и
установки его свойства src
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
var frameObj = frameset.createElement("frame");
frameObj.src = "http://foo.bar/";
//-->
</script>
</html>
HTMLFrameSetElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLFrameSetElement предназначен для представления набора HTML-
фреймов и используется для создания таблиц кадров. Он наследует все свойства и
методы объекта HTMLElement. Свойства объекта HTMLFrameSetElement
перечислены в табл. 11.14.
Таблица 11.14. Свойства объекта HTMLFrameSetElement
Элемент
cols
rows
Описание
Количество столбцов в наборе фреймов.
Количество строк в наборе фреймов.
Пример
Код в листинге 11.123 реализует пример создания объекта HTMLFrameSetElement
с помощью объекта HTMLDocument.
Листинг 11.123. Пример создания объекта HTMLFrameSetElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
//-->
</script>
Глава 11. DOM HTML 1028
</html>
HTMLFrameSetElement.cols
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
MmlFrameSetObj. cols
Описание
Свойство cols объекта HTMLFrameSetElement определяет количество столбцов
фреймов в наборе.
Пример
Код в листинге 11.124 с помощью объекта HTMLDocument создает объект
HTMLFrameSetElement, а также устанавливает его свойство cols.
Листинг 11.124. Пример создания объекта HTMLFrameSetElement и
установки его свойства cols
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
frameset.cols = 3;
//-->
</script>
</html>
HTMLFrameSetElement. rows
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlFrameSetObj. rows
Описание
Свойство rows объекта HTMLFrameSetElement определяет количество строк
фреймов в наборе.
Пример
Код в листинге 11.125 с помощью объекта HTMLDocument создает объект
HTMLFrameSetElement, а также устанавливает его свойство rows.
Листинг 11.125. Пример создания объекта HTMLFrameSetElement и
установки его свойства rows
<html>
<script language="JavaScript" type="text/javascript">
<!--
frameSetObj = htmlDoc.createElement("frameset");
frameset.rows = 3;
1 029 Часть III. Справочник по JavaScript
</script>
</html>
HTMLHeadElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLHeadElement предназначен для представления данных заголовка
документа. Он наследует все методы и свойства объекта HTMLElement. Объект
HTMLHeadElement имеет следующее свойство:
Элемент
profile
Описание
URI, содержащий профиль метаданных
Пример
Код в листинге 11.126 реализует пример создания объекта HTMIHeadlElement с
помощью объекта HTMLDocument.
Листинг 11.126. Пример создания объекта HTMIHeadlElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mon HTML-документ");
htmlDoc.openO;
var headElement = htmlDoc.createElement("head");
//-->
</script>
</html>
HTMLHeadElement.profile
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlHeadElemObj. profile
Описание
Свойство profile объекта HTMLHeadElement содержит URI, используя который
можно найти профиль метаданных.
Пример
Код в листинге 11.127 с помощью объекта HTMLDocument создает объект
HTMLHeadlElement, а также устанавливает его свойство profile.
Глава 11. DOM HTML 1030
Листинг 11.127. Пример создания объекта HTMLHeadlElement и
установки его свойства profile
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var headElement = htmlDoc.createElement("head");
headElement.profile = "http://foo.bar/metaprofile.htm";
//-->
</script>
</html>
HTMLHeadingElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLHeadingElement предназначен для представления HTML-заголовков,
от HI до Н6. Она наследует все свойства и методы объекта HTMLElement. Объект
имеет следующее свойство:
Элемент
align
Описание
Выравнивание текущего заголовка по горизонтали.
Пример
Код в листинге 11.128 с помощью объекта HTMLBodyElement создает объект
HTMLHeadingElement и устанавливает его свойство align.
Листинг 11.128. Пример создания объекта HTMLHeadingElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var headingObj = bodyObj.createElement("heading");
headingObj. align = "left";
//-->
</script>
</html>
HTMLHeadingElement.align
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlHeadingingObj.aWgn
1 031 Часть III. Справочник по JavaScript
Описание
Свойство align объекта HTMLHeadingElement устанавливает тип выравнивания по
горизонтали текста заголовка.
Пример
Код в листинге 11.129 с помощью объекта HTMLBodyElement создает объект
HTMLHeadingElement и устанавливает его свойство align.
Листинг 11.129. Пример создания объекта HTMLHeadingElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var headingObj = bodyObj.createElement("heading");
headingObj.align = "bottom";
//-->
</script>
</html>
HTMLHREIement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLHREIement предназначен для представления горизонтальной
линейки. Он наследует все свойства и методы объекта HTMLElement. Свойства
объекта представлены в табл. 11.15.
Таблица 11.15. Свойства объекта HTMLHREIement
Элемент
align
noShade
size
width
Описание
Устанавливает тип выравнивания линейки на Web-странице.
Указывает клиенту, что при визуализации данного элемента не должно
использоваться затенение.
Высота данной горизонтальной линейки.
Ширина данной горизонтальной линейки.
Пример
Код в листинге 11.130 с помощью объекта HTMLBodyElement создает объект
HTMLHREIement и устанавливает его свойство align.
Листинг 11.130. Пример создания объекта HTMLHREIement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 1032
var hrObj = bodyObj.CreateElement("hr");
hrObj.align = "top";
//-->
</script>
</html>
HTMLHREIement.align
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlHRObj. align
Описание
Свойство align объекта HTMLHREIement устанавливает выравнивание линейки на
Web-странице.
Пример
Код в листинге 11.131 с помощью объекта HTMLBodyElement создает объект
HTMLHREIement и устанавливает его свойство align.
Листинг 11.131. Пример создания объекта HTMLHREIement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var hrObj = bodyObj.CreateElement("hr");
hrObj.align = "bottom";
//-->
</html>
HTMLHREIement.noShade
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Мт/ШОЬ/.noShade
Описание
Свойство noShade объекта HTMLHREIement указывает пользовательскому агенту,
что при визуализации данного элемента не должно использоваться затенение.
Пример
Код в листинге 11.132 с помощью объекта HTMLBodyElement создает объект
HTMLHREIement и устанавливает его свойство noShade.
Листинг 11.132. Пример создания объекта HTMLHREIement и
установки его свойства noShade
<html>
<script language="JavaScript" type="text/javascript">
1 033 Часть III. Справочник по JavaScript
var hrObj = bodyObj.CreateElement("hr");
hrObj.noShade = true;
//-->
</script>
</html>
HTMLHREIement.size
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlHRObj. size
Описание
Свойство size объекта HTMLHREIement определяет высоту линейки.
Пример
Код в листинге 11.133 с помощью объекта HTMLBodyElement создает объект
HTMLHREIement и устанавливает его свойство size.
Листинг 11.133. Пример создания объекта HTMLHREIement и
установки его свойства size
<html>
<script language="JavaScript" type="text/javascript">
<!--
var hrObj = bodyObj.CreateElement("hr");
hrObj.size = 10;
//-->
</script>
</html>
HTMLHREIement.width
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlHRObj..width
Описание
Свойство width объекта HTMLHREIement определяет ширину горизонтальной
линейки.
Пример
Код в листинге 11.134 с помощью объекта HTMLBodyElement создает объект
HTMLHREIement и устанавливает его свойство width.
Листинг 11.134. Пример создания объекта HTMLHREIement и
установки его свойства width
<html>
Глава 11. DOM HTML 1 034
<script language="JavaScript" type="text/javascript">
<!--
var hrObj = bodyObj.CreateElement("hr");
hrObj.width = 10;
</script>
</html>
HTMLHtmlElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLHtmlElement определяет корень HTML-документа. Он наследует все
свойства и методы объекта HTMLEIement. Объект имеет следующее свойство:
Элемент Описание
version
Данные о версии DTD (Document Type Definition, определение типа
документа) данного документа.
Пример
Код в листинге 11.135 реализует пример создания объекта HTMlHtmlElement с
помощью объекта HTMLDocument.
Листинг 11.135. Пример создания объекта HTMlHtmlElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHtmlDocument("MoH HTML-документ");
htmlDoc.open();
var htmlElement = htmlDoc.createElement("html");
//-->
</script>
</html>
HTMLHtmlElement. version
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlHtmlElementObj. version
Описание
Свойство version объекта HTMLHtmlElement содержит данные о версии DTD
документа.
1 035 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.136 с помощью объекта HTMLDocument создает объект
HTMlHtmlElement и устанавливает его свойство version.
Листинг 11.136. Пример создания объекта HTMlHtmlElement и
установки его свойства version
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHtmlDocumentC'Moii HTML-документ");
htmlDoc.openO;
var htmlElement = htmlDoc.createElement("html");
htmlElement.version = .0";
//-->
</script>
</html>
HTMLIFrameElement
Синтаксис
Основной объект DOM HTML.
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Описание
Объект HTMLIFrameElement предназначен для представления внутреннего фрейма
HTML. Он наследует все свойства и методы объекта HTMLElement. Свойства
объекта HTMLIFrameElement перечислены в табл. 11.16.
Таблица 11.16. Свойства объекта HTMLIFrameElement
Элемент
align
contentDocument
frameBorder
height
longDesc
marginHeight
marginWidth
name
scrolling
src
width
Описание
Устанавливает выравнивание объекта IFRAME относительно
окружающего его текста.
Документ, содержащийся в данном фрейме.
Ширина рамки вокруг данного объекта IFRAME.
Высота данного объекта IFRAME.
URI, по которому можно найти развернутое описание объекта
IFRAME.
Высота поля фрейма (в пикселах).
Ширина поля фрейма (в пикселах).
Имя данного объекта IFRAME.
Указывает, может ли выполнятся прокрутка данного фрейма.
URI, по которому можно получить доступ к начальному
содержимому фрейма.
Ширина данного объекта IFRAME.
Пример
В листинге 11.137 приведен пример создания объекта HTMLIFrameElement с
помощью объекта HTMLBodyElement.
Глава 11. DOM HTML 1036
Листинг 11.137. Пример создания объекта HTMLIFrameElement.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
//-->
</script>
</html>
HTMLIFrameElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllFrameObj.aWgn
Описание
Свойство align объекта HTMLFrameElement устанавливает выравнивание объекта
по вертикали и горизонтали относительно окружающего его текста.
Пример
В листинге 11.138 с помощью объекта HTMLBodyEIement создается объект
HTMLIFrameElement и устанавливается его свойство align.
Листинг 11.138. Пример создания объекта HTMLIFrameElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.align = "top";
//-->
</script>
</html>
HTMLIFrameElementcontentDocument
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm//FrameOb/.contentDocument
Описание
Свойство contentDocument объекта HTMLFrameElement возвращает документ,
который находится в данном фрейме, если такой документ существует, и Null s в
противном случае.
1 037 Часть III. Справочник по JavaScript
Пример
В листинге 11.139 приведен пример чтения свойства contentDocument объекта
HTMLIFrameElement.
Листинг 11.139. Пример чтения свойства contentDocument объекта
HTMLIFrameElement.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = iFrameObj. contentDocument;
//-->
</script>
</html>
HTMLIFrameElement.frameBorder
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllFrameObj.ftameBorder
Описание
Свойство frameBorder объекта HTMLFrameElement определяет ширину рамки
вокруг данного объекта.
Пример
Код в листинге 11.140 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство frameBorder.
Листинг 11.140. Пример создания объекта HTMLIFrameElement и
установки его свойства frameBorder
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.frameBorder = 1;
//-->
</script>
</html>
HTMLIFrameElement.height
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllFrameObj.he\gUX
Описание
Свойство height объекта HTMLFrameElement определяет высоту фрейма.
Глава 11. DOM HTML 1038
Пример
Код в листинге 11.141 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство height.
Листинг 11.141. Пример создания объекта HTMLIFrameElement и
установки его свойства height
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.height = 25;
//-->
</script>
</html>
HTMLIFrameElement.longDesc
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllFrameObj. long Desc
Описание
Свойство longDesc объекта HTMLFrameElement содержит URI, по которому
находится развернутое описание данного изображения или фрейма.
Пример
Код в листинге 11.142 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство longDesc.
Листинг 11.142. Пример создания объекта HTMLIFrameElement и
установки его свойства longDesc
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.longDesc = "http://foo.bar/desc.html";
//-->
</script>
</html>
HTMLIFrameElement.marginHeight
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm//FrameOb/.marginHeight
1 039 Часть III. Справочник по JavaScript
Описание
Свойство marginHeight объекта HTMLFrameElement определяет высоту поля
фрейма (в пикселах).
Пример
Код в листинге 11.143 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство marginHeight.
Листинг 11.143. Пример создания объекта HTMLIFrameElement и
установки его свойства marginHeight
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj. marginHeight = 4;
//-->
</script>
</html>
HTMLIFrameElement.marginWidth
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm//FrameOb/.marginWidth
Описание
Свойство marginWidth объекта HTMLFrameElement определяет ширину поля
фрейма (в пикселах).
Пример
Код в листинге 11.144 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство marginWidth.
Листинг 11.144. Пример создания объекта HTMLIFrameElement и
установки его свойства marginWidth
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.width = 33;
//-->
</script>
</html>
HTMLIFrameElement.name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 1 040
Синтаксис
htmllFrameObj.name
Описание
Свойство name объекта HTMLFrameElement определяет имя фрейма (объект
атрибута target).
Пример
Код в листинге 11.145 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство name.
Листинг 11.145. Пример создания объекта HTMLIFrameElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.name = "myframe";
//-->
</script>
</html>
HTMLIFrameElement.scrolling
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllFrameObj.scvoW'mg
Описание
Свойство scrolling объекта HTMLFrameElement указывает, должен ли фрейм
содержать полосы прокрутки.
Пример
Код в листинге 11.146 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство scrolling.
Листинг 11.146. Пример создания объекта HTMLIFrameElement и
установки его свойства scrolling
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.scrolling = false;
//-->
</script>
</html>
HTMLIFrameElementsrc
1 041 Часть III. Справочник по JavaScript
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
html I Frame Obj.s re
Описание
Свойство sre объекта HTMLFrameElement содержит URI, указывающий на
начальное содержимое фрейма.
Пример
Код в листинге 11.147 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство src.
Листинг 11.147. Пример создания объекта HTMLIFrameElement и
установки его свойства src
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.src = "http://foo.bar/";
//-->
</script>
</html>
HTMLIFrameElement.width
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllFrameObj. width
Описание
Свойство width объекта HTMLFrameElement определяет ширину фрейма.
Пример
Код в листинге 11.148 с помощью объекта HTMLBodyElement создает объект
HTMLIFrameElement и устанавливает его свойство width.
Листинг 11.148. Пример создания объекта HTMLIFrameElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
var iFrameObj = bodyObj.createElement("iframe");
iFrameObj.width = 100;
//-->
</script>
</html>
Глава 11. DOM HTML 1 042
HTMLImageElement
Синтаксис
Основной объект DOM HTML.
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Описание
Объект HTMLImageElement предназначен для представления изображения HTML.
Он наследует все методы и свойства объекта HTMLElement. Свойства объекта
HTMLImageElement перечислены в табл. 11.17.
Таблица 11.17. Свойства объекта HTMLImageElement
Элемент
align
alt
border
height
hspace
isMap
longDesc
lowSrc
name
src
useMap
vspace
width
Описание
Устанавливает тип выравнивания изображения относительно
окружающего его текста.
Альтернативный текст, отображаемый вместо изображения.
Ширина рамки вокруг изображения.
Высота изображения.
Ширина поля справа и слева от изображения.
Указывает, использует ли данное изображение клиентскую карту
изображений.
URI, с использованием которого можно найти развернутое описание
данного изображения.
URI, по которому обеспечивается доступ к альтернативному
изображению с низким разрешением.
Имя данного изображения.
URI, обеспечивающий доступ к изображению для данного элемента.
Содержит имя карты изображения, которая используется для данного
элемента.
Высота поля сверху и снизу от изображения.
Ширина изображения.
Пример
Код в листинге 11.149 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство lowSrc.
Листинг 11.149. Пример создания объекта HTMLImageElement и
установки его свойства lowSrc
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.lowSrc = "http://foo.bar/images/lowfi.jpg";
//-->
</script>
</html>
1 043 Часть III. Справочник по JavaScript
HTMLImageElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. align
Описание
Свойство align объекта HTMLImageElement устанавливает вертикальное и
горизонтальное выравнивание объекта относительно окружающего его текста.
Пример
Код в листинге 11.150 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство align.
Листинг 11.150. Пример создания объекта HTMLImageElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElementfimage);
imageObj.align = "top";
//-->
</script>
</html>
HTMLImageElement.alt
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. alt
Описание
Свойство alt объекта HTMLImageElement содержит альтернативный текст,
предназначенный для пользовательских агентов, которые не могут выводить
нормальное содержимое данного элемента.
Пример
Код в листинге 11.151 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство alt.
Листинг 11.151. Пример создания объекта HTMLImageElement и
установки его свойства alt
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.CreateElmentfimage);
imageObj.alt = "Браузер не поддерживает изображения?";
Глава 11. DOM HTML 1 044
</script>
</html>
HTMLImageElement. border
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. border
Описание
Свойство border объекта HTMLImageElement определяет ширину рамки вокруг
изображения.
Пример
Код в листинге 11.152 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство border.
Листинг 11.152. Пример создания объекта HTMLImageElement и
установки его свойства border
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElementfimage);
imageObj.border = 1;
//-->
</script>
</html>
HTMLImageElement.height
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj.height
Описание
Свойство height объекта HTMLImageElement определяет высоту изображения.
Пример
Код в листинге 11.153 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливается его свойство height.
Листинг 11.153. Пример создания объекта HTMLImageElement и
установки его свойства height
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.height = 12;
1 045 Часть III. Справочник по JavaScript
</script>
</html>
HTMLImageElement.hspace
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. hspace
Описание
Свойство hspace объекта HTMLImageElement определяет ширину поля слева и
справа от изображения.
Пример
Код в листинге 11.154 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство hspace.
Листинг 11.154. Пример создания объекта HTMLImageElement и
установки его свойства hspace
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.hspace = 12;
//-->
</script>
HTMLImageElement.isMap
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. isMap
Описание
Свойство isMap объекта HTMLImageElement указывает на то, следует ли
использовать серверную карту изображения.
Пример
Код в листинге 11.155 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство isMap.
Листинг 11.155. Пример создания объекта HTMLImageElement и
установки его свойства isMap
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
Глава 11. DOM HTML 1 046
imageObj.isMap = false;
//-->
</script>
</html>
HTMLImageElement.longDesc
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. longDesc
Описание
Свойство longDesc объекта HTMLImageElement содержит URI, по которому можно
получить доступ к развернутому описанию изображения или фрейма.
Пример
Код в листинге 11.156 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство longDesc.
Листинг 11.156. Пример создания объекта HTMLImageElement и
установки его свойства longDesc
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.longDesc = "Это развернутое описание изображения.";
//-->
</script>
</html>
HTMLImageElement.lowSrc
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. lowSrc
Описание
Свойство lowSrc объекта HTMLImageElement содержит URI, по которому
находится изображение с низким разрешением.
Пример
Код в листинге 11.157 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство lowSrc.
Листинг 11.157. Пример создания объекта HTMLImageElement и
установки его свойства lowSrc
<html>
<script language="JavaScript" type="text/javascript">
1 047 Часть III. Справочник по JavaScript
var imageObj = bodyObj.createElement("img");
imageObj.lowSrc = "http://foo.bar/images/lowfi.jpg"
//-->
</script>
</html>
HTMLImageElement.src
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. src
Описание
Свойство src объекта HTMLImageElement содержит URI, по которому находится
данное изображение.
Пример
Код в листинге 11.158 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство src.
Листинг 11.158. Пример создания объекта HTMLImageElement и
установки его свойства src
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.src = "http://foo.bar/images/foo.jpg";
//-->
</script>
</html>
HTMLImageElement.useMap
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. useMap
Описание
Свойство useMap объекта HTMLImageElement содержит имя клиентской карты
изображения.
Пример
Код в листинге 11.159 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство src.
Глава 11. DOM HTML 1 048
Листинг 11.159. Пример создания объекта HTMLImageElement и
установки его свойства src
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.useMap = "myClientMap";
//-->
</script>
</html>
HTMLImageElement. vspace
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. vspace
Описание
Свойство vspace объекта HTMLImageElement определяет высоту поля над и под
изображением.
Пример
Код в листинге 11.160 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство vspace.
Листинг 11.160. Пример создания объекта HTMLImageElement и
установки его свойства vspace
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.vspace = 2;
//-->
</script>
</html>
HTM LI mage Element, width
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllmageObj. width
Описание
Свойство width объекта HTMLImageElement определяет ширину изображения.
1 049 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.161 с помощью объекта HTMLBodyElement создает объект
HTMLImageElement и устанавливает его свойство width.
Листинг 11.161. Пример создания объекта HTMLImageElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
var imageObj = bodyObj.createElement("img");
imageObj.width = 23;
//-->
</script>
</html>
HTMLInputElement
Синтаксис
Основной объект DOM HTML.
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Описание
Объект HTMLInputElement представляет собой элемент управления формы,
который используется для ввода текста.
Примечание
В зависимости от среды, в которой просматривается Web-страница, свойство value
для окна выгрузки файла может быть доступно только для чтения. Для поля ввода
пароля возвращаемое значение может маскироваться с целью предотвращения
несанкционированного использования пароля.
Объект HTMLInputElement наследует все методы и свойства объекта
HTMLElement.
Свойства и методы объекта перечислены в табл. 11.18.
Таблица 11.18. Свойства и методы объекта HTMLInputElement
Тип
Свойство
Элемент
accept
accessKey
align
alt
checked
Описание
Список типов содержимого, которое сервер будет
обрабатывать корректно.
Односимвольный ключ доступа, который позволяет
управлять данным элементом ввода.
Устанавливает тип выравнивания объекта
относительно окружающего его текста.
Альтернативный текст, который будет выводиться
клиентам, не поддерживающим отображение
элементов ввода.
Указывает, установлен ли данный элемент ввода.
Глава 11. DOM HTML 1050
Метод
defaultChecked
defaultValue
disabled
form
maxLength
name
readonly
size
src
tablndex
type
useMap
value
blur()
click()
focus()
selectQ
Указывает, установлен ли по умолчанию данный
элемент ввода.
Значение данного элемента ввода, устанавливаемое
по умолчанию.
Указывает, заблокирован ли данный элемент ввода.
Форма, в которой находится данный элемент ввода.
Указывает максимальное количество символов,
которые могут содержаться в данном элементе ввода.
Имя данного элемента ввода.
Указывает, доступно ли содержимое данного
элемента только для чтения.
Указывает количество символов, которые будут
отображаться одновременно в данном элементе
ввода.
Для типа image это свойство содержит URI файла
изображения.
Номер, который указывает порядок обхода по
клавише табуляции для данного элемента ввода.
Тип данного элемента ввода, т.е. radio, text и т.д.
Содержит имя клиентской карты изображения.
Значение данного элемента ввода.
Снимает фокус с данного элемента ввода.
Имитирует щелчок кнопкой мыши на данном элементе
ввода.
Переносит фокус на данный элемент ввода.
Выделяет содержимое данного элемента ввода.
Пример
Код в листинге 11.162 реализует пример создания объекта HTMLInputElement с
помощью объекта HTMLFormElement.
Листинг 11.162. Пример создания объекта HTMLInputElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
//-->
</script>
</html>
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
HTMLInputElement.accept
Синтаксис
htmllnputObj.accept
Описание
Свойство accept объекта HTMLInputElement определяет список разделенных
запятыми типов содержимого, которые будут корректно обрабатываться сервером.
1 051 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.163 реализует пример использования свойства accept объекта
HTMLInputElement.
Листинг 11.163. Пример установки свойства accept
<html>
<script language="JavaScript" type="text/javascript">
<!--
inputObj.accept = "text/html";
//-->
</script>
</html>
HTMLInputElement.accessKey
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.accessKey
Описание
Свойство accessKey объекта HTMLInputElement определяет односимвольный ключ
доступа к данному элементу управления формы.
Пример
Код в листинге 11.164 с помощью объекта HTMLForm Element создает объект
HTMLInputElement и устанавливает его свойство accessKey.
Листинг 11.164. Пример создания объекта HTMLInputElement и
установки его свойства accessKey
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.accessKey = "A";
//-->
</html>
HTMLInputElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj. align
Описание
Свойство align объекта HTMLInputElement устанавливает вертикальное и
горизонтальное выравнивание объекта относительно окружающего его текста.
Глава 11. DOM HTML 1052
Пример
Код в листинге 11.165 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство align.
Листинг 11.165. Пример создания объекта HTMLInputElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.align = "left";
//-->
</script>
</html>
HTMLInputElement.alt
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.aW
Описание
Свойство alt объекта HTMLInputElement содержит альтернативный текст,
предназначенный для пользовательских агентов, которые не поддерживают обычное
содержимое данного элемента ввода.
Пример
Код в листинге 11.166 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство alt.
Листинг 11.166. Пример создания объекта HTMLInputElement и
установки его свойства alt
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.alt = "Элемент ввода находится здесь!";
//-->
</html>
HTMLInputElement.blur()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.b\urQ
1 053 Часть III. Справочник по JavaScript
Описание
Метод blur() объекта HTMLInputElement снимает фокус с данного элемента ввода.
Пример
Код в листинге 11.167 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и вызывает его метод blur().
Листинг 11.167. Пример создания объекта HTMLInputElement и
вызова его метода blur()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.blur();
//-->
</script>
</html>
HTMLInputElement.checked
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.cbecked
Описание
Свойство checked объекта HTMLInputElement следует использовать тогда, когда
атрибут type элемента ввода имеет значение Radio или Checkbox. В этом случае оно
определяет состояние элемента управления формы в агенте пользователя. При
изменении значения данного свойства изменяется состояние элемента, но не
изменяется значение HTML-атрибута value элемента.
Пример
Код в листинге 11.168 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство checked.
Листинг 11.168. Пример создания объекта HTMLInputElement и
установки его свойства checked
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.Type = "checkbox";
input.checked = false;
//-->
</script>
</html>
HTMLInputElement.clickO
Глава 11. DOM HTML 1 054
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj. click()
Описание
Метод click() объекта HTMLInputElement имитирует щелчок кнопкой мыши.
Используется для элементов INPUT, атрибут type которых содержит одно из
значений: "Button", "Checkbox", "Radio", "Reset" и "Submit".
Пример
Код в листинге 11.169 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и вызывает его метод click().
Листинг 11.169. Пример создания объекта HTMLInputElement и
вызова его метода click()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "checkbox";
inputObj.click();
//-->
</html>
HTMLInputElement.defaultChecked
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm//npi/fOfo/.defaultChecked
Описание
Свойство defaultChecked объекта HTMLInputElement полезно, когда атрибут type
элемента ввода имеет значение "Radio" или "Checkbox". В этом случае оно
определяет состояние элемента управления формы. Значение этого свойства не
изменяется при изменении состояния соответствующего элемента управления,
однако, при изменении значения данного свойства элемент управления формы
устанавливается в исходное состояние.
Пример
Код в листинге 11.170 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство defaultChecked.
Листинг 11.170. Пример создания объекта HTMLInputElement и
установки его свойства defaultChecked.
<html>
<script language="JavaScript" type="text/javascript">
1 055 Часть III. Справочник по JavaScript
var inputObj = formObj.createElement("input");
inputObj.type = "checkbox";
inputObj.defaultChecked = true;
//-->
</html>
HTMLInputElement.defaultValue
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.defaultValue
Описание
Свойство defaultValue объекта HTMLInputElement следует использовать, если
атрибут type элемента ввода имеет значение "Text", "File" или "Password". Значение
этого свойства не изменяется при модификации значения соответствующего
элемента управления, однако, при изменении значения данного свойства
содержимое элемента управления формы будет модифицировано.
Пример
Код в листинге 11.171 с помощью объекта HTMLForm Element создает объект
HTMLInputElement и устанавливает его свойство defaultValue.
Листинг 11.171. Пример создания объекта HTMLInputElement и
установки его свойства defaultValue
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
input.type = "Password";
input.defaultValue ="";
//-->
</script>
</html>
HTMLInputElement.disabled
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm//npufOb/.disabled
Описание
Свойство disabled объекта HTMLInputElement используется для блокировки
данного экземпляра элемента ввода.
Пример
Код в листинге 11.172 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство disabled.
Глава 11. DOM HTML 1056
Листинг 11.172. Пример создания объекта HTMLInputElement и
установки его свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.disabled = true;
//-->
</html>
HTMLInputElement.focus()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.focusQ
Описание
Метод focus() объекта HTMLInputElement перемещает фокус на данный элемент
ввода.
Пример
Код в листинге 11.173 с помощью объекта HTMLFormElement создает объект
HTMLInputElement, для которого вызывается метод focus().
Листинг 11.173. Пример создания объекта HTMLInputElement и
вызова его метода focus()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.focus();
//-->
</html>
HTMLInputElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnput Ob]. Form
Описание
Свойство Form объекта HTMLInputElement возвращает элемент FORM, в котором
содержится данный элемент ввода. Если элемент ввода находится не в форме,
возвращается Null.
1 057 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.174 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и считывает его свойство Form.
Листинг 11.174. Пример создания объекта HTMLInputElement и
считывания его свойства Form
<html>
<script language="JavaScript" type="text/javascript">
<!--
if(inputObj. form, name == "emailForm")
processEmailForm(inputObj.form);
//-->
</html>
HTMLInputElement.maxLength
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj. maxLength
Описание
Свойство maxLength объекта HTMLInputElement содержит максимальное
количество символов для текстовых полей, определяемое в случае, если значение
атрибута type элемента равно "Text" или "Password".
Пример
Код в листинге 11.175 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство maxLength.
Листинг 11.175. Пример создания объекта HTMLInputElement и
установки его свойства maxLength
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "text";
inputObj.maxLength = 25;
//-->
</html>
HTMLInputElement.name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj. name
Глава 11. DOM HTML 1058
Описание
Свойство name объекта HTMLInputElement содержит имя элемента управления
формы или объекта, пересылаемое при передаче формы.
Пример
Код в листинге 11.176 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство name.
Листинг 11.176. Пример создания объекта HTMLInputElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.name = "address";
//-->
</html>
HTMLInputElement. readonly
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj. read On ly
Описание
Свойство readOnly объекта HTMLInputElement указывает, что данный элемент
управления доступен только для чтения. Допустимо только для значений атрибута
type равных "Text" или "Password".
Пример
Код в листинге 11.177 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство readOnly.
Листинг 11.177. Пример создания объекта HTMLInputElement и
установки его свойства readonly
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "text";
inputObj.value = "Поле только для чтения";
inputObj.readOnly = true;
//-->
</html>
HTMLInputElement.select()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 059 Часть III. Справочник по JavaScript
Синтаксис
htmllnputObj.se\ect()
Описание
Метод select() объекта HTMLInputElement выделяет содержимое текстовой
области. Используется совместно с элементами INPUT со значениями атрибута type
равными "Text", "File" или "Password".
Пример
Код в листинге 11.178 с помощью объекта HTMLFormElement создает объект
HTMLlnputElement и вызывает соответствующий метод select().
Листинг 11.178. Пример создания объекта HTMLlnputElement и
вызова соответствующего метода select()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "text";
inputObj.value = "foo bar";
inputObj.select();
//-->
</html>
HTMLInputElement.size
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.s\ze
Описание
Свойство size объекта HTMLlnputElement определяет размеры. Точное значение
этого свойства зависит от типа элемента ввода.
Пример
Код в листинге 11.179 с помощью объекта HTMLFormElement создает объект
HTMLlnputElement и устанавливает его свойство size.
Листинг 11.179. Пример создания объекта HTMLlnputElement и
установки его свойства size
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "text";
inputObj.size = 25;
//-->
</html>
Глава 11. DOM HTML 1060
HTMLInputElement.src
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj. src
Описание
Свойство src объекта HTMLInputElement может применяться только в том случае,
если значение атрибута type равно "Image". В этом случае оно содержит адрес
изображения, которое используется для кнопки отправки данных формы.
Пример
Код в листинге 11.180 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство src.
Листинг 11.180. Пример создания объекта HTMLInputElement и
установки его свойства src
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "image";
inputObj.src = "http://foo.bar/images/foo.jpg";
//-->
</html>
HTMLInputElement. tablndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObjiab\ndex
Описание
Свойство tablndex объекта HTMLInputElement содержит значение, которое
соответствует порядку обхода по клавише табуляции для данного элемента.
Пример
Код в листинге 11.181 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство tablndex.
Листинг 11.181. Пример создания объекта HTMLInputElement и
установки его свойства tablndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "text";
inputObj.tablndex = 1;
1 061 Часть III. Справочник по JavaScript
</html>
HTMLInputElement.type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj.type
Описание
Свойство type объекта HTMLInputElement определяет тип данного элемента
управления.
Пример
Код в листинге 11.182 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство type.
Листинг 11.182. Пример создания объекта HTMLInputElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "text";
//-->
</html>
HTMLInputElement. useMap
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnput Obj. useMap
Описание
Свойство useMap объекта HTMLInputElement содержит имя используемой
клиентской карты изображения.
Пример
Код в листинге 11.183 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство useMap.
Листинг 11.183. Пример создания объекта HTMLInputElement и
установки его свойства useMap
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "image";
Глава 11. DOM HTML 1 062
inputObj.useMap = "mymap";
//-->
</html>
HTMLInputElement. value
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllnputObj. value
Описание
Свойство value объекта HTMLlnputElement может использоваться только в том
случае, если атрибут type содержит одно из значений: "Text", "File" или "Password".
В этом случае данное свойство представляет собой содержимое соответствующего
элемента управления формы. Изменение значения свойства value модифицирует
содержимое элемента управления, но не изменяет значение HTML-атрибута
элемента. Для значений атрибута type "Button", "Hidden", "Submit", "Reset",
"Image", "Checkbox" и "Radio" это свойство соответствует HTML-атрибуту value
элемента.
Пример
Код в листинге 11.184 с помощью объекта HTMLFormElement создает объект
HTMLInputElement и устанавливает его свойство value.
Листинг 11.184. Пример создания объекта HTMLInputElement и
установки его свойства value
<html>
<script language="JavaScript" type="text/javascript">
<!--
var inputObj = formObj.createElement("input");
inputObj.type = "reset";
inputObj.value = "Очистить значения полей формы";
//-->
</html>
HTMLIslndexElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLIslndexElement используется как однострочный элемент ввода
текста. Он наследует все методы и свойства объекта HTMLElement. Свойства
объекта HTMLIslndexElement перечислены в табл. 11.19.
1 063 Часть III. Справочник по JavaScript
Таблица 11.19. Свойства объекта HTMLIslndexElement.
Элемент
form
prompt
Описание
Возвращает форму, в которой содержится данный элемент.
Подсказка для данного элемента.
Пример
Код в листинге 11.185 реализует пример создания объекта HTMHsIndexElement с
помощью объекта HTMLDocument.
Листинг 11.185. Пример создания объекта HTMHsIndexElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("IV^ HTML-документ");
htmlDoc.open();
var islndexElement = htmlDoc.createElement("isindex");
//-->
</html>
HTMLIslndexElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllslndexObj.form
Описание
Свойство form объекта HTMLIslndexElement возвращает элемент FORM, в
котором содержится данный элемент управления. Если элемент управления
находится не в контексте формы, возвращается Null.
Пример
Код в листинге 11.186 с помощью объекта HTMLFormElement создает объект
HTMLIslndexElement и считывает значение его свойства form.
Листинг 11.186. Пример создания объекта HTMLInputElement и
считывания значения его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHtmlDocument("IV^ HTML-документ");
htmlDoc.open();
var islndexElement = htmlDoc.createElement("islndex");
if(islndexElement.form == "emailForm")
processlslndex(islndexElement);
</script>
Глава 11. DOM HTML 1 064
var islndexElement = htmlDoc.createElement("islndex");
</html>
HTMLIslndexElement.prompt
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmllslndexObj. prompt
Описание
Свойство prompt объекта HTMLIsIndexElement содержит подсказку для данного
элемента.
Пример
Код в листинге 11.187 с помощью объекта HTMLFormElement создает объект
HTMLIsIndexElement и устанавливает его свойство prompt.
Листинг 11.187. Пример создания объекта HTMLInputElement и
установки его свойства prompt
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var islndexElement = htmlDoc.createElement("isindex");
islndexElement.prompt = "подсказка";
}
</script>
</html>
HTMLLabelElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLLabelElement предназначен для представления текстовой метки. Он
наследует все методы и свойства объекта HTMLElement. Свойства объекта
HTMLLabelElement перечислены в табл. 11.20.
Таблица 11.20. Свойства объекта HTMLLabelElement
Элемент
form
accessKey
htmlFor
Описание
Форма, в которой находится данная метка.
Односимвольный ключ доступа к метке.
Связывает данную метку с другим элементом с заданным
идентификатором.
1 065 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.188 реализует пример создания объекта HTMLLabelElement с
помощью объекта HTMLFormElement.
Листинг 11.188. Пример создания объекта HTMLLabelElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var labelObj = formObj.createElement("label");
//-->
</html>
HTMLLabelElement.accessKey
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLabelObj. access Key
Описание
Свойство accessKey объекта HTMLLabelElement содержит один символ, который
используется для получения доступа к данному элементу управления формы.
Пример
Код в листинге 11.189 с помощью объекта HTMLBodyElement создает объект
HTMLLabelElement и устанавливает его свойство accessKey.
Листинг 11.189. Пример создания объекта HTMLLabelElement и
установки его свойства accessKey
<html>
<script language="JavaScript" type="text/javascript">
<!--
var labelObj = formObj.createElement("label");
labelObj.accessKey = "L";
//-->
</html>
HTMLLabelElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLabelObj. form
Описание
Свойство form объекта HTMLLabelElement возвращает элемент FORM, в котором
находится данный элемент управления.
Глава 11. DOM HTML 1 066
Пример
Код в листинге 11.190 с помощью объекта HTMLBodyElement создает объект
HTMLLabelElement и считывает значение его свойства form.
Листинг 11.190. Пример создания объекта HTMLLabelElement и
считывания значения его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
var labelObj = formObj.createElement("label");
if(labelObj. form. Name == "emailForm")
processEmailForm(labelObj.form);
//-->
</html>
HTMLLabelElement.htmlFor
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
/rtm/Labe/Ob/.htmlFor
Описание
Свойство htmlFor объекта HTMLLabelElement связывает данную метку с другим
элементом управления с заданным атрибутом id.
Пример
Код в листинге 11.191 с помощью объекта HTMLBodyElement создает объект
HTMLLabelElement и считывает значение его свойства htmlFor.
Листинг 11.191. Пример создания объекта HTMLLabelElement и
считывания значения его свойства htmlFor
<html>
<script language="JavaScript" type="text/javascript">
<!--
var labelObj = formObj.createElement("label");
var inputObj = formObj.createElement("input");
inputObj.name = "address";
labelObj.htmlFor = "address";
//-->
</html>
HTMLLegendElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
1 067 Часть III. Справочник по JavaScript
Описание
Объект HTMLLegendElement предназначен для представления заголовка группы
FIELDSET. Он наследует все свойства и методы объекта HTMLElement. Свойства
объекта HTMLLegendElement перечислены в табл. 11.21.
Таблица 11.21. Свойства объекта HTMLLegendElement
Элемент
accessKey
align
form
Описание
Олдносимвольный ключ доступа к легенде.
Выравнивание текста легенды относительно соответствующего
элемента FIELDSET.
Форма, в которой находится данная легенда.
Пример
Код в листинге 11.192 реализует пример создания объекта HTMLLegendElement с
помощью объекта HTMLFormElement.
Листинг 11.192. Пример создания объекта HTMLLegendElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var legendObj = formObj.createElement("legend");
//-->
</html>
HTMLLegendElement.accessKey
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm//_egendOfo/.accessKey
Описание
Свойство accessKey объекта HTMLLegendElement содержит один символ, который
используется для получения доступа к данному элементу управления формы.
Пример
В листинге 11.193 с помощью объекта HTMLBodyElement создается объект
HTMLLegendElement, а также устанавливается его свойство accessKey.
Листинг 11.193. Пример создания объекта HTMLLegendElement и
установки его свойства accessKey
<html>
<script language="JavaScript" type="text/javascript">
<!--
var legendObj = formObj.createElement("legend");
legendObj.accessKey = "L";
//-->
</html>
Глава 11. DOM HTML 1068
HTMLLegendElement.align
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLegendObj. align
Описание
Свойство align объекта HTM LLegend Element определяет тип выравнивания текста
легенды относительно элемента FIELDSET.
Пример
Код в листинге 11.194 с помощью объекта HTMLBodyElement создает объект
HTMLLegendElement и устанавливает его свойство align.
Листинг 11.194. Пример создания объекта HTMLLegendElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var legendObj = formObj.createElement("legend");
legendObj. align = "top";
//-->
</html>
HTMLLegendElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLegendObj. form
Описание
Свойство form объекта HTMLLegendElement возвращает элемент FORM, в
котором находится данный элемент управления. Если элемент управления находится
не в контексте формы, возвращается Null.
Пример
Код в листинге 11.195 с помощью объекта HTMLBodyElement создает объект
HTMLLegendElement и считывает его свойство form.
Листинг 11.195. Пример создания объекта HTMLLegendElement и
считывания значения его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
var legendObj = formObj.createElement("legend");
if(legendObj.form.Name == "emailForm")
processEmailForm(legendObj.form);
1 069 Часть III. Справочник по JavaScript
</html>
HTMLLIEIement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLLIEIement предназначен для представления списка элементов. Он
наследует все свойства и методы объекта HTMLEIement. Свойства объекта
HTMLLIEIement перечислены в табл. 11.22.
Таблица 11.22. Свойства объекта HTMLLIEIement
Элемент
type
value
Описание
Стиль списка элементов.
Содержимое списка элементов.
Пример
Код в листинге 11.196 представляет пример создания объекта HTMLLIEIement с
помощью элемента HTMLOLElement.
Листинг 11.196. Пример создания объекта HTMLLIEIement
<html>
<script language="JavaScript" type="text/javascript">
<!--
varolObj = bodyObj.CreateElment("ol");
var HObj = olObj.createElement("li");
liObj.type = "item";
//-->
</script>
</html>
HTMLLIEIement.type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLIObj.type
Описание
Свойство type объекта HTMLLIEIement содержит описание стиля списка
элементов.
Пример
Код в листинге 11.197 с помощью объекта HTMLOLElement создает объект
HTMLLIEIement и устанавливает его свойство type.
Глава 11. DOM HTML 1070
Листинг 11.197. Пример создания объекта HTMLLIElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
varolObj = bodyObj.CreateElement("ol");
var liObj = olObj.createElement("li");
liObj.type = "item";
//-->
</script>
</html>
HTMLLIEIement.value
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLIObj.va\ue
Описание
Свойство value объекта HTMLLIEIement при использовании в составе дескриптора
OL сбрасывает порядковый номер.
Пример
Код в листинге 11.198 с помощью объекта HTMLOLElement создает объект
HTMLLIEIement и устанавливает его свойство value.
Листинг 11.198. Пример создания объекта HTMLLIEIement и
установки его свойства value
<html>
<script language="JavaScript" type="text/javascript">
<!--
var olObj = bodyObj.CreateElment("ol");
var liObj = olObj.createElement("li");
liObj.value = "текст списка";
//-->
</script>
</html>
HTMLLinkElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Элемент LINK представляет собой ссылку на внешний ресурс и определяет связь
документа с этим ресурсом (или наоборот). Свойства объекта HTMLLinkElement
перечислены в табл. 11.23.
1 071 Часть III. Справочник по JavaScript
Таблица 11.23. Свойства объекта HTMLLinkElement
Элемент
charset
disabled
href
hreflang
media
rel
rev
target
type
Описание
Устанавливает тип кодировки данного элемента.
Указывает, заблокирована ли данная ссылка.
URI ресурса, на который ссылается данная ссылка.
Код языка ресурса, на который ссылается данная ссылка.
Тип содержимого ресурса, на который ссылается данная ссылка.
Тип непосредственной ссылки.
Тип обратной ссылки.
Фрейм, в котором должна производится визуализация ресурса.
Желаемый тип содержимого.
Пример
Код в листинге 11.199 с помощью объекта HTMLDocument создает объект
HTMLLinkElement и устанавливает его свойство href.
Листинг 11.199. Пример создания объекта HTMLLinkElement и
установки его свойства href
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("IV^ HTML-документ");
htmlDoc.openO;
var linkElement = htmlDoc.createElementflink");
linkElement.href = "http://foo.bar/";
}
</html>
HTMLLinkElement.charset
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm//_/V7/cOb/.charset
Описание
Свойство charset объекта HTMLLinkElement определяют кодировку ресурса, на
который указывает данная ссылка.
Пример
Код в листинге 11.200 реализует пример создания объекта HTMLLinkElement и
вывода на экран его свойства charset.
Листинг 11.200. Вывод на экран значения свойства charset объекта
HTMLLinkElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("IV^ HTML-документ");
htmlDocopenQ;
Глава 11. DOM HTML 1 072
var linkElement = htmlDoc.createElement("link");
htmlDoc.Write(linkElement.charSet);
}
</html>
HTMLLinkElement.disabled
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/L/MOb/.disabled
Описание
Свойство disabled объекта HTMLLinkElement используется для
блокировки/разблокировки ссылки.
Пример
Код в листинге 11.201 с помощью объекта HTMLDocument создает объект
HTMLLinkElement, а значение его свойства disabled устанавливается равным true.
Листинг 11.201. Пример создания объекта HTMLLinkElement и
установки его свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var linkElement = htmlDoc.createElementflink");
linkElement.disabled = true;
}
</html>
HTMLLinkElement.href
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
MmlLinkObj.href
Описание
Свойство href объекта HTMLLinkElement содержит URI ресурса, на который
указывает данная ссылка.
Пример
Код в листинге 11.202 с помощью объекта HTMLDocument создает объект
HTMLLinkElement и устанавливает его свойство href.
Листинг 11.202. Пример создания объекта HTMLLinkElement и
установки его свойства href
<html>
1 073 Часть III. Справочник по JavaScript
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var linkElement = htmlDoc.createElement("link");
linkElement.href = "http://foo.bar/";
}
</html>
HTMLLinkElement.hreflang
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLinkObj. hreflang
Описание
Свойство hreflang объекта HTMLLinkElement содержит код языка ресурса, на
который ссылается данная ссылка.
Пример
Код в листинге 11.203 с помощью объекта HTMLDocument создает объект
HTMLLinkElement и устанавливает его свойства href и hreflang.
Листинг 11.203. Пример создания объекта HTMLLinkElement и
установки его свойств href и hreflang
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var linkElement = htmlDoc.createElement("link");
linkElement.href = "http://foo.bar/";
linkElement.hreflang = "us/english";
}
</script>
</html>
HTMLLinkElement.media
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLinkObj. media
Описание
Свойство media объекта HTMLLinkElement предназначено для работы с одним или
несколькими типами содержимого.
Глава 11. DOM HTML 1 074
Пример
Код в листинге 11.204 с помощью объекта HTMLDocument создает объект
HTMLLinkElement и устанавливает его свойство media.
Листинг 11.204. Пример создания объекта HTMLLinkElement и
установки его свойства media
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
var linkElement = htmlDoc.createElement("link");
linkElement.media = "image/jpg";
</script>
</html>
HTMLLinkElement.rel
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLink.re\
Описание
Свойство rel объекта HTMLLinkElement указывает тип непосредственной ссылки.
Пример
Код в листинге 11.205 реализует пример установки свойства rel объекта
HTMLLinkElement.
Листинг 11.205. Пример установки свойства rel
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var linkElement = htmlDoc.createElement("link");
linkElement.href = "http://foo.bar/";
linkElement.rel = "http://foo.bar/link.html";
}
</script>
</html>
HTMLLinkElement. rev
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLinkObj.rev
1 075 Часть III. Справочник по JavaScript
Описание
Свойство rev объекта HTMLLinkElement указывает тип обратной ссылки.
Пример
Код в листинге 11.206 реализует пример установки свойства rev объекта
HTMLLinkElement.
Листинг 11.206. Пример установки свойства rev
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mon HTML-документ");
htmlDoc.openO;
var linkElement = htmlDoc.createElement("link");
linkElement.rev = "http://foo.bar/links.htm";
</script>
</html>
HTMLLinkElement.target
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlLinkObj. ta rg et
Описание
Свойство target объекта HTMLLinkElement указывает имя фрейма, где будет
отображаться ресурс, на который ссылается данная ссылка.
Пример
Код в листинге 11.207 с помощью объекта HTMLDocument создает объект
HTMLLinkElement и устанавливает его свойство target.
Листинг 11.207. Пример создания объекта HTMLLinkElement и
установки его свойства target.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var linkElement = htmlDoc.createElement("link");
htmlDoc.write(linkElement.target);
</script>
</html>
HTMLLinkElement. type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 1 076
Синтаксис
htmlLinkObj.Xype
Описание
Свойство type объекта HTMLLinkElement указывает желаемый тип содержимого.
Пример
Код в листинге 11.208 с помощью объекта HTMLDocument создает объект
HTMLLinkElement и устанавливает его свойство type.
Листинг 11.208. Пример создания объекта HTMLLinkElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var linkElement = htmlDoc.createElement("link");
linkElement.type = "text/html";
//-->
</script>
</html>
HTMLMapElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLMapElement предназначен для представления HTML-элемента для
клиентской карты изображения. Он наследует все методы и свойства объекта
HTMLElement. Свойства объекта HTMLMapElement перечислены в табл. 11.24.
Таблица 11.24. Свойства объекта HTMLMapElement
Элемент
areas
name
Описание
Список областей данной карты изображения.
Имя данной карты изображения.
Код в листинге 11.209 реализует пример создания объекта HTMLMapElement с
помощью объекта HTMLBodyElement.
Листинг 11.209. Пример создания объекта HTMLMapElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
//-->
</html>
1 077 Часть III. Справочник по JavaScript
HTMLMapElement.areas
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlMapObj. areas
Описание
Свойство areas объекта HTMLMapElement - это список областей данной карты
изображения, хранящийся в коллекции HTMLCollection.
Пример
Код в листинге 11.210 с помощью объекта HTMLBodyElement создает объект
HTMLMapElement и считывает значение его свойства areas.
Листинг 11.210. Пример создания объекта HTMLMapElement и
считывания значения его свойства areas
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
var areaCollection = mapObj. areas;
//-->
</html>
HTMLMapElement.name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlMapObj. name
Описание
Свойство name объекта HTMLMapElement содержит имя данной карты
изображения (для использования совместно с UseMap).
Пример
Код в листинге 11.211 с помощью объекта HTMLBodyElement создает объект
HTMLMapElement и устанавливает его свойство name.
Листинг 11.211. Пример создания объекта HTMLMapElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
var mapObj = bodyObj.createElement("map");
mapObj.name = "mymap";
//-->
</html>
Глава 11. DOM HTML 1078
HTMLMenuElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLMenuElement предназначен для представления меню HTML. Он
имеет следующее свойство:
Элемент Описание
compact
Если значение свойства равно true, уменьшает расстояние между
пунктами меню.
Пример
Код в листинге 11.212 реализует пример создания объекта HTMLMenuElement с
помощью объекта HTMLBodyElement.
Листинг 11.212. Пример создания объекта HTMLMenuElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var menuObj = bodyObj.createElement("menu");
//-->
</script>
</html>
HTMLMenuElement.compact
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Wm/MeraOfo/.compact
Описание
Свойство compact объекта HTMLMenuElement указывает на то, следует ли
уменьшать или нет расстояния между пунктами меню.
Пример
Код в листинге 11.213 с помощью объекта HTMLBodyElement создает объект
HTMLMenuElement и устанавливает его свойство compact.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var menuObj = bodyObj.CreateElement("menu");
menuObj.compact = true;
//-->
</script>
</html>
1 079 Часть III. Справочник по JavaScript
HTMLMetaElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLMetaElement предназначен для представления общих метаданных о
документе. Он наследует все свойства и методы объекта HTMLEIement. Свойства
объекта HTMLMetaElement перечислены в табл. 11.25.
Таблица 11.25. Свойства объекта HTMLMetaElement
Элемент
content
httpEquiv
name
scheme
Описание
Данные.
Имя заголовка НТТР-отклика.
Имя метаданных.
Форма содержимого.
Пример
Код в листинге 11.214 реализует пример создания объекта HTMLMetaElement с
помощью объекта HTMLDocument.
Листинг 11.214. Пример создания объекта HTMLMetaElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var linkElement = htmlDoc.createElement("meta");
}
//-->
</script>
</html>
HTMLMetaElement.content
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlMetaData Obj. content
Описание
Свойство content объекта HTMLMetaDataElement предназначено для
представления данных, содержащихся в метаданных.
Глава 11. DOM HTML 1080
Пример
Код в листинге 11.215 с помощью объекта HTMLDocument создает объект
HTMLMetaElement и устанавливает его свойство content.
Листинг 11.215. Пример создания объекта HTMLMetaElement и
установки его свойства content
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var metaElement = htmlDoc.createElement("meta");
metaElement.content = "text/html";
</script>
</html>
HTMLMetaElement.httpEquiv
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlMetaData Obj. http Eq u i v
Описание
Свойство httpEquiv объекта HTMLMetaDataElement содержит имя заголовка
HTTP-отклика.
Пример
Код в листинге 11.216 с помощью объекта HTMLDocument создает объект
HTMLMetaElement и устанавливает его свойство httpEquiv.
Листинг 11.216. Пример создания объекта HTMLMetaElement и
установки его свойства httpEquiv
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var metaElement = htmlDoc.createElement("meta");
metaElement.httpEquiv = "NO-CACHE";
</script>
</html>
HTMLMetaElement. name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 081 Часть III. Справочник по JavaScript
Синтаксис
htmlMetaDataObj. name
Описание
Свойство name объекта HTMLMetaDataElement определяет имя метаданных.
Пример
Код в листинге 11.217 с помощью объекта HTMLDocument создает объект
HTMLMetaElement и устанавливает его свойство name.
Листинг 11.217. Пример создания объекта HTMLMetaElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var metaElement = htmlDoc.createElement("meta");
metaElement.name = "keywords";
}
//-->
</script>
</html>
HTMLMetaElement.scheme
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlMetaDataObj. scheme
Описание
Свойство scheme объекта HTMLMetaDataElement определяет выбранную форму
содержимого.
Пример
Код в листинге 11.218 с помощью объекта HTMLDocument создает объект
HTMLMetaElement и устанавливает его свойство scheme.
Листинг 11.218. Пример создания объекта HTMLMetaElement и
установки его свойства scheme
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var metaElement = htmlDoc.createElement("meta");
metaElement.scheme = "foo";
Глава 11. DOM HTML 1082
</script>
</html>
HTMLModElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLModElement представляет собой уведомление об изменении части
документа. Он наследует все методы и свойства объекта HTMLElement. Свойства
объекта HTMLModElement приведены в табл. 11.26.
Таблица 11.26. Свойства объекта HTMLModElement
Элемент
cite
dateTime
Описание
URI документа, с помощью которого указана причина изменения.
Время происшедшего изменение.
Пример
Код в листинге 11.219 реализует пример создания объекта HTMLModElement с
помощью объекта HTMLBodyElement.
Листинг 11.219. Пример создания объекта HTMLModElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var modObj = bodyObj.CreateElement("mod");
//-->
</script>
</html>
HTMLModElement.cite
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlModObj. cite
Описание
Свойство cite объекта HTMLModElement содержит URI документа, описывающего
причину изменения.
Пример
Код в листинге 11.220 с помощью объекта HTMLBodyElement создает объект
HTMLModElement и устанавливает его свойство cite.
1 083 Часть III. Справочник по JavaScript
Листинг 11.220. Пример создания объекта HTMLModElement и
установки его свойства cite
<html>
<script language="JavaScript" type="text/javascript">
<!--
var modObj = bodyObj.createElement("mod");
modObj.cite = "http://foo.bar/reference.html";
//-->
</script>
</html>
HTMLModElement.dateTime
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlModObj. dateTime
Описание
Свойство dateTime объекта HTMLModElement хранит дату и время изменения.
Пример
Код в листинге 11.221 с помощью объекта HTMLBodyElement создает объект
HTMLModElement и устанавливает его свойство dateTime.
Листинг 11.221. Пример создания объекта HTMLModElement и
установки его свойства dateTime
<html>
<script language="JavaScript" type="text/javascript">
<!--
var modObj = bodyObj.CreateElement("mod");
modObj.cite = "http://foo.bar/reference.html";
modObj.dateTime = /14/2001";
//-->
</script>
</html>
HTMLObjectElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLObjectElement предназначен для представления HTML-объекта. Он
наследует все методы и свойства объекта HTMLElement. Свойства объекта
HTMLObjectElement перечислены в табл. 11.27.
Глава 11. DOM HTML 1 084
Таблица 11.27. Свойства объекта HTMLObjectElement
Элемент
align
archive
border
code
CodeBase
codeType
contentDocument
data
declare
form
height
hspace
name
standby
tablndex
type
useMap
vspace
width
Описание
Горизонтальное выравнивание данного объекта.
Архивный файл, соответствующий данному объекту.
Ширина рамки вокруг объекта.
Файл класса Applet для данного объекта.
Базовый URI для данных и кода.
Содержимое данных.
Документ, в котором находится данный объект.
URI, по которому можно получить доступ к данным данного
объекта.
Объявляет, но не конструирует объект.
Форма, в которой находится данный объект.
Высота данного объекта.
Поля слева и справа от объекта.
Имя данного объекта.
Сообщение, которое будет выводиться на экран во время
загрузки объекта.
Номер, указывающий для данного объекта порядок перехода по
клавише табуляции.
Тип содержимого данных.
Указывает, использовать ли клиентскую карту изображения.
Поля над и под объектом.
Ширина данного объекта.
Пример
Код в листинге 11.222 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и считывает его свойство form.
Листинг 11.222. Пример создания объекта HTMLObjectElement и
считывания значения его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
if(objectObj.Form.Name == "emailForm")
processEmailForm(objectObj.form);
//-->
</script>
</html>
HTMLObjectElement.align
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj. align
1 085 Часть III. Справочник по JavaScript
Описание
Свойство align объекта HTMLObjectElement устанавливает выравнивание объекта
по вертикали и горизонтали относительно окружающего его текста.
Пример
Код в листинге 11.223 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство align.
Листинг 11.223. Пример создания объекта HTMLObjectElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElement("object");
objectObj.align = "top";
//-->
</script>
</html>
HTMLObjectElement.archive
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj. a rch i ve
Описание
Свойство archive объекта HTMLObjectElement содержит список разделенных
запятыми имен архивных файлов.
Пример
Код в листинге 11.224 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство archive.
Листинг 11.224. Пример создания объекта HTMLObjectElement и
установки его свойства archive
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.archive = "foo.jar";
//-->
</script>
</html>
HTMLObjectElement. border
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 1086
Синтаксис
htmlObjectObj. border
Описание
Свойство border объекта HTMLObjectElement определяет ширину рамки вокруг
объекта.
Пример
Код в листинге 11.225 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство border.
Листинг 11.225. Пример создания объекта HTMLObjectElement и
установки его свойства border
<html>
<script language="JavaScript" type="text/javascript">
<!-
varobjectObj = bodyObj.createElementfobject");
objectObj. border = 0;
//-->
</script>
</html>
HTMLObjectElement.code
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj. code
Описание
Свойство code объекта HTMLObjectElement содержит имя файла класса аплета (см.
описание атрибута code объекта HTMLAppletElement).
Пример
Код в листинге 11.226 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство code.
Листинг 11.226. Пример создания объекта HTMLObjectElement и
установки его свойства code
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.code = "classld";
//-->
</script>
</html>
HTMLObjectElement.codeBase
1 087 Часть III. Справочник по JavaScript
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/Ofo/ecfOfo/.codeBase
Описание
Свойство CodeBase объекта HTMLObjectElement определяет базовый URI для
атрибутов classid. data и archive.
Пример
Код в листинге 11.227 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство CodeBase.
Листинг 11.227. Пример создания объекта HTMLObjectElement и
установки его свойства CodeBase
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.CodeBase = "http://foo.bar/scripts/";
//-->
</script>
</html>
HTMLObjectElement.codeType
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/Ofo/ecfOfo/.codeType
Описание
Свойство codeType объекта HTMLObjectElement определяет тип содержимого для
данных, загруженных с помощью атрибута classid.
Пример
В листинге 11.228 с помощью объекта HTMLBodyElement создается объект
HTMLObjectElement и устанавливается его свойство codeType.
Листинг 11.228. Пример создания объекта HTMLObjectElement и
установки его свойства codeType.
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.codeType = "x-application/flash";
//-->
</script>
</html>
Глава 11. DOM HTML 1088
HTMLObjectElement.contentDocument
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/OfoyecfOfc/.contentDocument
Описание
Свойство contentDocument объекта HTMLObjectElement - это документ, который
содержит данный объект, если такой документ существует, и Null - в противном
случае.
Пример
Код в листинге 11.229 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement, а также считывает его свойство contentDocument.
Листинг 11.229. Пример создания объекта HTMLObjectElement и
считывания его свойства contentDocument
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = objectObj. contentDocument;
//-->
</script>
</html>
HTMLObjectElement.data
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj.data
Описание
Свойство data объекта HTMLObjectElement содержит URI, по которому находятся
данные объекта.
Пример
Код в листинге 11.230 реализует пример создания объекта HTMLObjectElement с
помощью объекта HTMLBodyElement.
Листинг 11.230. Пример создания объекта HTMLObjectElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var objectObj = bodyObj.createElementfobject");
//-->
</script>
</html>
1 089 Часть III. Справочник по JavaScript
HTMLObjectElement.declare
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj. declare
Описание
Свойство declare объекта HTMLObjectElement применяется для объявления
данного объекта (с целью применения в будущем), но не выполняет
конструирование экземпляра объекта.
Пример
Код в листинге 11.231 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство declare.
Листинг 11.231. Пример создания объекта HTMLObjectElement и
установка его свойства declare
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.declare = true;
//-->
</script>
</html>
HTMLObjectElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj.form
Описание
Свойство form объекта HTMLObjectElement возвращает элемент FORM, в
котором находится данный элемент управления.
Пример
Код в листинге 11.232 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и считывает его свойство form.
Листинг 11.232. Пример создания объекта HTMLObjectElement и
считывание значения его свойства form.
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
if(objectObj.form, name == "emailForm")
processEmailForm(objectObj.form);
Глава 11. DOM HTML 1090
</script>
</html>
HTMLObjectElement.height
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/Ofo/ecfOfo/.height
Описание
Свойство height объекта HTMLObjectElement устанавливает высоту объекта.
Пример
Код в листинге 11.233 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство height.
Листинг 11.233. Пример создания объекта HTMLObjectElement и
установка его свойства height
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.height = 23;
//-->
</script>
</html>
HTMLObjectElement.hspace
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObject Obj. hspace
Описание
Свойство hspace объекта HTMLObjectElement устанавливает ширину поля слева и
справа от изображения, аплета или объекта.
Пример
Код в листинге 11.234 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство hspace.
Листинг 11.234. Пример создания объекта HTMLObjectElement и
установка его свойства hspace
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
1 091 Часть III. Справочник по JavaScript
objectObj.hspace = 1;
</script>
</html>
HTMLObjectElement.name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj.name
Описание
Свойство name объекта HTMLObjectElement возвращает имя элемента управления
формы или имя объекта, которое пересылается при передаче данных формы.
Пример
Код в листинге 11.235 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство name.
Листинг 11.235. Пример создания объекта HTMLObjectElement и
установка его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.name = "myobject";
//-->
</script>
</html>
HTMLObjectElement.standby
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj. standby
Описание
Свойство standby объекта HTMLObjectElement определяет сообщение, которое
будет отображаться на экране во время загрузки объекта.
Пример
Код в листинге 11.236 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство standby.
Листинг 11.236. Пример создания объекта HTMLObjectElement и
установки его свойства standby
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 1092
var objectObj = bodyObj.createElementfobject");
objectObj.standby = "Пожалуйста, подождите пока загрузится объект.";
//-->
</script>
</html>
HTMLObjectElement.tablndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/Ofo/ecfOfo/.tablndex
Описание
Свойство tablndex объекта HTMLObjectElement содержит индекс, который
соответствует положению данного элемента в порядке обхода по клавише
табуляции.
Пример
Код в листинге 11.237 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство tablndex.
Листинг 11.237. Пример создания объекта HTMLObjectElement и
установки его свойства tablndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
var objectObj = bodyObj.createElementfobject");
objectObj.tablndex = 3;
//-->
</script>
</html>
HTMLObjectElement.type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj Ауре
Описание
Свойство type объекта HTMLObjectElement определяет тип данных, загруженных с
помощью атрибута data.
Пример
Код в листинге 11.238 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство type.
1 093 Часть III. Справочник по JavaScript
Листинг 11.238. Пример создания объекта HTMLObjectElement и
установки его свойства type.
<html>
<script language="JavaScript" type="text/javascript">
<!--
var objectObj = bodyObj.createElement("object");
objectObj.type = "applicationType";
//-->
</script>
</html>
HTMLObjectElement.useMap
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObject Obj. useMap
Описание
Свойство useMap объекта HTMLObjectElement указывает, следует ли использовать
клиентскую карту изображения.
Пример
Код в листинге 11.239 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство useMap.
Листинг 11.239. Пример создания объекта HTMLObjectElement и
установки его свойства useMap
<html>
<script language="JavaScript" type="text/javascript">
<!--
var objectObj = bodyObj.createElementfobject");
objectObj.useMap = true;
//-->
</script>
</html>
HTMLObjectElement. vspace
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj. vspace
Описание
Свойство vspace объекта HTMLObjectElement устанавливает ширину поля слева и
справа от изображения, аплета или объекта.
Глава 11. DOM HTML 1 094
Пример
Код в листинге 11.240 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство vspace.
Листинг 11.240. Пример создания объекта HTMLObjectElement и
установка его свойства vspace
<html>
<script language="JavaScript" type="text/javascript">
<!--
varobjectObj = bodyObj.createElementfobject");
objectObj.vspace = 2;
//-->
</script>
</html>
HTMLObjectElement.width
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlObjectObj.wdtb
Описание
Свойство width объекта HTMLObjectElement устанавливает ширину объекта.
Пример
Код в листинге 11.241 с помощью объекта HTMLBodyElement создает объект
HTMLObjectElement и устанавливает его свойство width.
Листинг 11.241. Пример создания объекта HTMLObjectElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
var objectObj = bodyObj.createElementfobject");
objectObj.width = 20;
//-->
</script>
</html>
HTMLOListElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
1 095 Часть III. Справочник по JavaScript
Описание
Объект HTMLOListElement предназначен для представления упорядоченного
списка элементов. Он наследует все методы и свойства объекта HTMLElement.
Свойства объекта HTMLOListElement перечислены в табл. 11.28.
Таблица 11.28. Свойства объекта HTMLOListElement
Элемент
compact
start
type
Описание
Если true, уменьшает расстояние между элементами списка.
Начальный индекс первого элемента списка.
Тип данного списка элементов.
Пример
Код в листинге 11.242 представляет пример создания объекта HTMLOListElement с
помощью объекта HTMLBodyElement.
Листинг 11.242. Пример создания объекта HTMLOListElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
varolObj = bodyObj.CreateElement("ol");
//-->
</script>
</html>
HTM LOListElement.com pact
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOListObj. com pact
Описание
Свойство compact объекта HTMLOListElement применяется для уменьшения
расстояние между элементами списка.
Пример
Код в листинге 11.243 с помощью объекта HTMLBodyElement создает объект
HTMLOListElement и устанавливает его свойство compact.
Листинг 11.243. Пример создания объекта HTMLOListElement и
установки его свойства compact
<html>
<script language="JavaScript" type="text/javascript">
<!--
varolObj = bodyObj.CreateElement("ol");
olObj.compact = true;
//-->
</script>
</html>
Глава 11. DOM HTML 1096
HTMLOListElement.start
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOListObj.start
Описание
Свойство start объекта HTMLOListElement определяет начальный порядковый
номер.
Пример
Код в листинге 11.244 с помощью объекта HTMLBodyElement создает объект
HTMLOListElement и устанавливает его свойство start.
Листинг 11.244. Пример создания объекта HTMLOListElement и
установки его свойства start.
<html>
<script language="JavaScript" type="text/javascript">
<!--
varolObj = bodyObj.CreateElement("ol");
olObj.start = 1;
//-->
</script>
</html>
HTMLOListElement.type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOListObj.type
Описание
Свойство type объекта HTMLOListElement определяет применяемый стиль
нумерации.
Пример
Код в листинге 11.245 с помощью объекта HTMLBodyElement создает объект
HTMLOListElement и устанавливает его свойство type.
Листинг 11.245. Пример создания объекта HTMLOListElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
varolObj = bodyObj.CreateElement("ol");
olObj.type = "ascending";
//-->
</script>
1 097 Часть III. Справочник по JavaScript
</html>
HTMLOptGroupElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLOptGroupElement предназначен для объединения отдельных опций в
одну логическую группу. Он наследует все методы и свойства объекта
HTMLElement. Свойства объекта HTMLOptGroupElement перечислены в табл.
11.29.
Таблица 11.29. Свойства объекта HTMLOptGroupElement.
Элемент
disabled
label
Описание
Указывает, заблокирован ли данный элемент.
Заголовок для данной группы опций.
Пример
Код в листинге 11.246 реализует пример создания объекта HTMLOptGroupElement
с помощью объекта HTMLSelectElement.
Листинг 11.246. Пример создания объекта HTMLOptGroupElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
var optionGrp = selectElement.createElement("options");
//-->
</script>
</html>
HTMLOptGroupElement.disabled
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOpt Group Obj. d isabled
Описание
Свойство disabled объекта HTMLOptGroupElement используется для блокировки
группы элементов.
Глава 11. DOM HTML 1098
Пример
Код в листинге 11.247 с помощью объекта HTMLSelectElement создает объект
HTMLOptGroupElement и устанавливает его свойство disabled.
Листинг 11.247. Пример создания объекта HTMLOptGroupElement и
установки его свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документа");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
var optionGrp = selectElement.createElement("options");
optionGrp.disabled = true;
//-->
</script>
</html>
HTMLOptGroupElement.label
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptGroupObj.\abe\
Описание
Свойство label объекта HTMLOptGroupElement используется для создания
заголовка данной группы опций.
Пример
Код в листинге 11.248 с помощью объекта HTMLSelectElement создает объект
HTMLOptGroupElement и устанавливает его свойство label.
Листинг 11.248. Пример создания объекта HTMLOptGroupElement и
установки его свойства label
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
var optionGrp = selectElement.createElementfoptions");
optionGrp.label = "Colors";
//-->
</script>
</html>
1 099 Часть III. Справочник по JavaScript
HTMLOptionElement
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLOptionElement представляет собой окно выбора. Он наследует все
методы и свойства объекта HTMLElement. Свойства объекта HTMLOptionElement
перечислены в табл. 11.30.
Таблица 11.30. Свойства объекта HTMLOptionElement
Элемент
defaultSelected
disabled
form
index
label
selected
text
value
Описание
Указывает, выбрана ли данная опция по умолчанию.
Указывает, заблокирована ли данная опция.
Форма, в которой находится данный элемент.
Порядковый номер данной опции.
Заголовок данной опции, который используется в иерархическом
меню.
Указывает, выбрана ли данная опция.
Текст данной опции.
Значение данной опции.
Пример
Код в листинге 11.249 реализует пример создания объекта HTMLOptionElement с
помощью объекта HTMLOptGroupElement.
Листинг 11.249. Пример создания объекта HTMLOptionElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moй HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
varoptionGrp = selectElement. createElementfoptions");
varoptionElement = optionGrp.createElementfoption");
//-->
</script>
</html>
HTMLOptionElement.defaultSelected
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/Opf/o/7Ob/.defaultSelected
Глава 11. DOM HTML 1100
Описание
Свойство defaultSelected объекта HTMLOptionElement предназначено для
представления значения выбранного HTML-атрибута. При изменении состояния
соответствующего элемента управления формы значение этого атрибута не
меняется. Тем не менее, изменение значения defaultSelected сбрасывает состояние
элемента управления формы.
Пример
Код в листинге 11.250 с помощью объекта HTMLOptGroupElement создает объект
HTMLOptionElement и устанавливает его свойство defaultSelected.
Листинг 11.250. Пример создания объекта HTMLOptionElement и
установки его свойства defaultSelected
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi7i HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
varoptionGrp = selectElement.createElement("options");
varoptionElement = optionGrp.createElement("option");
optionElement.defaultSelected = true;
//-->
</script>
</html>
HTMLOptionElement.disabled
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptionObj.disabled
Описание
Свойство disabled объекта HTMLOptionElement используется для блокировки
экземпляра опции.
Пример
Код в листинге 11.251 с помощью объекта HTMLSelectElement создает объект
HTMLOptionElement и устанавливает его свойство disabled.
Листинг 11.251. Пример создания объекта HTMLOptionElement и
установки его свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.openO;
1101 Часть III. Справочник по JavaScript
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
varoptionGrp = selectElement.createElement("options");
var optionElement = optionGrp.createElement("option");
optionElement.disabled = true;
//-->
</script>
</html>
HTMLOptionElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptionObj.form
Описание
Свойство form объекта HTMLOptionElement возвращает элемент FORM, в
котором находится данный элемент управления. Если элемент управления находится
не в контексте формы, возвращается значение Null.
Пример
Код в листинге 11.252 с помощью объекта HTMLSelectElement создает объект
HTMLOptionElement и считывает значение его свойства form.
Листинг 11.252. Пример создания объекта HTMLOptionElement и
считывания значения его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
varoptionGrp = selectElement.createElement("options");
var optionElement = optionGrp.createElement("option");
if(optionElement.form == "myForm")
processOption(optionElement);
//-->
</script>
</html>
HTMLOptionElement.index
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptionObj. index
Глава 11. DOM HTML 11 02
Описание
Свойство index объекта HTM LOption Element возвращает порядковый номер
данной опции (начиная с 0) внутри родительского элемента SELECT.
Пример
Код в листинге 11.253 с помощью объекта HTMLSelectElement создает объект
HTMLOptionElement и устанавливает его свойство index.
Листинг 11.253. Пример создания объекта HTMLOptionElement и
установки его свойства index
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
var optionGrp = selectElement.createElement("options");
var optionElement = optionGrp.createElement("option");
if(optionElement.index == 0)
processFirstOption(optionElement);
//-->
</script>
</html>
HTMLOptionElement.label
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptionObj. label
Описание
Свойство label объекта HTMLOptionElement содержит заголовок данной опции в
иерархическом меню.
Пример
Код в листинге 11.254 с помощью объекта HTMLSelectElement создает объект
HTMLOptionElement и устанавливает его свойство label.
Листинг 11.254. Пример создания объекта HTMLOptionElement и
установки его свойства label
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
1 1 03 Часть III. Справочник по JavaScript
var selectElement = formObj.createElementfselect");
varoptionGrp = selectElement.createElement("options");
varoptionElement = optionGrp.createElement("option");
optionElement.label = "Зеленый";
</script>
</html>
HTMLOptionElement.selected
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptionObj. selected
Описание
Свойство selected объекта HTMLOptionElement предназначено для представления
текущего состояния элемента управления формы. Изменение этого атрибута
изменяет состояние данного элемента управления, но не влияет на значение HTML-
атрибута selected.
Пример
Код в листинге 11.255 с помощью объекта HTMLSelectElement создает объект
HTMLOptionElement и устанавливает его свойство selected.
Листинг 11.255. Пример создания объекта HTMLOptionElement и
установки его свойства selected
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
var optionGrp = selectElement.createElement("options");
varoptionElement = optionGrp.createElement("option");
optionElement.selected = "true";
//-->
</script>
</html>
HTMLOptionElement.text
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptionObj .text
Глава 11. DOM HTML 11 04
Описание
Свойство text объекта HTMLOptionElement определяет текст, который содержится
в данной опции.
Пример
Код в листинге 11.256 с помощью объекта HTMLSelectElement создает объект
HTMLOptionElement и устанавливает его свойство text.
Листинг 11.256. Пример создания объекта HTMLOptionElement и
установки его свойства text
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
varoptionGrp = selectElement.createElementfoptions");
var optionElement = optionGrp.createElement("option");
var optionElement.text = "Blue";
//-->
</script>
</html>
HTMLOptionElement.value
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlOptionObj. value
Описание
Свойство value объекта HTMLOptionElement содержит значение данного элемента
управления формы.
Пример
Код в листинге 11.257 с помощью объекта HTMLSelectElement создает объект
HTMLOptionElement и устанавливает его свойство value.
Листинг 11.257. Пример создания объекта HTMLOptionElement и
установки его свойства value
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElementfselect");
1 1 05 Часть III. Справочник по JavaScript
varoptionGrp = selectElement.createElement("options");
varoptionElement = optionGrp.createElementfoption");
optionElement.value = "g";
//-->
</script>
</html>
HTMLParagraphElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLParagraph предназначен для представления абзаца. Он наследует все
методы и свойства объекта HTMLElement. Объект HTMLParagraph имеет
следующее свойство:
Элемент
align
Описание
Выравнивание по горизонтали данного абзаца.
Пример
Код в листинге 11.258 с помощью объекта HTMLBodyElement создает объект
HTMLParagraphElement и устанавливает его свойство align.
Листинг 11.258. Пример создания объекта HTMLParagraphElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var paragraphObj = bodyObj.CreateElementfp");
paragraphObj.align = "top";
//-->
</script>
</html>
HTMLParagraphElementalign
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlParagraphObj.aUgn
Описание
Свойство align объекта HTMLParagraphElement устанавливает тип
горизонтального выравнивания текста абзаца.
Глава 11. DOM HTML 11 06
Пример
Код в листинге 11.259 с помощью объекта HTMLBodyElement создает объект
HTMLParagraphElement и устанавливает его свойство align.
Листинг 11.259. Пример создания объекта HTMLParagraphElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var paragraphObj = bodyObj.CreateElementfp");
paragraphObj.align = "bottom";
//-->
</script>
</html>
HTMLParamElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLParamElement предназначен для представления HTML-параметра.
Он наследует все методы и свойства объекта HTMLElement. Свойства объекта
HTMLParamElement перечислены в табл. 11.31.
Таблица 11.31. Свойства объекта HTMLParamElement
Элемент
name
type
value
valueType
Описание
Имя данного элемента.
Тип данных данного параметра.
Значение данного параметра времени выполнения.
Данные о значении свойства value.
Пример
Код в листинге 11.260 реализует пример создания объекта HTMLParamElement с
помощью объекта HTMLMetaElement.
Листинг 11.260. Пример создания объекта HTMLParamElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var metaObj = bodyObj.createElement("meta");
var paramObj = metaObj.createElement("param");
//-->
</script>
</html>
HTMLParamElement.name
1 1 07 Часть III. Справочник по JavaScript
JavaScript 1 .5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlParamObj. name
Описание
Свойство name объекта HTMLParamElement определяет имя параметра времени
выполнения.
Пример
Код в листинге 11.261 с помощью объекта HTMLMetaElement создает объект
HTMLParamElement и устанавливает его свойство name.
Листинг 11.261. Пример создания объекта HTMLParamElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
var metaObj = bodyObj.createElement("meta");
var paramObj = metaObj.createElement("param");
paramObj.name = "keywords"
//-->
</script>
</html>
HTMLParamElement.type
JavaScript 1 .5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlParamObj. type
Описание
Свойство type объекта HTMLParamElement определяет тип атрибута value, в
случае если свойство valuetype содержит значение "ref'.
Пример
Код в листинге 11.262 с помощью объекта HTMLMetaElement создает объект
HTMLParamElement и устанавливает его свойства name, value и type.
Листинг 11.262. Пример создания объекта HTMLParamElement и
установки его свойств name, value и type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var metaObj = bodyObj.createElement("meta");
var paramObj = metaObj.createElement("param");
paramObj.name = "keywords"
paramObj.value = "кони,коровы,овцы";
paramObj.type = "животные";
Глава 11. DOM HTML 1108
</script>
</html>
HTMLParamElement. value
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlParamObj. value
Описание
Свойство value объекта HTMLParamElement определяет значение параметра
времени выполнения.
Пример
Код в листинге 11.263 с помощью объекта HTMLMetaElement создает объект
HTMLParamElement и устанавливает его свойство value.
Листинг 11.263. Пример создания объекта HTMLParamElement и
установки его свойства value
<html>
<script language="JavaScript" type="text/javascript">
<!--
var metaObj = bodyObj.createElement("meta");
var paramObj = metaObj.createElement("param");
paramObj.value = "кони,коровы,овцы";
//-->
</script>
</html>
HTMLParamElement.valueType
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlParamObj. valueType
Описание
Свойство valueType объекта HTMLParamElement содержит данные о значении
атрибута value.
Пример
Код в листинге 11.263 с помощью объекта HTMLMetaElement создает объект
HTMLParamElement и устанавливает его свойств valueType и name.
Листинг 11.263. Пример создания объекта HTMLParamElement и
установки его свойств valueType и name
<html>
<script language="JavaScript" type="text/javascript">
1 1 09 Часть III. Справочник по JavaScript
var metaObj = bodyObj.createElement("meta");
var paramObj = metaObj.createElement("param");
paramObj.name = "keywords"
paramObj.valueType = "ref;
//-->
</script>
</html>
HTMLPreElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLPreElement предназначен для представления предварительно
отформатированного текста. Он наследует все свойства и методы объекта
HTMLElement. Объект HTMLPreElement имеет следующее свойство:
Элемент
width
Описание
Фиксированная ширина содержимого элемента PRE.
Пример
Код в листинге 11.265 демонстрирует пример создания объекта HTMLPreElement с
помощью объекта HTMLBodyElement.
Листинг 11.265. Пример создания объекта HTMLPreElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var preObj = bodyObj.createElement("pre");
//-->
</script>
</html>
HTMLPreElement.width
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlPreObj. width
Описание
Свойство width объекта HTMLPreElement возвращает фиксированную ширину
содержимого.
Глава 11. DOM HTML 1110
Пример
В листинге 11.266 с помощью объекта HTMLBodyElement создается объект
HTMLPreElement и устанавливается его свойство width.
Листинг 11.266. Пример создания объекта HTMLPreElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
var preObj = bodyObj.CreateElement("pre");
preObj.width = 25;
//-->
</script>
</html>
HTMLQuoteElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLQuoteElement предназначен для представления HTML-элементов Q и
BLOCKQUOTE. Он наследует все свойства и методы объекта HTMLElement.
Объект HTMLQuoteElement имеет следующее свойство:
Элемент
cite
Описание
URI сообщения.
Пример
Код в листинге 11.267 реализует пример создания объекта HTMLQuoteElement с
помощью объекта HTMLBodyElement.
Листинг 11.267. Пример создания объекта HTMLQuoteElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
varquoteObj = bodyObj.CreateElment("quote");
//-->
</script>
</html>
HTMLQuoteElement.cite
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlQuoteObj. cite
1111 Часть III. Справочник по JavaScript
Описание
Свойство cite объекта HTMLQuoteElement содержит URI исходного документа или
сообщения.
Пример
Код в листинге 11.268 с помощью объекта HTMLBodyElement создает объект
HTMLQuoteElement и устанавливает его свойство cite.
Листинг 11.268. Пример создания объекта HTMLQuoteElement и
установки его свойства cite
<html>
<script language="JavaScript" type="text/javascript">
<!--
var quoteObj = bodyObj.CreateElement("quote");
quoteObj.cite = "http://foo.bar/reference.html";
//-->
</script>
</html>
HTMLScriptElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLScriptElement предназначен для представления HTML-сценария. Он
наследует все свойства и методы объекта HTMLElement. Свойства объекта
HTMLScriptElement перечислены в табл. 11.32.
Таблица 11.32. Свойства объекта HTMLScriptElement
Элемент
charset
defer
event
htmlFor
src
text
type
Описание
Кодировка символов сценария.
Указывает, может ли пользовательский агент откладывать выполнение
данного сценария.
Зарезервирован для будущего использования.
Зарезервирован для будущего использования.
URI внешнего сценария.
Содержимое данного сценария.
Тип содержимого языка сценариев.
Пример
Код в листинге 11.269 с помощью объекта HTMLBodyElement создает объект
HTMLScriptElement и устанавливает его свойство text.
Глава 11. DOM HTML 1112
Листинг 11.269. Пример создания объекта HTMLScriptElement и
установки его свойства text
<html>
<script language="JavaScript" type="text/javascript">
<!--
varscriptObj = bodyObj.createElement("script");
scriptObj.text = "текст сценария";
//-->
</script>
</html>
HTMLScriptElement.charset
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlScriptObj .charsei
Описание
Свойство charset объекта HTMLScriptElement содержит тип кодировки символов,
который использует связанный ресурс.
Пример
Код в листинге 11.270 с помощью объекта HTMLBodyElement создает объект
HTMLScriptElement и устанавливает его свойство charset.
Листинг 11.270. Пример создания объекта HTMLScriptElement и
установки его свойства charset
<html>
<script language="JavaScript" type="text/javascript">
<!--
var scriptObj = bodyObj.createElement("script");
scriptObj.charset = "us/english";
//-->
</script>
</html>
HTMLScriptElement.defer
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlScriptObj. defer
Описание
Свойство defer объекта HTMLScriptElement указывает, что пользовательский агент
может отложить выполнение данного сценария.
1113 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.271 с помощью объекта HTMLBodyElement создает объект
HTMLScriptElement и устанавливает его свойство defer.
Листинг 11.271. Пример создания объекта HTMLScriptElement и
установки его свойства defer
<html>
<script language="JavaScript" type="text/javascript">
<!--
varscriptObj = bodyObj.createElement("script");
scriptObj. defer = true;
//-->
</script>
</html>
HTMLScriptElement.event
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
htmlScript.event
Описание
Свойство event объекта HTMLScriptElement зарезервировано для будущего
применения.
HTM LScriptElement.html For
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlScriptObj.htvr\\For
Описание
Свойство htmlFor объекта HTMLScriptElement зарезервировано для будущего
применения.
HTMLScriptElement.src
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlScriptObj. src
Описание
Свойство src объекта HTMLScriptElement определяет URI внешнего сценария.
Глава 11. DOM HTML 1114
Пример
Код в листинге 11.272 реализует пример создания объекта HTMLScriptElement с
помощью объекта HTMLBodyElement.
Листинг 11.272. Пример создания объекта HTMLScriptElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var scriptObj = bodyObj.createElement("script");
//-->
</script>
</html>
HTMLScriptElement.text
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
html ScriptObj.text
Описание
Свойство text объекта HTMLScriptElement представляет содержимое данного
сценария.
Код в листинге 11.273 с помощью объекта HTMLBodyElement создает объект
HTMLScriptElement и устанавливает его свойство text.
Листинг 11.273. Пример создания объекта HTMLScriptElement и
установки его свойства text
<html>
<script language="JavaScript" type="text/javascript">
<!--
var scriptObj = bodyObj.createElement("script");
scriptObj.text = "текст сценария";
//-->
</script>
</html>
HTMLScriptElement.type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlScriptObj. type
Описание
Свойство type объекта HTMLScriptElement определяет тип содержимого языка
сценариев.
1115 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.274 с помощью объекта HTMLBodyElement создает объект
HTMLScriptElement и устанавливает его свойство type.
Листинг 11.274. Пример создания объекта HTMLScriptElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
varscriptObj = bodyObj.createElement("script");
scriptObj.type = "text/html";
//-->
</script>
</html>
HTMLSelectElement
Синтаксис
Основной объект DOM HTML.
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Описание
Объект HTMLSelectElement предоставляет возможность выбора одной или
нескольких опций. Доступ к имеющимся опциям элемента выбора можно получить
непосредственно, как к элементам коллекции. Объект HTMLSelectElement
наследует все методы и свойства объекта HTMLElement. Свойства и методы этого
объекта перечислены в табл. 11.33.
Таблица 11.33. Свойства и методы объекта HTMLSelectElement
Тип
Свойство
Метод
Элемент
disabled
form
length
multiple
name
options
selected Index
size
tablndex
type
value
add()
blur()
focus()
removeQ
Описание
Указывает, заблокирован ли данный элемент.
Форма, в которой находится данный элемент.
Количество опций в элементе выбора.
Указывает, разрешен ли одновременный выбор
нескольких опций.
Имя данного элемента выбора.
Список всех опций данного элемента выбора.
Индекс выбранной опции.
Количество отображаемых строк в элементе выбора.
Номер, указывающий для данного элемента порядок
обхода по клавише табуляции.
Тип данного элемента выбора.
Значение выбранной опции.
Добавляет в элемент выбора новую опцию.
Снимает фокус с элемента выбора.
Перемещает фокус на элемент выбора.
Удаляет элемент из списка опций.
Глава 11. DOM HTML 1116
Пример
Код в листинге 11.275 реализует пример создания объекта HTMLSelectElement с
помощью объекта HTMLFormElement.
Листинг 11.275. Пример создания объекта HTMLSelectElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectElement = formObj.createElement("select");
//-->
</script>
</html>
HTMLSelectElement.add()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelect0bj.addCneMeHm, before)
Описание
Метод add() объекта HTMLSelectElement добавляет в коллекцию элементов
OPTION элемента SELECT новый элемент. Этот метод эквивалентен методу
AppendChild() объекта Node, если значение его параметра before равно Null. Во
всех остальных случаях он эквивалентен методу InsertBefore() родительского
объекта параметра before.
Пример
Код в листинге 11.276 реализует пример создания объекта HTMLSelectElement и
вызова его метода add().
Листинг 11.276. Пример создания объекта HTMLSelectElement и
вызова его метода add()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
varselectObj = formObj.createElement("select");
varoptionObj = htmlDoc.createElement("option");
selectObj.add(optionObj, null);
//-->
<script>
</html>
1117 Часть III. Справочник по JavaScript
HTMLSelectElement.blurO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. blur()
Описание
Метод blur() объекта HTMLSelectElement снимает фокус с данного элемента.
Пример
Код в листинге 11.277 демонстрирует пример создания объекта HTMLSelectElement
и вызова его метода blur().
Листинг 11.277. Пример создания объекта HTMLSelectElement и
вызова его метода blur()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectObj = formObj.createElement("select");
selectObj.blur();
//-->
</script>
</html>
HTMLSelectElement.disabled
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Wm/Se/ecfOfoy.disabled
Описание
Свойство disabled объекта HTMLSelectElement используется для блокирования
экземпляра элемента выбора.
Пример
Код в листинге 11.278 с помощью объекта HTMLFormElement создает объект
HTMLSelectElement и устанавливает его свойство disabled.
Листинг 11.278. Пример создания объекта HTMLSelectElement и
установки его свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
Глава 11. DOM HTML 1118
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
varselectObj = formObj.createElement("select");
selectObj.disabled = true;
</script>
</html>
HTMLSelectElement.focus()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. focus()
Описание
Метод focus() объекта HTMLSelectElement перемещает фокус на данный элемент.
Пример
Код в листинге 11.279 реализует пример создания объекта HTMLSelectElement и
вызова его метода focus().
Листинг 11.279. Пример создания объекта HTMLSelectElement и
вызова его метода focus()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
varselectObj = formObj.createElement("select");
selectObj.focus()
//-->
</script>
</html>
HTMLSelectElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. form
Описание
Свойство form объекта HTMLSelectElement возвращает элемент FORM, в котором
содержится этот элемент управления. Если элемент управления находится не в
контексте формы, возвращается Null.
1119 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.280 реализует пример создания объекта HTMLSelectElement и
считывания значения его свойства form.
Листинг 11.280. Пример создания объекта HTMLSelectElement и
считывания значения его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
function submitFormFromSelect(selectObj) {
varformObj = selectObj.form;
formObj.submitO;
</script>
</html>
HTMLSelectElement.length
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. length
Описание
Свойство length объекта HTMLSelectElement определяет количество опций в
данном элементе SELECT.
Пример
Код в листинге 11.281 реалихует пример создания объекта HTMLSelectElement и
считывания значения его свойства length.
Листинг 11.281. Пример создания объекта HTMLSelectElement и
считывания значения его свойства length
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.openO;
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
varselectObj = formObj.createElement("select");
var optionList = selectObj.options;
var i = 0;
while( i < selectObj.length) {
processOption(optionList.index(i));
</script>
</html>
Глава 11. DOM HTML 1120
HTMLSelectElement.multiple
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. multiple
Описание
Свойство multiple объекта HTMLSelectElement указывает можно ли в данном
элементе SELECT выбирать несколько опций одновременно.
Пример
Код в листинге 11.282 реализует пример создания объекта HTMLSelectElement и
установки его свойства multiple.
Листинг 11.282. Пример создания объекта HTMLSelectElement и
установки его свойства multiple
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
varselectObj = formObj.createElement("select");
selectObj.multiple = true;
}
//-->
</script>
</html>
HTMLSelectElement.name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. name
Описание
Свойство name объекта HTMLSelectElement содержит имя элемента управления
формы или объекта, которое передается с формой.
Пример
Код в листинге 11.283 реализует пример создания объекта HTMLSelectElement и
установки его свойства name.
Листинг 11.283. Пример создания объекта HTMLSelectElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
1121 Часть III. Справочник по JavaScript
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectObj = formObj.createElement("select");
selectObj.name = "Color Selection";
//-->
</script>
</html>
HTMLSelectElement.options
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. options
Описание
Свойство options объекта HTMLSelectElement содержит коллекцию элементов
OPTION, относящихся к данному элементу выбора.
Пример
Код в листинге 11.284 реализует пример создания объекта HTMLSelectElement и
выполнения итераций по его свойствам options.
Листинг 11.284. Пример выполнения итераций по свойствам options
объекта HTMLSelectElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectObj = formObj.createElement("select");
var option List = selectObj.options;
var i = 0;
while( i < selectObj.length) {
processOption(optionList.index(i));
</script>
</html>
HTMLSelectElement. remove()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 1122
Синтаксис
htmlSelectObj.remove(uHdeKc)
Описание
Метод remove() объекта HTMLSelectElement удаляет элемент из коллекции
элементов OPTION данного элемента SELECT.
Пример
Код в листинге 11.285 реализует пример создания объекта HTMLSelectElement и
вызова его метода remove().
Листинг 11.285. Пример вызова метода remove() объекта
HTMLSelectElement
<html>
<script language="JavaScript" type="text/javascript">
<!-
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mon HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectObj = formObj.createElement("select");
selectObj.remove(selectObj.selectedlndex);
//-->
</script>
</html>
HTMLSelectElement.selectedlndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. selectedlndex
Описание
Свойство selectedlndex объекта HTMLSelectElement определяет порядковый номер
выбранной опции, начиная с 0. Если ни одна опция не выбрана, возвращается
значение -1. Если выбрано несколько опций, возвращается порядковый номер
первой выбранной опции.
Пример
Код в листинге 11.286 с помощью объекта HTMLFormElement создает объект
HTMLSelectElement и устанавливает его свойство selectedlndex.
Листинг 11.286. Пример создания объекта HTMLSelectElement и
установки его свойства selectedlndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moii HTML-документ");
htmlDoc.openO;
1 123 Часть III. Справочник по JavaScript
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElementfform");
var selectObj = formObj.createElement("select");
var optionObj = htmlDoc.createElement("option");
selectObj.Add(optionObj);
selectObj. selectedlndex = 0;
//-->
</script>
</html>
HTMLSelectElement.size
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj.s'ize
Описание
Свойство size объекта HTMLSelectElement определяет количество отображаемых
строк.
Пример
Код в листинге 11.287 с помощью объекта HTMLFormElement создает объект
HTMLSelectElement и устанавливает его свойство size.
Листинг 11.287. Пример создания объекта HTMLSelectElement и
установки его свойства size
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
var selectObj = formObj.createElement("select");
selectObj.size = 20;
}
//-->
</script>
</html>
HTMLSelectElement.tablndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj.tablndex
Глава 11. DOM HTML 1124
Описание
Свойство tablndex объекта HTMLSelectElement определяет индекс, который
соответствует положению элемента в порядке обхода по клавише табуляции.
Пример
Код в листинге 11.288 реализует пример создания объекта HTMLSelectElement и
установки его свойство tablndex.
Листинг 11.288. Пример создания объекта HTMLSelectElement и
установки его свойства tablndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElement("body");
varformObj = bodyObj.createElement("form");
varselectObj = formObj.createElement("select");
selectObj. tablndex = 4;
//-->
</script>
</html>
HTMLSelectElement. type
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. type
Описание
Свойство type объекта HTMLSelectElement определяет тип данного элемента
управления. Это строка "select-multiple", если значение атрибута multiple равно
True, и "select-one" - в противном случае.
Пример
Код в листинге 11.289 с помощью объекта HTMLFormElement создает объект
HTMLSelectElement и устанавливает его свойство type.
Листинг 11.289. Пример создания объекта HTMLSelectElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi7i HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj. createElementfform");
varselectObj = formObj.createElement("select");
selectObj.type = "select-multiple";
1 125 Часть III. Справочник по JavaScript
</script>
</html>
HTMLSelectElement. value
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlSelectObj. value
Описание
Свойство value объекта HTMLSelectElement определяет текущее значение элемента
управления.
Пример
Код в листинге 11.290 с помощью объекта HTMLFormElement создает объект
HTMLSelectElement и устанавливает его свойство value.
Листинг 11.290. Пример создания объекта HTMLSelectElement и
установки его свойства value
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var bodyObj = htmlDoc.createElementfbody");
varformObj = bodyObj.createElement("form");
var selectObj = formObj.createElement("select");
selectObj.value = "selection text";
//-->
</script>
</html>
HTMLStyleElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLStyleElement предназначен для представления данных, содержащихся
в списке стилей. Он наследует все методы и свойства объекта HTMLElement.
Свойства объекта HTMLStyleElement перечислены в табл. 11.34.
Таблица 11.34. Свойства объекта HTMLStyleElement
Элемент
disabled
media
Описание
Указывает, заблокирован ли данный стиль.
Определяет тип содержимого для данного стиля.
Глава 11. DOM HTML 1126
type | Тип содержимого языка данного таблицы стилей.
Пример
Код в листинге 11.291 реализует пример создания объекта HTMLStyleElement с
помощью объекта HTMLDocument.
Листинг 11.291. Пример создания объекта HTMLStyleElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var styleObj = htmlDoc.createElement("style");
//-->
</script>
</html>
HTMLStyleElement.disabled
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
stylelnfoObj.d\sab\ed
Описание
Свойство disabled объекта HTMLStyleElement предназначено для
блокировки/разблокировки таблицы стилей.
Пример
Код в листинге 11.292 с помощью объекта HTMLDocument создает объект
HTMLStyleObject, который затем блокируется.
Листинг 11.292. Пример создания объекта HTMLStyleObject и
установки его свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
var styleObj = htmlDoc.createElement("style");
styleObj.disabled = true;
//-->
</script>
</html>
HTMLStyleElement.media
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 127 Часть III. Справочник по JavaScript
Синтаксис
stylelnfoObj.med\a
Описание
Свойство media объекта HTMLStyleElement предназначено для использования
вместе с одним или несколькими типами содержимого.
Пример
Код в листинге 11.293 с помощью объекта HTMLDocument создает объект
HTMLStyleObject и устанавливает его свойство media.
Листинг 11.293. Пример создания объекта HTMLStyleObject и
установки его свойства media
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var styleObj = htmlDoc.createElementfstyle");
styleObj. media = "jpg";
//-->
</script>
</html>
HTMLStyleElement.type
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
stylelnfoObj.lype
Описание
Свойство type объекта HTMLStyleElement определяет тип содержимого языка
таблицы стилей.
Пример
Код в листинге 11.294 с помощью объекта HTMLDocument создает объект
HTMLStyleObject и устанавливает его свойство type.
Листинг 11.294. Пример создания объекта HTMLStyleObject и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Moi/i HTML-документ");
htmlDoc.openO;
var styleObj = htmlDoc.createElementfstyle");
styleObj.type = "text/html";
//-->
</script>
Глава 11. DOM HTML 1128
</html>
HTMLTableCaptionElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTableCaptionElement предназначен для представления заголовка
таблицы. Он наследует все свойства и методы объекта HTMLElement. Объект
HTMLTableCaptionElement имеет следующее свойство:
Элемент Описание
align
Выравнивает заголовок относительно таблицы, в которой он находится.
Пример
Код в листинге 11.295 приводится пример создания объекта
HTMLTableCaptionElement с помощью объекта HTMLTableElement.
Листинг 11.295. Пример создания объекта HTMLTableCaptionElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
var captionObj = tableObj.createCaption();
//-->
</script>
</html>
HTMLTableCaptionElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCaptionObj. align
Описание
Свойство align объекта HTMLTableCaptionElement устанавливает тип
выравнивания заголовка относительно таблицы.
Пример
Код в листинге 11.296 с помощью объекта HTMLTableElement создает объект
HTMLTableCaptionElement и устанавливает его свойство align.
Листинг 11.296. Пример создания объекта HTMLTableCaptionElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
1 129 Часть III. Справочник по JavaScript
vartableObj = bodyObj.createElement("table"
var captionObj = tableObj.createCaption();
captionObj.align = "top";
</script>
</html>
HTMLTableCellElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTableCellElement используется для представления элементов ТН и
TD. Он наследует все методы и свойства объекта HTMLElement. Свойства объекта
HTMLTableCellElement перечислены в табл. 11.35.
Таблица 11.35. Свойства объекта HTMLTableCellElement
Элемент
abbr
align
axis
bgColor
celllndex
ch
chOff
colSpan
headers
height
noWrap
rowSpan
scope
vAlign
width
Описание
Сокращение для ячеек заголовка.
Горизонтальное выравнивание данных в ячейке.
Имя группы связанных заголовков.
Цвет фона в данной ячейке.
Индекс данной ячейки в строке.
Символ выравнивания ячейки в столбце.
Смещение символа выравнивания.
Количество столбцов, которое занимает данная ячейка.
Коллекция заголовков данной ячейки.
Высота ячейки таблицы (в пикселах).
Если true, указывает, что текст в этой ячейке не переносится
автоматически на новую строку.
Количество строк, которое занимает данная ячейка.
Область, занимаемая ячейками заголовка.
Вертикальное выравнивание данных в ячейке.
Ширина ячейки (в пикселах).
Пример
Код в листинге 11.297 с помощью метода insertRow() объекта
HTMLTableRowElement создает объект HTMLTableCellElement.
Листинг 11.297. Пример создания объекта HTMLTableCellElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
varcellObj = rowObj.insertCellB);
Глава 11. DOM HTML 1130
</script>
</html>
HTMLTableCellElement.abbr
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. abbr
Описание
Свойство abbr объекта HTMLTableCellElement определяет аббревиатуры для ячеек
заголовка.
Пример
Код в листинге 11.298 с помощью объекта HTMLTableRowElement создает объект
HTMLTableCellElement и устанавливает его свойство abbr.
Листинг 11.298. Пример создания объекта HTMLTableCellElement и
установки его свойства abbr
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
varcellObj = rowObj.insertCell(i);
cellObj.abbr = "Admin";
//-->
</html>
HTMLTableCellElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. align
Описание
Свойство align объекта HTMLTableCellElement устанавливает выравнивания по
горизонтали данных ячейки.
Пример
Код в листинге 11.299 с помощью объекта HTMLTableRowElement создает объект
HTMLTableCellElement и устанавливает его свойство align.
Листинг 11.299. Пример создания объекта HTMLTableCellElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
1131 Часть III. Справочник по JavaScript
cellObj.align = "center";
</script>
</html>
HTMLTableCellElement.axis
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. axis
Описание
Свойство axis объекта HTMLTableCellElement определяет имя группы связанных
заголовков.
Пример
Код в листинге 11.300 реализует пример создания объекта HTMLTableCellElement
и установки его свойства axis.
Листинг 11.300. Пример создания объекта HTMLTableCellElement и
установки его свойства axis
<html>
<script language="JavaScript" type="text/javascript">
<!--
cellObj.axis = "Colors";
//-->
</script>
</html>
HTMLTableCellElement.bgColor
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. bgColor
Описание
Свойство bgColor объекта HTMLTableCellElement определяет цвет фона ячейки
таблицы.
Пример
Код в листинге 11.301 реализует пример создания объекта HTMLTableCellElement
и установки его свойства bgColor.
Листинг 11.301. Пример создания объекта HTMLTableCellElement и
установки его свойства bgColor
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 11 32
cellObj.bgColor = "blue";
</script>
</html>
HTMLTableCellElement.celllndex
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/7afo/eCe//0fo/.celllndex
Описание
Свойство celllndex объекта HTMLTableCellElement определяет индекс данной
ячейки в строке, начиная с 0. Этот индекс относится к положению ячейки в дереве
документа, но не к порядку отображения ячейки.
Пример
Код в листинге 11.302 реализует пример создания объекта HTMLTableCellElement
и установки его свойства celllndex.
Листинг 11.302. Пример создания объекта HTMLTableCellElement и
установки его свойства celllndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
if(cellObj. celllndex == 1)
handleFirstCell(cellObj);
//-->
</script>
</html>
HTMLTableCellElement.ch
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj.dn
Описание
Свойство ch объекта HTMLTableCellElement включает символ выравнивания ячеек
в столбце.
Пример
Код в листинге 11.303 реализует пример создания объекта HTMLTableCellElement
и установки его свойства ch.
Листинг 11.303. Пример создания объекта HTMLTableCellElement и
установки его свойства ch
<html>
1 1 33 Часть III. Справочник по JavaScript
<script language="JavaScript" type="text/javascript">
<!--
cellObj.ch =".";
//-->
</html>
HTMLTableCellElement.chOff
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. chOff
Описание
Свойство chOff объекта HTMLTableCellElement определяет смещение символа
выравнивания.
Пример
Код в листинге 11.304 реализует пример создания объекта HTMLTableCellElement
и установки его свойства chOff.
Листинг 11.304. Пример создания объекта HTMLTableCellElement и
установки его свойства chOff
<html>
<script language="JavaScript" type="text/javascript">
<!--
cellObj.chOff=";
//-->
</script>
</html>
HTMLTableCellElement.colSpan
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. colSpan
Описание
Свойство colSpan объекта HTMLTableCellElement определяет количество
столбцов, которые занимает данная ячейка.
Пример
Код в листинге 11.305 реализует пример создания объекта HTMLTableCellElement
и установки его свойства colSpan.
Листинг 11.305. Пример создания объекта HTMLTableCellElement и
установки его свойства colSpan
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 11 34
cellObj.colSpan = 3;
</script>
</html>
HTMLTableCellElement.headers
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. headers
Описание
Свойство headers объекта HTMLTableCellElement содержит список значений
атрибутов id ячеек заголовка.
Пример
Код в листинге 11.306 реализует пример создания объекта HTMLTableCellElement
и установки его свойства headers.
Листинг 11.306. Пример создания объекта HTMLTableCellElement и
установки его свойства headers
<html>
<script language="JavaScript" type="text/javascript">
<!--
cellObj.headers = "foo.bar";
//-->
</script>
</html>
HTMLTableCellElement.height
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. height
Описание
Свойство height объекта HTMLTableCellElement определяет высоту ячейки
таблицы.
Пример
Код в листинге 11.307 реализует пример создания объекта HTMLTableCellElement
и установки его свойства height.
Листинг 11.307. Пример создания объекта HTMLTableCellElement и
установки его свойства height
<html>
<script language="JavaScript" type="text/javascript">
1 1 35 Часть III. Справочник по JavaScript
cellObj.height = 25;
//-->
</script>
</html>
HTMLTableCellElement.noWrap
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. noWrap
Описание
Свойство noWrap объекта HTMLTableCellElement в случае, если его значение
равно true, подавляет автоматический перенос слов на новую строку.
Пример
Код в листинге 11.308 реализует пример создания объекта HTMLTableCellElement
и установки его свойства noWrap.
Листинг 11.308. Пример создания объекта HTMLTableCellElement и
установки его свойства noWrap
<html>
<script language="JavaScript" type="text/javascript">
<!--
cellObj. noWrap = true;
//-->
</script>
</html>
HTMLTableCellElement.rowSpan
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. rowSpan
Описание
Свойство rowSpan объекта HTMLTableCellElement определяет количество строк,
которые занимает данная ячейка.
Пример
Код в листинге 11.309 реализует пример создания объекта HTMLTableCellElement
и установки его свойства rowSpan.
Листинг 11.309. Пример создания объекта HTMLTableCellElement и
установки его свойства rowSpan
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 11 36
cellObj.rowSpan = 3;
</script>
</html>
HTMLTableCellElement.scope
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. scope
Описание
Свойство scope объекта HTMLTableCellElement определяет область, которую
занимают ячейки заголовка.
Пример
Код в листинге 11.310 реализует пример создания объекта HTMLTableCellElement
и установки его свойства scope.
Листинг 11.310. Пример создания объекта HTMLTableCellElement и
установки его свойства scope
<html>
<script language="JavaScript" type="text/javascript">
<!--
cellObj.scope = "row";
//-->
</script>
</html>
HTMLTableCellElement. vAlign
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. vAlign
Описание
Свойство vAlign объекта HTMLTableCellElement устанавливает тип выравнивания
по вертикали данных в ячейке.
Пример
Код в листинге 11.311 реализует пример создания объекта HTMLTableCellElement
и установки его свойства vAlign.
Листинг 11.311. Пример создания объекта HTMLTableCellElement и
установки его свойства vAlign
<html>
<script language="JavaScript" type="text/javascript">
1 1 37 Часть III. Справочник по JavaScript
cellObj.vAlign = "top";
//-->
</script>
</html>
HTMLTableCellElement.width
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableCellObj. width
Описание
Свойство width объекта HTMLTableCellElement определяет ширину ячейки
таблицы.
Пример
Код в листинге 11.312 реализует пример создания объекта HTMLTableCellElement
и установки его свойства width.
Листинг 11.312. Пример создания объекта HTMLTableCellElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
cellObj.width = 35;
//-->
</script>
</html>
HTMLTableColElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTableColElement предназначен для представления элементов COL и
COLGROUP. Он наследует все свойства и методы объекта HTMLElement.
Свойства объекта HTMLTableColElement перечислены в табл. 11.36.
Таблица 11.36. Свойства объекта HTMLTableColElement.
Элемент
align
ch
chOff
span
Описание
Выравнивание данных в столбце.
Символ выравнивания ячеек столбца.
Смещение символа выравнивания.
Количество столбцов группы.
Глава 11. DOM HTML 1138
vAlign
width
Выравнивание по вертикали данных ячеек столбца.
Ширина столбца таблицы.
Пример
Код в листинге 11.313 реализует пример создания объекта HTMLTableColElement с
помощью объекта HTMLTableRowElement.
Листинг 11.313. Пример создания объекта HTMLTableColElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
var rowObj = tableObj.insertRowB);
var columnObj = rowObj.createElement("td");
//-->
</script>
</html>
HTMLTableColElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableColObj. align
Описание
Свойство align объекта HTMLTableColElement устанавливает тип выравнивания по
горизонтали данных ячеек в столбце.
Пример
Код в листинге 11.314 с помощью объекта HTMLTableRowElement создает объект
HTMLTableColElement и устанавливает его свойство align.
Листинг 11.314. Пример создания объекта HTMLTableColElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
var rowObj = tableObj.insertRowB);
var columnObj = rowObj.createElement("td");
columnObj.align = "center";
//-->
</script>
</html>
HTMLTableColElement.ch
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
1 1 39 Часть III. Справочник по JavaScript
Синтаксис
htmlTableColObject.ch
Описание
Свойство ch объекта HTMLTableColElement содержит символ выравнивания ячеек
в столбце.
Пример
Код в листинге 11.315 с помощью объекта HTMLTableRowElement создает объект
HTMLTableColElement и устанавливает его свойство ch.
Листинг 11.315. Пример создания объекта HTMLTableColElement и
установки его свойства ch
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
var rowObj = tableObj.insertRowB);
varcolumnObj = rowObj.createElement("td");
columnObj. align = "char";
columnObj.ch = ".";
//-->
</script>
</html>
HTMLTableColElementchOff
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableColObject.cbOff
Описание
Свойство chOff объекта HTMLTableColElement определяет смещение символа
выравнивания.
Пример
Код в листинге 11.316 с помощью объекта HTMLTableRowElement создает объект
HTMLTableColElement и устанавливает его свойство chOff.
Листинг 11.316. Пример создания объекта HTMLTableColElement и
установки его свойства chOff
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElement("table");
var rowObj = tableObj.insertRowB);
varcolumnObj = rowObj.createElement("col");
columnObj.align = "char";
columnObj.chOff = 3;
Глава 11. DOM HTML 1140
</script>
</html>
HTMLTableColElement.span
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
MmlTableColObj. span
Описание
Свойство span объекта HTMLTableColElement определяет количество столбцов в
группе.
Пример
Код в листинге 11.317 с помощью объекта HTMLTableRowElement создает объект
HTMLTableColElement и устанавливает его свойство span.
Листинг 11.317. Пример создания объекта HTMLTableColElement и
установки его свойства span
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
var rowObj = tableObj.insertRowB);
varcolumnObj = rowObj.createElementfcol");
columnObj.span = 3;
//-->
</script>
</html>
HTMLTableColElement.vAlign
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableColObj. vAlign
Описание
Свойство vAlign объекта HTMLTableColElement устанавливает тип вертикального
выравнивания данных ячеек в столбце.
Пример
Код в листинге 11.318 с помощью объекта HTMLTableRowElement создает объект
HTMLTableColElement и устанавливает его свойство vAlign.
Листинг 11.318. Пример создания объекта HTMLTableColElement и
установки его свойства vAlign
<html>
1141 Часть III. Справочник по JavaScript
<script language="JavaScript" type="text/javascript"
<!--
vartableObj = bodyObj.createElementftable");
var rowObj = tableObj.insertRowB);
var columnObj = rowObj.createElement("td");
columnObj.vAlign = "top";
//-->
</script>
</html>
HTMLTableColElement.width
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/7afo/eCo/Ob/.width
Описание
Свойство width объекта HTMLTableColElement устанавливает ширину столбца,
заданную по умолчанию.
Пример
Код в листинге 11.319 с помощью объекта HTMLTableRowElement создает объект
HTMLTableColElement и устанавливает его свойство width.
Листинг 11.319. Пример создания объекта HTMLTableColElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
var rowObj = tableObj.insertRowB);
var columnObj = rowObj.createElement("td");
columnObj.width = 44;
//-->
<script>
</html>
HTMLTableElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTableElement предназначен для представления элемента таблицы. Он
наследует все свойства и методы объекта HTMLEIement. Свойства и методы
объекта HTMLTableElement перечислены в табл. 11.37.
Глава 11. DOM HTML 1142
Таблица 11.37. Свойства и методы объекта HTMLTableElement
Тип
Свойство
Метод
Элемент
align
bgColor
border
caption
cellPadding
cellSpacing
frame
rows
rules
summary
tBodies
tFoot
tHead
width
createCaption()
createTFoot()
createTHead()
deleteCaption()
deleteTFoot()
deleteTHeadO
deleteRow()
insertRowQ
Описание
Выравнивание данной таблицы относительно
остальной части документа.
Цвет фона данной таблицы.
Ширина рамки вокруг таблицы.
Заголовок данной таблицы.
Просвет между содержимым ячейки и границами
ячейки.
Расстояние между ячейками.
Указывает, какие внешние границы таблицы следует
визуализировать.
Коллекция всех строк в таблице.
Указывает, какие внутренние границы таблицы
следует визуализировать.
Описание назначения данной таблицы.
Коллекция описанных тел таблицы для данной
таблицы.
Элемент TFOOT таблицы.
Элемент THEAD таблицы.
Ширина таблицы.
Создает или возвращает существующий заголовок
таблицы.
Создает или возвращает существующий нижний
колонтитул.
Создает или возвращает существующий верхний
колонтитул.
Удаляет заголовок таблицы, если последний
существует.
Удаляет нижний колонтитул, если он существует.
Удаляет верхний колонтитул, если он существует.
Удаляет из таблицы строку.
Вставляет в таблицу строку.
Пример
Код в листинге 11.320 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство caption.
Листинг 11.320. Пример создания объекта HTMLTableElement и
установки его свойства caption
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.caption = "My Table";
//-->
</script>
</html>
1 143 Часть III. Справочник по JavaScript
HTMLTableElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj.align
Описание
Свойство align объекта HTMLTableElement устанавливает положение таблицы
относительно остальной части документа.
Пример
Код в листинге 11.321 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство align.
Листинг 11.321. Пример создания объекта HTMLTableElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.align = "top";
//-->
</script>
</html>
HTMLTableElement. bgColor
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/7afo/eOft/.bgColor
Описание
Свойство bgColor объекта HTMLTableElement устанавливает цвет фона ячеек
таблицы.
Пример
Код в листинге 11.322 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство bgColor.
Листинг 11.322. Пример создания объекта HTMLTableElement и
установки его свойства bgColor
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.bgColor = "#000000";
//-->
</script>
Глава 11. DOM HTML 1144
</html>
HTMLTableElement. border
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. border
Описание
Свойство border объекта HTMLTableElement определяет ширину рамки вокруг
таблицы.
Пример
Код в листинге 11.323 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство border.
Листинг 11.323. Пример создания объекта HTMLTableElement и
установки его свойства border
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.border = 1;
//-->
</script>
</html>
HTMLTableElement.caption
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. caption
Описание
Свойство caption объекта HTMLTableElement возвращает элемент CAPTION или
void, если заголовок отсутствует.
Пример
Код в листинге 11.324 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство caption.
Листинг 11.324. Пример создания объекта HTMLTableElement и
установки его свойства caption
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.caption = "Моя таблица";
1 145 Часть III. Справочник по JavaScript
</script>
</html>
HTMLTableElement.cellPadding
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj.ceWPadd'mg
Описание
Свойство cellPadding объекта HTMLTableElement устанавливает горизонтальный и
вертикальный просветы между содержимым ячейки и ее границами.
Пример
Код в листинге 11.325 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство cellPadding.
Листинг 11.325. Пример создания объекта HTMLTableElement и
установки его свойства cellPadding
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj. cellPadding = 0;
//-->
</script>
</html>
HTMLTableElement.cellSpacing
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
/?fm/Tafc/eOb/.cellSpacing
Описание
Свойство cellspacing объекта HTMLTableElement устанавливает расстояние между
ячейками в горизонтальном и вертикальном направлениях.
Пример
В листинге 11.326 с помощью объекта HTMLBodyElement создается объект
HTMLTableElement и устанавливается его свойство cellSpacing.
Листинг 11.326. Пример создания объекта HTMLTableElement и
установки его свойства cellSpacing
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 1146
vartableObj = bodyObj.createElementftable");
tableObj. cellspacing = 2;
</script>
</html>
HTMLTableElement.createCaptionO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
/7fm/Tafc/eOb/.createCaption()
Описание
Метод createCaption() объекта HTMLTableElement создает новый или возвращает
существующий заголовок таблицы.
Пример
Код в листинге 11.327 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод createCaption().
Листинг 11.327. Пример создания объекта HTMLTableElement и
вызова его метода createCaption()
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElement("table");
var captionObj = tableObj. createCaption();
//-->
</script>
</html>
HTMLTableElement.createTFoot()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj.createTFooXQ
Описание
Метод createTFoot() объекта HTMLTableElement создает новый или возвращает
существующий нижний колонтитул таблицы.
Пример
Код в листинге 11.328 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод createTFoot().
Листинг 11.328. Пример создания объекта HTMLTableElement и
вызова его метода createTFoot()
<html>
1 147 Часть III. Справочник по JavaScript
<script language="JavaScript" type="text/javascript"
<!--
vartableObj = bodyObj.createElement("table");
vartFootObj = tableObj.createTFoot();
//-->
</script>
</html>
HTMLTableElement.createTHead()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj.createTHeadQ
Описание
Метод createTHead() объекта HTMLTableElement создает новый или возвращает
существующий верхний колонтитул таблицы.
Пример
Код в листинге 11.329 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод createTHead().
Листинг 11.329. Пример создания объекта HTMLTableElement и
вызова его метода createTHead()
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElement("table");
var tHeadObj = tableObj.createTHead();
//-->
</script>
</html>
HTMLTableElement.deleteCaption()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Wm/7afo/eOb/.deleteCaption()
Описание
Метод deleteCaption() объекта HTMLTableElement удаляет заголовок таблицы,
если таковой существует.
Пример
Код в листинге 11.330 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод deleteCaption().
Глава 11. DOM HTML 1148
Листинг 11.330. Пример создания объекта HTMLTableElement и
вызова его метода deleteCaption()
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.deieteCaption();
//-->
</script>
</html>
HTMLTableElement. deleteRow()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj .de\eleRow(uHdeKc)
Описание
Метод deleteRow() объекта HTMLTableElement удаляет из таблицы строку с
индексом, указанным в параметре индекс.
Пример
Код в листинге 11.331 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод deleteRow().
Листинг 11.331. Пример создания объекта HTMLTableElement и
вызова его метода deleteRow()
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.deleteRow(i);
//-->
</script>
</html>
HTMLTableElement.deleteTFootO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. deleteTFoot()
Описание
Метод deleteTFoot() объекта HTMLTableElement удаляет из таблицы нижний
колонтитул, если таковой существует.
1 149 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.332 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод deleteTFoot().
Листинг 11.332. Пример создания объекта HTMLTableElement и
вызова его метода deleteTFoot()
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.CreateElementftable");
tableObj.deleteTFoot();
//-->
</script>
</html>
HTMLTableElement.deleteTHead()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. deleteTHeadO
Описание
Метод deleteTHeadO объекта HTMLTableElement удаляет из таблицы верхний
колонтитул, если таковой существует.
Пример
Код в листинге 11.333 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод deleteTHead().
Листинг 11.333. Пример создания объекта HTMLTableElement и
вызова его метода deleteTHeadO
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.deleteTHead();
//-->
</script>
</html>
HTMLTableElement.frame
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. frame
Глава 11. DOM HTML 1150
Описание
Свойство frame объекта HTMLTableElement указывает, какие внешние границы
таблицы необходимо визуализировать.
Пример
Код в листинге 11.334 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство frame.
Листинг 11.334. Пример создания объекта HTMLTableElement и
установки его свойства frame
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElement("table");
tableObj.frame = "box";
//-->
</script>
</html>
HTMLTableElement.insertRow()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj.insertRow( индекс)
Описание
Метод insertRow() объекта HTMLTableElement вставляет в таблицу новую пустую
строку. Новая строка включается непосредственно перед текущей строкой и в той же
секции, что и текущая строка, определяемая параметром индекс. Если значение
параметра индекс равно количеству строк в таблице, новая строка вставляется в
конец таблицы. Кроме того, если таблица пуста, новая строка вставляется в элемент
TBODY, который создается и вставляется в таблицу.
Пример
Код в листинге 11.335 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и вызывает его метод insertRow().
Листинг 11.335. Пример создания объекта HTMLTableElement и
вызова его метода insertRow()
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
var rowObj = tableObj.insertRow(i);
//-->
</script>
</html>
1151 Часть III. Справочник по JavaScript
HTMLTableElement.rows
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObject. rows
Описание
Свойство rows объекта HTMLTableElement возвращает коллекцию всех строк в
таблице, включая и все элементы THEAD, TFOOT и TBODY.
Пример
Код в листинге 11.336 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и считывает значение его свойства rows.
Листинг 11.336. Пример создания объекта HTMLTableElement и
считывания значения его свойства rows
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowsCollection = tableObj.rows;
//-->
</script>
</html>
HTMLTableElement. rules
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. rules
Описание
Свойство rules объекта HTMLTableElement указывает, какие внутренние границы
таблицы должны визуализироваться.
Пример
Код в листинге 11.337 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство rules.
Листинг 11.337. Пример создания объекта HTMLTableElement и
установки его свойства rules
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.rules = "all";
//-->
</script>
</html>
Глава 11. DOM HTML 11 52
HTMLTableElement.summary
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. summary
Описание
Свойство summary объекта HTMLTableElement содержит описание назначения
или структуры таблицы.
Пример
Код в листинге 11.338 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство summary.
Листинг 11.338. Пример создания объекта HTMLTableElement и
установки его свойства summary
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.summary = "Эта таблица не имеет определенного назначения";
//-->
</script>
</html>
HTMLTableElement.tBodies
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj. tBodies
Описание
Свойство tBodies объекта HTMLTableElement возвращает коллекцию описанных
тел таблицы.
Пример
Код в листинге 11.339 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и считывает значение его свойства tBodies.
Листинг 11.339. Пример создания объекта HTMLTableElement и
считывания значения его свойства tBodies
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartBodiesCollection = tableObj .tBodies;
//-->
</script>
</html>
1 1 53 Часть III. Справочник по JavaScript
HTMLTableElementtFoot
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj.VFool
Описание
Свойство tFoot объекта HTMLTableElement возвращает элемент TFOOT таблицы,
если таковой существует, и Null в противном случае.
Пример
Код в листинге 11.340 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и считывает значение его свойства tFoot.
Листинг 11.340. Пример создания объекта HTMLTableElement и
считывания значения его свойства tFoot
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.tFoot;
//-->
</script>
</html>
HTMLTableElement.tHead
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObj AHead
Описание
Свойство tHead объекта HTMLTableElement возвращает элемент THEAD таблицы,
если таковой существует, и Null - в противном случае.
Пример
Код в листинге 11.341 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и считывает значение его свойства tHead.
Листинг 11.341. Пример создания объекта HTMLTableElement и
считывания значения его свойства tHead
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.tHead;
//-->
</script>
Глава 11. DOM HTML 11 54
</html>
HTMLTableElement.width
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableObjmdth
Описание
Свойство width объекта HTMLTableElement устанавливает желаемую ширину
таблицы.
Пример
Код в листинге 11.342 с помощью объекта HTMLBodyElement создает объект
HTMLTableElement и устанавливает его свойство width.
Листинг 11.342. Пример создания объекта HTMLTableElement и
установки его свойства width
<html>
<script language="JavaScript" type="text/javascript">
<!--
vartableObj = bodyObj.createElementftable");
tableObj.width = 00%";
//-->
</script>
</html>
HTMLTableRowElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTableRowElement служит для представления строки таблицы. Он
наследует все методы и свойства объекта HTMLElement. Свойства и методы
объекта HTMLTableRowElement перечислены в табл. 11.38.
Таблица 11.38. Свойства и методы объекта HTMLTableRowElement
Тип
Свойство
Элемент
align
bgColor
cells
ch
chOff
rowlndex
Описание
Выравнивание данных в ячейках данной строки.
Цвет фона ячеек данной строки.
Коллекция ячеек данной строки.
Символ выравнивания для ячеек данной строки.
Смещение символа выравнивания.
Индекс данной строки по отношению ко всей
таблице.
1 1 55 Часть III. Справочник по JavaScript
Метод
sectionRowlndex
vAlign
deleteCell()
insertCellQ
Индекс данной строки по отношению к секции
таблицы.
Выравнивание по вертикали данных в ячейках
данной строки.
Удаляет ячейку из данной строки.
Включает ячейку в данную строку.
Пример
Код в листинге 11.343 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и вызывает его метод insertRow().
Листинг 11.343. Пример создания объекта HTMLTableRowElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
//-->
</script>
</html>
HTMLTableRowElement.align
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableRowObj. align
Описание
Свойство align объекта HTMLTableRowElement устанавливает выравнивание по
горизонтали ячеек в данной строке.
Пример
Код в листинге 11.344 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и устанавливает его свойство align.
Листинг 11.344. Пример создания объекта HTMLTableRowElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
rowObj.align = "left";
//-->
</script>
</html>
HTMLTableRowElement. bgColor
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 11 56
Синтаксис
MmlTableRowObj. bgColor
Описание
Свойство bgColor объекта HTMLTableRowElement устанавливает цвет фона
данной строки.
Пример
Код в листинге 11.345 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и устанавливает его свойство bgColor.
Листинг 11.345. Пример создания объекта HTMLTableRowElement и
установки его свойства bgColor
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
rowObj.bgColor = "red";
//-->
</script>
</html>
HTMLTableRowElement.cells
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
MmlTableRowObj. cells
Описание
Свойство cells объекта HTMLTableRowElement возвращает коллекцию ячеек
данной строки.
Пример
Код в листинге 11.346 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и считывает значение его свойства cells.
Листинг 11.346. Пример создания объекта HTMLTableRowElement и
считывания значения его свойства cells
<html>
<script language="JavaScript" type="text/javascript">
<!--
var tableCellsCollection = rowObj.cells;
//-->
</script>
</html>
HTMLTableRowElement.ch
JavaScript 1 5+, JScript 5+
1 1 57 Часть III. Справочник по JavaScript
Nav6+,IE5+
Синтаксис
MmlTableRowObj.cU
Описание
Свойство ch объекта HTMLTableRowElement определяет символ выравнивания
ячеек данной строки.
Пример
Код в листинге 11.347 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и устанавливает его свойство ch.
Листинг 11.347. Пример создания объекта HTMLTableRowElement и
установки его свойства ch
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
rowObj. align = "char";
rowObj.ch =".";
//-->
</script>
</html>
HTMLTableRowElementchOff
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableRowObj. ch Off
Описание
Свойство chOff объекта HTMLTableRowElement устанавливает смещение символа
выравнивания.
Пример
Код в листинге 11.348 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и устанавливает его свойство chOff.
Листинг 11.348. Пример создания объекта HTMLTableRowElement и
установки его свойства chOff
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
rowObj. chOff = ";
//-->
</script>
</html>
Глава 11. DOM HTML 1158
HTMLTableRowElement.deleteCellO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableRowObj.de\eteCe\\(uHdeKc)
Описание
Метод deleteCell() объекта HTMLTableRowElement удаляет ячейку данной строки.
Пример
Код в листинге 11.349 реализует пример создания объекта HTMLTableRowElement
и вызова его метода deleteCell().
Листинг 11.349. Пример создания объекта HTMLTableRowElement и
вызова его метода deleteCell()
<html>
<script language="JavaScript" type="text/javascript">
<!--
rowObj.deleteCell(i);
//-->
</script>
</html>
HTMLTableRowElement.insertCellO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableRowObj.\nsert.Ce\\(uHdeKc)
Описание
Метод insertCell() объекта HTMLTableRowElement включает в данную строку
пустую ячейку, определенную с помощью дескриптора TD.
Пример
Код в листинге 11.350 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и вызывает его метод insertCe!l().
Листинг 11.350. Пример создания объекта HTMLTableRowElement и
вызова его метода insertCell()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
varcellObj = rowObj.insertCellB);
//-->
</script>
</html>
1 1 59 Часть III. Справочник по JavaScript
HTMLTableRowElement.rowlndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableRowObj. rowlndex
Описание
Свойство rowlndex объекта HTMLTableRowElement определяет индекс данной
строки относительно всей таблицы, начиная с 0. Это свойство относится к
положению объекта в дереве документа, а не порядку его отображения. Свойство
rowlndex не учитывает секции таблицы (THEAD, TFOOT или TBODY).
Пример
Код в листинге 11.351 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и считывает значение его свойства rowlndex.
Листинг 11.351. Пример создания объекта HTMLTableRowElement и
считывания значения его свойства rowlndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
if(rowObj. rowlndex == 1)
handleFirstRow(rowObj);
//-->
</script>
</html>
HTMLTableRowElement.sectionRowlndex
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableRowObj.sectior\Row\ndex
Описание
Свойство sectionRowIndex объекта HTMLTableRowElement определяет индекс
данной строки относительно текущей секции (THEAD, TFOOT или TBODY),
начиная с 0.
Пример
Код в листинге 11.352 реализует пример создания объекта HTMLTableRowElement
и считывания его свойства sectionRowIndex.
Листинг 11.352. Пример создания объекта HTMLTableRowElement и
считывания его свойства sectionRowIndex
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 1160
if(rowObj.sectionRowlndex == 1)
handleFirstSectionRow(rowObj);
</script>
</html>
HTMLTableRowElement. vAlign
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableRowObj. vAlign
Описание
Свойство vAlign объекта HTMLTableRowElement устанавливает вертикальное
выравнивание ячеек в данной строке.
Пример
Код в листинге 11.353 с помощью объекта HTMLTableElement создает объект
HTMLTableRowElement и устанавливает его свойство vAlign.
Листинг 11.353. Пример создания объекта HTMLTableRowElement и
установки его свойства vAlign
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableObj.insertRow(i);
rowObj.vAlign = "top";
//-->
</script>
</html>
HTMLTableSectionElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTableSectionElement предназначен для представления HTML-
элементов THEAD, TFOOT и TBODY. Он наследует все методы и свойства объекта
HTMLElement. Свойства и методы объекта HTMLTableSectionElement
перечислены в табл. 11.39.
Таблица 11.39. Свойства и методы объекта HTMLTableSectionElement
Тип
Свойство
Элемент
align
ch
Описание
Выравнивание данных в ячейках.
Символ выравнивания для ячеек в столбце.
1161 Часть III. Справочник по JavaScript
Метод
chOff
rows
vAlign
deleteRow()
insertRowQ
Смещение символа выравнивания.
Коллекция строк в данной секции таблицы.
Выравнивание по вертикали для данных в ячейках.
Удаляет строку из данной секции таблицы.
Добавляет строку в данную секцию таблицы.
Пример
Код в листинге 11.354 реализует пример создания объекта
HTMLTableSectionElement и установки его свойства align.
Листинг 11.354. Пример создания объекта HTMLTableSectionElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
tableSectionObj.align = "char";
//-->
</script>
</html>
HTMLTableSectionElement.align
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableSectionObj. align
Описание
Свойство align объекта HTMLTableSectionElement устанавливает выравнивание
данных в ячейках по горизонтали.
Пример
Код в листинге 11.355 реализует пример создания объекта
HTMLTableSectionElement и установки его свойства align.
Листинг 11.355. Пример создания объекта HTMLTableSectionElement и
установки его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
tableSectionObj.align = "char";
//-->
</script>
</html>
HTM LTableSecti on Element, ch
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Глава 11. DOM HTML 1162
Синтаксис
htmlTableSection.dn
Описание
Свойство ch объекта HTMLTableSectionElement содержит символ выравнивания
для ячеек в столбце.
Пример
Код в листинге 11.356 реализует пример создания объекта
HTMLTableSectionElement и установки его свойства ch.
Листинг 11.356. Пример создания объекта HTMLTableSectionElement и
установки его свойства ch
<html>
<script language="JavaScript" type="text/javascript">
<!-
tableSectionObj.align = "char";
tableSectionObj.ch =".";
//-->
</script>
</html>
HTMLTableSectionElement.chOff
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableSectionObj. chOff
Описание
Свойство chOff объекта HTMLTableSectionElement устанавливает смещение
символа выравнивания.
Пример
Код в листинге 11.357 реализует пример создания объекта
HTMLTableSectionElement и установки его свойства chOff.
Листинг 11.357. Пример создания объекта HTMLTableSectionElement и
установки его свойства chOff
<html>
<script language="JavaScript" type="text/javascript">
<!--
tableSectionObj.align = "char";
tableSectionObj.chOff = 2";
//-->
</script>
</html>
HTMLTableSectionElement.deleteRow()
1 163 Часть III. Справочник по JavaScript
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableSectionObj.de\eteRow(uHdei<c)
Описание
Метод deleteRow() объекта HTMLTableSectionElement удаляет строку из данного
раздела.
Пример
Код в листинге 11.358 реализует пример создания объекта
HTMLTableSectionElement и вызова его метода deleteRow()
Листинг 11.358. Пример создания объекта HTMLTableSectionElement и
вызова его метода deleteRow()
<html>
<script language="JavaScript" type="text/javascript">
<!--
tableSectionObj.deleteRow(i);
//-->
</script>
</html>
HTMLTableSectionElement.insertRow()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableSectionObj.\nseriRo\N(uHdei<c)
Описание
Метод insertRow() объекта HTMLTableSectionElement добавляет строку в данную
секцию. Новая строка вставляется непосредственно перед текущей строкой с
индексом, определенным через параметр индекс. Если значение параметра индекс
равно количеству строк в секции, новая строка вставляется в конец раздела.
Пример
Код в листинге 11.359 реализует пример создания объекта
HTMLTableSectionElement и вызова его метода insertRowO-
Листинг 11.359. Пример создания объекта HTMLTableSectionElement и
вызова его метода insertRowO
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowObj = tableSectionObj.insertRow(i);
//-->
</script>
</html>
Глава 11. DOM HTML 1164
HTMLTableSectionElement.rows
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableSectionObj. rows
Описание
Свойство rows объекта HTMLTableSectionElement возвращает коллекцию строк
для данной секции.
Пример
Код в листинге 11.360 реализует пример создания объекта
HTMLTableSectionElement и считывания значения его свойства align.
Листинг 11.360. Пример создания объекта HTMLTableSectionElement и
считывания его свойства align
<html>
<script language="JavaScript" type="text/javascript">
<!--
var rowsCollection = tableSectionObj.rows;
//-->
</script>
</html>
HTMLTableSectionElement. vAlign
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTableSectionObj. vAlign
Описание
Свойство vAlign объекта HTMLTableSectionElement устанавливает выравнивание
по вертикали для данных в ячейках.
Пример
Код в листинге 11.361 реализует пример создания объекта
HTMLTableSectionElement и установки его свойства vAlign
Листинг 11.361. Пример создания объекта HTMLTableSectionElement и
установки его свойства vAlign
<html>
<script language="JavaScript" type="text/javascript">
<!--
tableSectionObj.align = "char";
tableSectionObj.vAlign = "top";
//-->
</script>
</html>
1 165 Часть III. Справочник по JavaScript
HTMLTextAreaElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTextAreaElement предназначен для представления многострочной
текстовой области. Он наследует все свойства и методы объекта HTMLElement.
Свойства и методы объекта HTMLTextAreaElement перечислены в табл. 11.40.
Таблица 11.40. Свойства и методы объекта HTMLTextAreaElement
Тип
Свойство
Метод
Элемент
accessKey
cols
defaultValue
disabled
form
name
readonly
rows
tablndex
type
value
blur()
focus()
selectQ
Описание
Односимвольный ключ доступа к данному элементу
управления.
Ширина текстовой области (определяется количеством
символов).
Значение данной текстовой области, заданное по
умолчанию.
Указывает, заблокирована ли данная текстовая область.
Форма, в которой находится данная текстовая область.
Имя данной текстовой области.
Указывает, доступно ли содержимое текстовой области
исключительно в режиме считывания.
Количество строк в данной текстовой области.
Величина, указывающая для данной текстовой области
порядок обхода по клавише табуляции.
Строка "textarea".
Содержимое данной текстовой области.
Снимает фокус с данной текстовой области.
Перемещает фокус на данную текстовую область.
Выделяет содержимое данной текстовой области.
Пример
Код в листинге 11.362 реализует пример создания объекта HTMLTextAreaElement
с помощью объекта HTMLFormElement.
Листинг 11.362. Пример создания объекта HTMLTextAreaElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
//-->
</script>
</html>
HTMLTextAreaElement.accessKey
JavaScript 1.5+, JScript 5+
Глава 11. DOM HTML 1166
Nav6+,IE5+
Синтаксис
MmlTextAreaObj. accessKey
Описание
Свойство accessKey объекта HTMLTextAreaElement определяет односимвольный
ключ доступа к данному элементу управления формы.
Пример
Код в листинге 11.363 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство accessKey.
Листинг 11.363. Пример создания объекта HTMLTextAreaElement и
установки его свойства accessKey
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.accessKey = "q";
//-->
</script>
</html>
HTMLTextAreaElement.blur()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextArea Ob/, bl u r()
Описание
Метод blur() объекта HTMLTextAreaElement снимает фокус с данного элемента
управления.
Пример
Код в листинге 11.364 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и вызывает его метод blur().
Листинг 11.364. Пример создания объекта HTMLTextAreaElement и
вызова его метода blur()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElementftextarea");
textAreaObj.blur();
//-->
</script>
</html>
1 167 Часть III. Справочник по JavaScript
HTMLTextAreaElement.cols
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextArea. cols
Описание
Свойство cols объекта HTMLTextAreaElement определяет ширину текстовой
области (в символах).
Пример
Код в листинге 11.365 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство cols.
Листинг 11.365. Пример создания объекта HTMLTextAreaElement и
установки его свойства cols
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElementftextarea");
textAreaObj.cols = 25;
//-->
</script>
</html>
HTMLTextAreaElement.defaultValue
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
ftfm/7exfc4reaOb/.defaultValue
Описание
Свойство defaultValue объекта HTMLTextAreaElement представляет собой
содержимое текстовой области. Значение данного атрибута не изменяется при
изменении содержимого соответствующего элемента управления, однако,
модификация значения атрибута приводит к изменению содержимого элемента
управления.
Пример
Код в листинге 11.366 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство defaultValue.
Листинг 11.366. Пример создания объекта HTMLTextAreaElement и
установки его свойства defaultValue
<html>
<script language="JavaScript" type="text/javascript">
Глава 11. DOM HTML 1168
var textAreaObj = formObj.createElementftextarea");
textAreaObj.defaultValue = "текст по умолчанию";
//-->
</script>
</html>
HTMLTextAreaElement.disabled
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Mm/7exfc4reaOfo/.disabled
Описание
Свойство disabled объекта HTMLTextAreaElement используется для блокирования
экземпляра текстовой области.
Пример
Код в листинге 11.367 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство disabled.
Листинг 11.367. Пример создания объекта HTMLTextAreaElement и
установки его свойства disabled
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textArea.disabled = false;
//-->
</script>
</html>
HTMLTextAreaElement.focus()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
MmlTextAreaObj AocusQ
Описание
Метод focus() объекта HTMLTextAreaElement устанавливает фокус для данного
элемента управления.
Пример
Код в листинге 11.368 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и вызывает его метод focus().
Листинг 11.368. Пример создания объекта HTMLTextAreaElement и
вызова его метода focus()
<html>
1 169 Часть III. Справочник по JavaScript
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.focus();
</script>
</html>
HTMLTextAreaElement.form
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextAreaObj. form
Описание
Свойство form объекта HTMLTextAreaElement возвращает элемент FORM, в
котором находится данный элемент управления. Если элемент находится не в
контексте формы, возвращается Null.
Пример
Код в листинге 11.369 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и считывает значение его свойства form.
Листинг 11.369. Пример создания объекта HTMLTextAreaElement и
считывания значения его свойства form
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
if(textAreaObj. form, name == "emailForm")
processEmailForrn(textAreaObj.form);
//-->
</script>
</html>
HTMLTextAreaElement.name
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextAreaObj. name
Описание
Свойство name объекта HTMLTextAreaElement содержит имя элемента управления
или объекта, которое пересылается при передаче формы.
Пример
Код в листинге 11.370 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство name.
Глава 11. DOM HTML 1170
Листинг 11.370. Пример создания объекта HTMLTextAreaElement и
установки его свойства name
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.name = "blurb";
//-->
</script>
</html>
HTMLTextAreaElement. readonly
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextAreaObj. readonly
Описание
Свойство readonly объекта HTMLTextAreaElement указывает, доступно ли
содержимое данного элемента управления только в режиме считывания.
Пример
Код в листинге 11.371 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство readonly.
Листинг 11.371. Пример создания объекта HTMLTextAreaElement и
установки его свойства readonly
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.value = "Текст только для чтения";
textAreaObj.readonly = true;
//-->
</script>
</html>
HTMLTextAreaElement. rows
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextArea Obj. rows
Описание
Свойство rows объекта HTMLTextAreaElement определяет количество строк текста
в данной текстовой области.
1171 Часть III. Справочник по JavaScript
Пример
Код в листинге 11.372 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство rows.
Листинг 11.372. Пример создания объекта HTMLTextAreaElement и
установки его свойства rows
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.cols = 25;
textAreaObj. rows = 10;
//-->
</script>
</html>
HTMLTextAreaElement.select()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextAreaObj. select()
Описание
Метод select() объекта HTMLTextAreaElement выделяет содержимое данного
элемента TEXTAREA.
Пример
Код в листинге 11.373 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и вызывает его метод select().
Листинг 11.373. Пример создания объекта HTMLTextAreaElement и
вызова его метода select()
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.value = "текст в текстовой области";
textAreaObj.select();
//-->
</script>
</html>
HTMLTextAreaElement. tablndex
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextAreaObj: tablndex
Глава 11. DOM HTML 1172
Описание
Свойство tablndex объекта HTMLTextAreaElement содержит индекс, который
соответствует положению элемента в порядке обхода по клавише табуляции.
Пример
Код в листинге 11.374 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство tablndex.
Листинг 11.374. Пример создания объекта HTMLTextAreaElement и
установки его свойства tablndex
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.tablndex = 3;
//-->
</script>
</html>
HTMLTextAreaElement.type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTextAreaObj.type
Описание
Свойство type объекта HTMLTextAreaElement определяет тип данного элемента
управления. Для текстовой области это строка "textarea".
Пример
Код в листинге 11.375 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство type.
Листинг 11.375. Пример создания объекта HTMLTextAreaElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
display(textAreaObj.type);
//-->
</script>
</html>
HTMLTextAreaElement. value
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 1 73 Часть III. Справочник по JavaScript
Синтаксис
MmlTextAreaObj. value
Описание
Свойство value объекта HTMLTextAreaElement определяет текущее содержимое
данного элемента управления в агенте пользователя. Изменение данного атрибута
приводит к изменению содержимого элемента управления формы, но не изменяет
содержимое элемента. Если весь объем данных не помещаются в одной строке,
данные могут быть усечены до требуемого размера.
Пример
Код в листинге 11.376 с помощью объекта HTMLFormElement создает объект
HTMLTextAreaElement и устанавливает его свойство value.
Листинг 11.376. Пример создания объекта HTMLTextAreaElement и
установки его свойства value
<html>
<script language="JavaScript" type="text/javascript">
<!--
var textAreaObj = formObj.createElement("textarea");
textAreaObj.value = "Случайный текст";
//-->
</script>
</html>
HTMLTitleElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLTitleElement предназначен для представления названия документа.
Он наследует все свойства и методы объекта HTMLElement. Этот объект имеет
следующее свойство:
Элемент
text
Описание
Строка, содержащая название документа.
Пример
Код в листинге 11.377 реализует пример создания объекта HTMLTitleElement с
помощью объекта HTMLHeadElement.
Листинг 11.377. Пример создания объекта HTMLTitleElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("MoM HTML-документ");
htmlDoc.openO;
Глава 11. DOM HTML 1174
var headElement = htmlDoc.createElement("head");
vartitleElement = htmlDoc.createElement("title");
//-->
</script>
</html>
HTMLTitleElement.text
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlTitleObj.texl
Описание
Свойство title объекта HTMLTitleElement определяет название HTML-документа.
Пример
Код в листинге 11.378 с помощью объекта HTMLHeadElement создает объект
HTMlTitleElement и устанавливает его свойство text.
Листинг 11.378. Пример создания объекта HTMlTitleElement и
установки его свойства text
<html>
<script language="JavaScript" type="text/javascript">
<!--
var htmlDoc = HTMLDOMImplementation.createHTMLDocument("Mou HTML-документ");
htmlDoc.open();
var headElement = htmlDoc.createElement("head");
var titleElement = htmlDoc.createElement("title");
titleElement.text = "Мое новое название HTML-документа";
//-->
</script>
</html>
HTMLUListElement
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Основной объект DOM HTML.
Описание
Объект HTMLUListElement предназначен для представления неупорядоченного
списка элементов. Он наследует все свойства и методы объекта HTMLElement.
Свойства объекта HTMLUListElement перечислены в табл. 11.41.
Таблица 11.41. Свойства объекта HTMLUListElement
Элемент Описание
compact
Если имеет значение true, уменьшается расстояние между элементами
списка.
1 1 75 Часть III. Справочник по JavaScript
type | Определяет стиль данного списка элементов.
Пример
Код в листинге 11.379 реализует пример создания объекта HTMLUListElement с
помощью объекта HTMLBodyElement.
Листинг 11.379. Пример создания объекта HTMLUListElement
<html>
<script language="JavaScript" type="text/javascript">
<!--
var ulObj = bodyObj.CreateElement("ul");
//-->
</script>
</html>
HTMLUListElement. com pact
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlUListObj. com pact
Описание
Свойство compact объекта HTMLUListElement применяется для уменьшения
расстояния между элементами списка.
Пример
Код в листинге 11.380 с помощью объекта HTMLBody Element создает объект
HTMLUListElement и устанавливает его свойство compact.
Листинг 11.380. Пример создания объекта HTMLUListElement и
установки его свойства compact
<html>
<script language="JavaScript" type="text/javascript">
<!--
var ulObj = bodyObj.CreateElment("ul");
ulObj. compact = true;
//-->
</script>
</html>
HTMLUListElement.type
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
htmlUListObj.type
Описание
Свойство type объекта HTMLUListElement устанавливает стиль списка элементов.
Глава 11. DOM HTML 1176
Пример
Код в листинге 11.381 с помощью объекта HTMLBodyElement создает объект
HTMLUListElement и устанавливает его свойство type.
Листинг 11.381. Пример создания объекта HTMLUListElement и
установки его свойства type
<html>
<script language="JavaScript" type="text/javascript">
<!--
var ulObj = bodyObj.CreateElement("ul");
ulObj.type = "bullet";
//-->
</script>
</html>
Глава 12
События DOM
При создании модели событий DOM уровня 2 преследовались две основных задачи.
Первая задача заключалась в создании общей модели, которая бы позволила
использовать обработчики событий, управлять потоком событий, а также
предоставляла базовую информацию о событии. Вторая задача была связана с
обеспечением обратной совместимости с моделями событий DOM уровня 0 и уровня
1.
DocumentEvent
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
Объект Event DOM.
Описание
Объект DocumentEvent предоставляет механизм, с помощью которого пользователь
может создать событие Event, поддерживаемое в определенной реализации.
Ожидается, что интерфейс DocumentEvent будет реализован в том же объекте, что и
интерфейс Document в реализации, поддерживающей модель Event. Объект
DocumentEvent содержит следующий метод:
Тип
Метод
Элемент
createEventQ
Описание
Создает новое событие.
Пример
Код в листинге 12.1 реализует пример создания события мыши с помощью метода
createEvent() объекта DocumentEvent. После создания событие инициализируется с
помощью метода initEvent().
Листинг 12.1. Пример создания и инициализации события мыши с
помощью метода createEvent() объекта DocumentEvent
<html>
<script language="JScript">
<!--
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initEvent("MouseEvent", true, false);
//-->
</script>
</html>
DocumentEvent.createEvent()
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
1 1 78 Часть III. Справочник по JavaScript
Синтаксис
DocumentEvent.createEvent(mun_co6b/mtw)
Описание
Метод createEvent() объекта DocumentEvent создает новое событие указанного
типа типсобытия.
Пример
Код в листинге 12.2 реализует пример создания события мыши с помощью метода
createEvent() объекта DocumentEvent. После создания событие инициализируется
через метод initEvent().
Листинг 12.2. Пример создания и инициализации события мыши с
помощью метода createEvent() объекта DocumentEvent
<html>
<script language="JScript">
<!--
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initEvent("MouseEvent", true, false);
//-->
</script>
</html>
Event
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
Объект Event DOM.
Описание
Интерфейс Event используется для передачи обработчику события контекстной
информации о событии. Объект, в котором реализован интерфейс Event, как
правило, передается в первом аргументе обработчика событий. Более подробная
контекстная информация передается обработчикам событий за счет порождения
интерфейсом Event дополнительных интерфейсов, которые содержат информацию
непосредственно о типе соответствующего события. Эти дополнительные
интерфейсы также реализуются в объекте, который передается в обработчик
событий.
Интерфейс Event создается с помощью метода createEvent() объекта
DocumentEvent. Все константы, методы и свойства объекта Event перечислены в
табл. 12.1.
Таблица 12.1. Константы, методы и свойства объекта Event
Тип
Константа
Элемент
CAPTURING_PHASE
AT_TARGET
Описание
Фаза потока события, соответствующая
генерации события.
Фаза потока события, соответствующая его
оценке в целевом объекте.
Глава 12. События DOM 1179
Свойство
Метод
BUBBLING_PHASE
bubbles
cancelable
currentTarget
eventPhase
target
timeStamp
type
initEvent()
preventDefault()
stopPropagationQ
Фаза потока события, соответствующая
перемещению события вверх по иерархии
объектов.
Булево значение, которое указывает, может ли
данное событие перемещаться вверх по
иерархии объектов.
Булево значение, которое указывает, можно ли
данное событие отменить.
Объект EventTarget, указывающий текущий
целевой объект данного события.
Величина, указывающая фазу, на которой
находится данное событие.
Объект EventTarget, указывающий целевой
объект данного события.
Объект Date, указывающий время
возникновения данного события.
Строка, указывающая тип данного события.
Инициализирует данное событие.
Отменяет текущее событие, изменяя
нормальный ход обработки события.
Предотвращает распространение события.
Пример
Код в листинге 12.3 реализует пример создания события с помощью метода
createEvent() объекта DocumentEvent.
Листинг 12.3. Пример создания объекта Event
<html>
<script language="JScript">
<!--
var mouseEvent = DocumentEvent.createEventfMouseEvent");
mouseEvent.initMouseEvent();
//-->
</script>
</html>
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Event.type
Синтаксис
eventObj.type
Описание
Свойство type объекта Event содержит имя события.
Пример
Код в листинге 12.4 реализует пример создания функции EventListener, а также
проверки свойства type объекта Event с целью определения вида дальнейшей
обработки события.
1 1 80 Часть III. Справочник по JavaScript
Листинг 12.4. Пример считывания значения свойства type
объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
if(evt.type. == "MouseEvent") {
processMouseEvent(evt);
} else if(evt.type == "MutationEvent") {
processMutationEvent(evt);
</script>
</html>
Event.bubbles
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj. bubbles
Описание
Свойство bubbles объекта Event содержит булево значение, которое определяет,
может ли данное событие перемещаться вверх по иерархии объектов.
Пример
Код в листинге 12.5 реализует пример создания функции EventListener и проверки
свойства bubbles параметра evt с целью определения того, может ли событие
перемещаться вверх по иерархии объектов.
Листинг 12.5. Пример считывания значения свойства bubbles
объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
if(evt.bubbles)
handleBubblesEvent(evt);
}
//-->
</script>
</html>
Event.cancelable
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Глава 12. События DOM 1181
Синтаксис
eventObj. cancelable
Описание
Свойство cancelable объекта Event указывает на то, можно ли предотвратить
действие, выполняемое событием по умолчанию. Если действие можно отменить,
свойству cancelable присваивается значение true, в противном случае свойство
будет содержать false.
Пример
Код в листинге 12.6 реализует пример создания функции EventListener и проверки
свойства cancelable параметра evt с целью определения того, можно ли отменить
действие, выполняемое данным событием по умолчанию.
Листинг 12.6. Пример считывания значения свойства cancelable
объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
if(evt.cancelable)
handleCancelableEvent(evt);
</script>
</html>
Event.currentTarget
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj.currentTarget
Описание
Свойство currentTarget объекта Event определяет объект EventTarget, которому в
текущий момент времени направляется данное событие.
Пример
Код в листинге 12.7 реализует пример создания функции EventListener и проверки
свойства currentTarget объекта Event с целью определения способа обработки
данного события.
Листинг 12.7. Пример считывания значения свойства currentTarget
объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
var currentTarget = evt.currentTarget;
1 1 82 Часть III. Справочник по JavaScript
if(currentTarget.type == "TextArea")
handleTextAreaEvent(target);
</script>
</html>
Event.eventPhase
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj. eventPhase
Описание
Свойство eventPhase объекта Event указывает, на какой фазе находится событие:
Event.CAPTURING PHASE, Event.AT TARGET или Event.BUBBLING PHASE.
Пример
Код в листинге 12.8 реализует пример определения функции EventListener и
проверки свойства eventPhase параметра evt с целью определения текущей фазы
события.
Листинг 12.8. Пример считывания значения свойства eventPhase
объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
if(evt.eventPhase == Event.bubblingPhase)
processEventAtBubblingPhase(evt);
}
//-->
</script>
</html>
Event.initEvent()
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj.\г\\\Емеп\(тип_события, canBubble, cancelable)
Описание
Метод initEvent() объекта Event используется для инициализации значения объекта
Event, созданного с помощью метода createEvent() объекта DocumentEvent. Этот
метод может вызываться только перед планированием события с помощью метода
dispatchEvent(), хотя при необходимости его можно вызывать несколько раз. При
многократных вызовах приоритетным считается последний. При вызове метода
initEvent() из подкласса интерфейса Event изменяются только значения, указанные в
Глава 12. События DOM 11 83
методе, все остальные атрибуты остаются неизменными. Параметр тип события
представляет собой строку, содержащую тип события, параметр сапВиЬЫе
указывает, может ли данное событие передаваться вверх по иерархии объектов, а
параметр cancelable определяет, можно ли отменить действие, выполняемое
событием по умолчанию.
Пример
Код в листинге 12.9 реализует пример создания события мыши с помощью метода
CreateEvent() объекта DocumentEvent. После создания событие инициализируется с
помощью метода initEvent().
Листинг 12.9. Пример создания и инициализации события мыши с
помощью метода initEvent() объекта Event
<html>
<script language="JScript">
<!--
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initEvent("MouseEvent", true, false);
//-->
</script>
</html>
Event. preventDefault()
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj.preventDefault()
Описание
Если действие события можно отменить, метод preventDefault() объекта Event
используется для отмены события. Это означает, что действие, выполняемое в
конкретной реализации, при возникновении данного события выполняться не будет.
Если на любой фазе развития события вызывается метод preventDefault(), событие
отменяется. Действие, выполняемое этим событием по умолчанию, не выполняется.
Вызов данного метода для события, которое нельзя отменить, не оказывает никакого
влияния на дальнейшее выполнение события. После вызова метод preventDefault()
будет действовать на всем протяжении дальнейшего распространения события.
Метод preventDefault() можно вызывать на любой фазе потока события.
Пример
Код в листинге 12.10 реализует пример отмены действия, выполняемого событием,
заданным по умолчанию.
Листинг 12.10. Пример вызова метода initEvent() объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
if(evt.cancelable)
1 1 84 Часть III. Справочник по JavaScript
evt. preventDefault();
</script>
</html>
Event.stopPropagationQ
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj.stopPropagation()
Описание
Метод stopPropagation() объекта Event используется для предотвращения
дальнейшего распространения события в рамках его потока. Если один из
обработчиков событий вызывает этот метод, дальнейшее распространение события
прекращается. Перед остановкой развития события оно будет отправлено всем
обработчикам текущего целевого объекта. Метод stopPropagation() можно вызывать
на любой фазе потока события.
Пример
Код в листинге 12.11 реализует пример прекращения развития события на фазе
AT TARGET.
Листинг 12.11. Пример вызова метода stopPropagation() объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
if(evt.eventPhase = Event.AT_TARGET)
evt.stopPropagation();
</script>
</html>
Event.target
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj.target;
Описание
Свойство target объекта Event определяет объект EventTarget, которому
первоначально направляется данное событие.
Глава 12. События DOM 11 85
Пример
Код в листинге 12.12 реализует пример создания функции EventListener и проверки
свойства target объекта Event для определения того, каким образом необходимо
обрабатывать данное событие.
Листинг 12.12. Пример считывания значения свойства target
объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
var target = evt.target;
if(target.type == "TextArea")
handleTextAreaEvent(target);
</script>
</html>
Event.timeStamp
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventObj.timeStamp
Описание
Свойство timeStamp объекта Event используется для указания момента создания
данного события (в миллисекундах относительно начала текущей эпохи). Поскольку
в некоторых системах такая информация может не предоставляться, значение
свойства timeStamp может быть доступным не для всех событий. В этом случае
возвращается 0. Время отсчитывается от эпохи, которая началась в 00:00:00 1 января
1970 г. по Гринвичу. Свойство timeStamp возвращает объект Date.
Пример
Код в листинге 12.13 реализует пример создания обработчика событий, который
выполняет различные действия в зависимости от времени возникновения события.
Листинг 12.13. Пример считывания значения свойства timeStamp
объекта Event
<html>
<script language="JScript">
<!--
function GenericEventHandler(evt) {
if(evt.timeStamp < '11/24/2000')
handleTS(evt.timeStamp);
</script>
</html>
1 1 86 Часть III. Справочник по JavaScript
EventException
Синтаксис
Объект Event DOM.
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Описание
Объект EventException вызывается при соблюдении условия генерации исключения
во время выполнения методов других объектов Event DOM. Константы и свойства
объекта EventException перечислены в табл. 12.2.
Таблица 12.2. Константы и свойства объекта EventException
Тип
Константа
Свойство
Элемент
UNSPECIFIED_EVENT_TYPE_ERR
code
Описание
Исключение, которое
генерируется в случае, если тип
объекта Event не определен.
Определяет тип возникшей
ошибки.
Пример
Код в листинге 12.14 реализует пример перехвата объекта EventException и
считывания его свойства code.
Листинг 12.14. Пример объявления функции EventListener
<html>
<script language="JScript">
<!--
function MouseEventHandler(evt) {
if(evt.type == "MouseEvent") {
if(evt.clientX ==5) && (evt.clientY ==5)
showDialog();
}
try{
var htmlDocument =
HTMLDOMImplementation.createHTMLDocument("Mofl HTML-страница");
vartextArea = htmlDocument.createElement("TextArea");
textArea.addEventListener("MouseEvent", MouseEventHandler .false);
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initMouseEvent();
textArea.dispatchEvent(mouseEvent);
}catch(evt) {
if(evt.code == EventException.UNSPECIFIED_EVENT_TYPE_ERR)
handleUnexpectedEvent(evt);
</script>
Глава 12. События DOM 11 87
</html>
EventException.code
JavaScript 1 5+, JScript 5.0+,
Nav6+,IE5+
Синтаксис
eventExceptionObj.code
Описание
Свойство code объекта EventException содержит числовой код сгенерированного
исключения.
Пример
Код в листинге 12.15 реализует пример перехвата объекта EventException и
считывания значения его свойства code.
Листинг 12.15. Пример объявления функции EventListener
<html>
<script language="JScript">
<!--
function MouseEventHandler(evt) {
if(evt.type == "MouseEvent") {
if(evt.clientX ==5) && (evt.clientY ==5)
showDialog();
try{
var htmlDocument =
HTMLDOMImplementation.createHTMLDocument("Mofl HTML-страница");
vartextArea = htmlDocument.createElement("TextArea");
textArea.addEventListener("MouseEvent", MouseEventHandler .false);
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initMouseEvent();
textArea.dispatchEvent(mouseEvent);
}catch(evt) {
if(evt.code == EventException.UNSPECIFIED_EVENT_TYPE_ERR)
handleUnexpectedEvent(evt);
</script>
</html>
EventListener
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
1 1 88 Часть III. Справочник по JavaScript
Синтаксис
Объект Event DOM.
Описание
Объект EventListener представляет собой всего лишь функцию, которая в качестве
аргумента принимает объект типа Event. При регистрации обработчика событий его
тело будет выполняться каждый раз при возникновении указанного типа события.
Пример
Код в листинге 12.16 реализует пример объявления функции EventListener и ее
регистрации с объектом TextArea.
Листинг 12.16. Пример объявления функции EventListener
<html>
<script language="JScript">
<!--
function MouseEventHandler(evt) {
if(evt.type == "MouseEvent") {
if(evt.clientX ==5) && (evt.clientY ==5)
showDialogO;
var htmlDocument =
HTMLDOMImplementation.createHTMLDocument("Mc^ HTML-страница");
vartextArea = htmlDocument.createElement("TextArea");
textArea.addEventListener("MouseEvent", MouseEventHandler .false);
var mouseEvent = DocumentEvent.createEvent("MouseEvenf);
mouseEvent.initMouseEventO;
textArea.dispatchEvent(mouseEvent);
//-->
</script>
</html>
EventTarget
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
Объект Event DOM.
Описание
Указываемому в атрибуте target объекта Event объекту EventTarget реализация
DOM направляет событие. Когда событие достигает целевого объекта, вызываются
все соответствующие функции EventListener.
Все объекты Node реализации DOM, поддерживающей модель событий DOM
уровня 2 наследуются от объекта EventTarget. Все методы объекта EventTarget
перечислены в табл. 12.1. Методы объекта EventTarget приведены в табл. 12.3.
Глава 12. События DOM 11 89
Таблица 12.3. Методы объекта EventTarget
Тип
Метод
Элемент
addEventListener()
dispatchEvent()
removeEventListener()
Описание
Добавляет новый обработчик событий к данному
целевому объекту.
Направляет событие целевому объекту.
Удаляет указанный обработчик событий из
данного целевого объекта.
Пример
В листинге 12.17 приведен пример назначения целевого объекта и отправки
события.
Листинг 12.17. Пример назначения целевого объекта и отправки
объекта Event с помощью метода dispatchEvent() объекта EventTarget
<html>
<script language="JScript">
<!--
function MouseEventHandler(evt) {
if(evt.type == "MouseEvent") {
if(evt.clientX ==5) && (evt.clientY ==5)
showDialogO;
var htmlDocument =
HTMLDOMImplementation.createHTMLDocument("Mofl HTML-страница");
vartextArea = htmlDocument.createElement("TextArea");
textArea.addEventListener("MouseEvent", MouseEventHandler .false);
var mouseEvent = DocumentEvent.createEvent("MouseEvenf);
mouseEvent.initMouseEvent();
textArea.dispatchEvent(mouseEvent);
//-->
</script>
</html>
EventTarget.addEventListener()
Синтаксис
targetObj.addEventListener(mun, listener, useCapture);
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Описание
Метод addEventListener() объекта EventTarget добавляет к данному целевому
объекту новый обработчик событий. Параметр тип указывает тип ожидаемого
события, параметр listener — имя функции, вызываемой при возникновении события,
а параметр useCapture - это булево значение, которое указывает, можно ли
1 1 90 Часть III. Справочник по JavaScript
перехватить событие обработчиком события родительского объекта для данного
целевого объекта.
Пример
Код в листинге 12.18 представляет собой пример назначения целевого объекта и
отправки события.
Листинг 12.18. Пример назначения целевого объекта и
отправки объекта Event с помощью метода addEventl_istener()
объекта EventTarget.
<html>
<script language="JScript">
<!--
function MouseEventHandler(evt) {
if(evt.type == "MouseEvent") {
if(evt.clientX ==5) && (evt.clientY ==5)
showDialog();
var htmlDocument =
HTMLDOMImplementation.createHTMLDocument("MoH HTML-страница");
vartextArea = htmlDocument.createElement("TextArea");
textArea.addEventListener("MouseEvent", MouseEventHandler .false);
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initMouseEvent();
textArea.dispatchEvent(mouseEvent);
</script>
</html>
EventTarget.dispatchEvent()
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventTargetObj.dispatchEvent(eW);
Описание
Метод dispatchEvent() объекта EventTarget направляет событие, указанное в
параметре evt, данному объекту EventTarget.
Пример
Код в листинге 12.19 реализует пример применения метода dispatchEvent() для
перенаправления события мыши HTML-объекту TextArea.
Листинг 12.19. Пример перенаправления события MouseEvent с
помощью метода dispatchEvent() объекта EventTarget
<html>
Глава 12. События DOM 1191
<script language="JScript">
<!--
function MouseEventHandler(evt) {
if(evt.type == "MouseEvent") {
if(evt.clientX ==5) && (evt.clientY ==5)
showDialog();
var htmlDocument =
HTMLDOMImplementation.createHTMLDocument("Mofl HTML-страница");
vartextArea = htmlDocument.createElement("TextArea");
textArea.addEventListener("MouseEvent", MouseEventHandler .false);
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initMouseEventO;
textArea.dispatchEvent(mouseEvent);
//-->
</script>
</html>
EventTarget.removeEventListener()
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
eventListenerObj.removeListener(mitf7, listener, useCapture)
Описание
Метод removeListener() объекта EventTarget удаляет указанный обработчик
событий из списка обработчиков событий данного целевого объекта. Параметр тип
определяет тип перехватываемого события, параметр listener - имя функции,
вызываемой при возникновении события, а параметр useCapture - булево значение,
которое указывает можно ли перехватить событие обработчиком события
родительского объекта данного целевого объекта.
Пример
Код в листинге 12.20 реализует пример удаления обработчика событий объекта
TextArea HTML-документа.
Листинг 12.20. Пример удаления обработчика событий с помощью
метода removeEventListener() объекта EventTarget
<html>
<script language="JScript">
<!--
function MouseEventHandler(evt) {
if(evt.type == "MouseEvent") {
if(evt.clientX ==5) && (evt.clientY ==5)
showDialog();
1 1 92 Часть III. Справочник по JavaScript
var htmlDocument =
HTMLDOMImplementation.createHTMLDocument("MoH HTML-страница");
var textAreaList = htmlDocument.getElementsByTagName("TextArea");
var firstTextArea = textAreaList.index(O);
firstTextArea.removeEventListener("MouseEvent", MouseEventHandler, false);
//-->
</script>
</html>
MouseEvent
Синтаксис
Объект Event DOM.
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Описание
Объект MouseEvent предоставляет специфическую контекстную информацию,
связанную с событиями мыши. Он наследует все свойства и методы объекта
UIMethod. Методы и свойства объекта MouseEvent перечислены в табл. 12.4.
Таблица 12.4. Методы и свойства объекта MouseEvent
Тип
Свойство
Метод
Элемент
altKey
button
clientX
clientY
Ctrl Key
metaKey
relatedTarget
screenX
screenY
shiftKey
initMouseEvent()
Описание
Булево значение, которое указывает, была ли во
время возникновения данного события нажата
клавиша Alt.
Значение, которое указывает, была ли во время
возникновения данного события нажата кнопка
мыши.
Горизонтальная координата данного события мыши в
клиентской области.
Вертикальная координата данного события мыши в
клиентской области.
Булево значение, которое указывает, была ли при
возникновении данного события нажата клавиша Ctrl.
Булево значение, которое указывает, была ли при
возникновении данного события нажата клавиша
Meta.
Указывает вторичный целевой объект для данного
события мыши.
Горизонтальная координата данного события мыши.
Вертикальная координата данного события.
Булево значение, которое указывает, была ли во
время возникновения данного события нажата
клавиша Shift.
Инициализирует новый объект MouseEvent.
Глава 12. События DOM 11 93
Пример
Код в листинге 12.21 реализует пример создания события мыши с помощью метода
createEvent() объекта DocumentEvent. После создания событие инициализируется с
помощью метода initEvent().
Листинг 12.21. Пример создания и инициализации объекта
MouseEvent
<html>
<script language="JScript">
<!--
var mouseEvent = DocumentEvent.createEvent("MouseEvent");
mouseEvent.initMouseEvent("click", true, false,);
//-->
</script>
</html>
MouseEvent.altKey
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj.altKey
Описание
Свойство altKey объекта MouseEvent используется для определения того, была ли
во время возникновения события нажата клавиша Alt. На некоторых платформах эта
клавиша может иметь другие названия.
Пример
Код в листинге 12.22 реализует обработчик событий, который при возникновении
события "click" мыши определяет значение свойства altKey.
Листинг 12.22. Обработчик событий, определяющий значение
свойства altKey
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if((evt.type == "click") && (evt.altKey))
processClickAndCTRL(evt);
</script>
</html>
MouseEvent. button
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
1 1 94 Часть III. Справочник по JavaScript
Синтаксис
mouseEventObj. Button
Описание
При возникновении событий, вызванных нажатием или отпусканием кнопок мыши,
свойство button указывает на то, какая кнопка мыши изменила состояние. Значения
свойства button могут быть следующими: 0 для левой кнопки, 1 для средней кнопки,
если она имеется, и 2 для правой кнопки. Для мышей, настроенных на левшей,
значения свойства button отсчитываются справа налево.
Пример
Код в листинге 12.23 реализует пример обработчика событий, который при
возникновении события "click" мыши определяет, какая кнопка была нажата.
Листинг 12.23. Обработчик событий, определяющий значение
свойства button объекта MouseEvent
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if((evt.type == "click") && (evt.button == 0))
processLeftMouseClick(evt);
if((evt.type == "click") && (evt.button == 1))
processMiddleMouseClick(evt);
if((evt.type == "click") && (evt.button == 2))
processRightMouseClick(evt);
//-->
</script>
</html>
MouseEvent.clientX
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj.clientX
Описание
Свойство clientX объекта MouseEvent определяет горизонтальную координату
события мыши в клиентской области реализации DOM.
Пример
Код в листинге 12.24 определяет обработчик событий, который при возникновении
события "click" мыши определяет значение свойства clientX.
Листинг 12.24. Обработчик событий, определяющий значение
свойства clientX.
<html>
<script language="JScript">
Глава 12. События DOM 11 95
function handleMouseEvent(evt) {
if(evt.type == "click")
processXLocation(evt.clientX);
</script>
</html>
MouseEvent.clientY
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj. clientY
Описание
Свойство clientY объекта MouseEvent содержит вертикальную координату события
мыши в клиентской области реализации DOM.
Пример
Код в листинге 12.25 реализует обработчик событий, который при возникновении
события "click" мыши определяет значение свойства clientY.
Листинг 12.25. Обработчик событий, определяющий значение
свойства clientY
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if(evt.type == "click")
processXLocation(evt.clientY);
}
//-->
</script>
</html>
MouseEvent.ctrlKey
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj.ctrlKey
Описание
Свойство ctrlKey объекта MouseEvent используется для определения того, была ли
во время возникновения события нажата клавиша Ctrl.
Пример
Код в листинге 12.26 реализует обработчик событий, который при возникновении
события "click" мыши определяет значение свойства ctrlKey.
1 1 96 Часть III. Справочник по JavaScript
Листинг 12.26. Обработчик событий, определяющий значение
свойства Ctrl Key
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if((evt.type == "click") && (evt. Ctrl Key))
processClickAndCTRL(evt);
</script>
</html>
MouseEvent.initMouseEvent()
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj.initMouseEvent(mitf7, canBubble, cancelable, view, detail,
screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey,
metaKey, button, relatedTargef)
Описание
Метод initMouseEventO объекта MouseEvent используется для инициализации
значения объекта MouseEvent, созданного с помощью объекта DocumentEvent.
Этот метод должен вызываться только перед отправкой события MouseEvent с
помощью метода dispatchEvent(). Тем не менее, при необходимости его можно
вызывать несколько раз. В случае многократных вызовов приоритетным считается
последний.
В DOM уровня 2 поддерживаются следующие типы событий мыши: click, mouseup,
mousedown, mouseover, mousemove и mouseout.
Пример
Код в листинге 12.27 реализует пример создания события мыши с помощью метода
createEvent() объекта DocumentEvent. После создания события оно
инициализируется с помощью метода initEvent().
Листинг 12.27. Пример создания и инициализации события мыши
<html>
<script language="JScript">
<!--
var mouseEvent = DocumentEvent. CreateEvent("MouseEvent");
mouseEvent.initMouseEvent("click", true, false,);
//-->
</script>
</html>
MouseEvent.metaKey
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Глава 12. События DOM 11 97
Синтаксис
mouseEventObj.metaKey
Описание
Свойство metaKey объекта MouseEvent используется для определения того, была ли
во время возникновения события нажата клавиша МЕТА. На некоторых платформах
эта клавиша может иметь другие названия.
Пример
Код в листинге 12.28 реализует обработчик событий, который при возникновении
события "click" мыши определяет значение свойства metaKey.
Листинг 12.28. Обработчик событий, определяющий значение
свойства metaKey
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if((evt.type == "click") && (evt.metaKey))
processClickAndCTRL(evt);
//-->
</script>
</html>
MouseEvent. relatedTarget
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEvent. relatedTarget
Описание
Свойство relatedTarget объекта MouseEvent используется для указания вторичного
объекта EventTarget для данного события. В настоящее время этот атрибут
используется совместно с событием mouseover для указания объекта EventTarget,
из которого исходит указатель мыши, и указания объекта EventTarget, в который
входит указатель мыши.
Пример
Код в листинге 12.29 реализует пример считывания свойства relatedTarget объекта
MouseEvent.
Листинг 12.29. Обработчик событий, определяющий значение
свойства relatedTarget
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if(evt.relatedTarget == otherTarget
processSecondaryTarget(otherTarget);
1 1 98 Часть III. Справочник по JavaScript
</script>
</html>
MouseEvent.screenX
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj.screenX
Описание
Свойство screenX объекта MouseEvent содержит горизонтальную координату
события мыши относительно начала экранных координат.
Пример
Код в листинге 12.30 реализует обработчик событий, который при возникновении
события "click" мыши определяет значение свойства screenX.
Листинг 12.30. Обработчик событий, определяющий значение
свойства screenX
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if(evt.type == "click")
processXLocation(evt. ScreenX);
</script>
</html>
MouseEvent.screenY
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj. screenY
Описание
Свойство screenY объекта MouseEvent определяет вертикальную координату
события мыши относительно начала экранных координат.
Пример
Код в листинге 12.31 реализует обработчик событий, который при возникновении
события "click" мыши определяет значение свойства screenY.
Глава 12. События DOM 11 99
Листинг 12.31. Обработчик событий, определяющий значение
свойства screenY
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if(evt.type == "click")
processXLocation(evt. screenY);
</script>
</html>
MouseEvent.shiftKey
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mouseEventObj. shiftKey
Описание
Свойство shiftKey объекта MouseEvent используется для определения того, была ли
во время возникновения события нажата клавиша Shift.
Пример
Код в листинге 12.32 определяет обработчик событий, который при возникновении
события "click" мыши задает значение свойства shiftKey.
Листинг 12.32. Обработчик событий, определяющий значение
свойства shiftKey
<html>
<script language="JScript">
<!--
function handleMouseEvent(evt) {
if((evt.type == "click") && (evt.shiftKey))
processClickAndSHIFT(evt);
//-->
</script>
</html>
Mutation Event
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
Объект Event DOM.
Описание
Объект MutationEvent предназначен для сообщения об изменениях структуры
документа, включая изменения атрибутов Attr и Text. Следует отметить, что ни
1 200 Часть III. Справочник по JavaScript
одно из событий изменения нельзя отменить. Это вызвано тем фактом, что очень
сложно использовать существующие объекты DOM, которые вызывают изменения
документа в случае, если оно может произойти или не произойти вследствие отмены
соответствующего события. Несмотря на то что эта возможность покамест носит
теоретический характер, было решено ее оставить до внесения в DOM-модель
транзакций. Многие одиночные изменения дерева документа могут приводить к
возникновению многих событий изменения. Вместо того чтобы пытаться определять
порядок событий изменения по их влиянию на дерево документа, это полностью
оставляется на реализацию.
DOM-приложение может использовать метод hasFeature() объекта
DOMImplementation со значениями параметров MutationEvents и 2.0 соответственно
для определения того, поддерживается ли в реализации модуль событий изменения.
Константы, свойства и методы объекта MutationEvent перечислены в табл. 12.5.
Таблица 12.5. Константы, свойства и методы объекта MutationEvent
Тип
Константа
Свойство
Метод
Элемент
MODIFICATION
ADDITION
REMOVAL
attrChange
attrName
newValue
prevValue
relatedNode
initMutationEvent()
Описание
Указывает, произошло ли данное событие как
результат изменения.
Указывает, произошло ли данное событие как
результат добавления.
Указывает, произошло ли данное событие как
результат удаления.
Содержит атрибут, измененный данным событием.
Имя атрибута, соответствующего данному
событию.
Новое значение данного события.
Предыдущее значение данного события.
Узел, соответствующий данному событию.
Инициализирует новый объект MutationEvent.
Пример
Код в листинге 12.33 реализует пример создания события изменения с помощью
метода createEvent() объекта DocumentEvent. После создания событие
инициализируется с помощью метода initEvent().
Листинг 12.33. Пример создания и инициализации события
изменения
<html>
<script language="JScript">
<!--
var mutationEvent = DocumentEvent.createEventfMutationEvent");
mutationEvent.initEvent("DOMNodelnserted", true, false, relatedNode,
prevValue, newValue, attrName, attrChange);
//-->
</script>
</html>
Глава 12. События DOM 1201
MutationEvent.relatedNode
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mutationEventObj.relatedNode
Описание
Свойство relatedNode объекта Mutation Event используется для указания
вторичного узла, соответствующего данному событию изменения. Например, если
узлу направляется событие изменения, которое указывает на модификацию
родительского узла, свойство relatedNode содержит измененный родительский узел.
Если событие направляется поддереву и указывает об изменении узла данного
поддерева, свойство relatedNode содержит измененный узел. В случае
возникновения событие DOMAttrModified указывает на измененный, добавленный
или удаленный узел Attr.
Пример
Код в листинге 12.34 реализует пример создания объекта изменения с помощью
метода createEvent() объекта DocumentEvent. После создания событие
инициализируется с помощью метода initEvent().
Листинг 12.34. Пример создания и инициализации события
изменения
<html>
<script language="JScript">
<!--
var mutationEvent = DocumentEvent.createEvent("MutationEvent");
mutationEvent.initEvent("DOMNodelnserted", true, false, relatedNode,
prevValue, newValue, attrName, attrChange);
//-->
</script>
</html>
MutationEvent.attrChange
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mutationEvent.attrChange
Описание
Свойство attrChange объекта MutationEvent указывает тип изменения, которое
вызвало данное событие DOMAttrModified. Свойство может содержать одно из
следующих значений: MODIFICATION, ADDITION или REMOVAL.
1 202 Часть III. Справочник по JavaScript
Пример
Код в листинге 12.35 определяет тип изменения атрибута, считывая значение
свойства attrChange, и, в зависимости от типа изменения, выполняет
соответствующую обработку события.
Листинг 12.35. Пример считывания значения свойства attrChange
<html>
<script language="JScript">
<!--
function handleMutation(evt) {
if(evt.attrChange == MutationEvent.ADDITION)
handleTextAreaAddition(evt);
//-->
</script>
</html>
Mutation Event.attrName
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mutationEvent.attrName
Описание
Свойство attrName объекта MutationEvent содержит имя измененного узла Attr в
событии DOMAttrModified.
Пример
Код в листинге 12.36 считывает свойство attrChange и определяет, был ли изменен
атрибут TextArea. Если этот атрибут был изменен, производится соответствующая
обработка события.
Листинг 12.36. Пример считывания свойства attrName
<html>
<script language="JScript">
<!--
function handleMutation(evt) {
if(evt.attrName == "TextArea")
handleTextAreaModification(evt);
//-->
</script>
</html>
Mutation Event. initMutationEvent()
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mutationEventObj.initMutationEvent(mun, canBubble, cancelable,
relatedNode, prevValue, newValue, attrName, attrChange)
Глава 12. События DOM 1203
Описание
Метод initMutationEvent() используется для инициализации значения события
MutationEvent, созданного с помощью объекта DocumentEvent. Этот метод может
вызываться только перед отправкой события MutationEvent с помощью метода
dispatchEvent(), хотя при необходимости его можно вызывать несколько раз. При
многократных вызовах приоритетным считается последний.
Параметр тип может иметь следующие значения: DOMSubTreeModified,
DOMNodelnserted и DOMNodeRemoved.
Пример
Код в листинге 12.37 реализует пример создания события изменения с помощью
метода createEvent() объекта DocumentEvent. После создания событие
инициализируется с помощью метода initEvent().
Листинг 12.37. Пример создания и инициализации
объекта MutationEvent
<html>
<script language="JScript">
<!--
var mutationEvent = DocumentEvent.createEvent("MutationEvent");
mutationEvent.initMutationEvent
("DOMNodelnserted", true, false, relatedNode,
prevValue, newValue, attrName, attrChange);
//-->
</script>
</html>
MutationEvent.newValue
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mutationEventObj.newValue
Описание
Свойство newValue объекта MutationEvent содержит новое значение узла Attr в
событиях DOMAttrModified и узла CharacterData - в событиях
DOMCharDataModified.
Пример
Код в листинге 12.38 считывает свойства prevValue и newValue и определяет, был
ли действительно изменен атрибут Attr.
Листинг 12.38. Пример сравнения свойств prevValue и newValue
<html>
<script language="JScript">
<!--
function handleMutation(evt) {
if(evt.prevValue == evt.newValue)
handleUnchangedEvent(evt);
1 204 Часть III. Справочник по JavaScript
</script>
</html>
Mutation Event. prevValue
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
mutationEventObj.prevValue
Описание
Свойство prevValue содержит старое значение узла Attr в событиях
DOMAttrModified и узла CharacterData - в событиях DOMCharDataModified.
Пример
Код в листинге 12.39 считывает свойства prevValue и newValue и определяет, был
ли действительно изменен атрибут Attr.
Листинг 12.39. Пример сравнения свойств prevValue и newValue
<html>
<script language="JScript">
<!--
function handleMutation(evt) {
if(evt.prevValue == evt.newValue)
handleUnchangedEvent(evt);
//-->
</script>
</html>
UIEvent
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
Объект Event DOM.
Описание
Объект UIEvent предоставляет специфическую контекстную информацию событий
пользовательского интерфейса. Он наследует все свойства и методы объекта Event.
Свойства и методы объекта UIEvent перечислены в табл. 12.6.
Таблица 12.6. Свойства и методы объекта UIEvent
Тип
Свойство
Метод
Элемент
detail
view
initUIEventQ
Описание
Информация о данном событии.
Представляет абстрактный вид события UIEvent.
Инициализирует новый объект UIEvent.
Глава 12. События DOM 1205
Пример
Код в листинге 12.40 реализует пример создания события пользовательского
интерфейса с помощью метода createEvent() объекта DocumentEvent. После
создания событие инициализируется с помощью метода initUIEvent().
Листинг 12.40. Пример создания и инициализации события
пользовательского интерфейса с помощью метода initUIEvent()
объекта UlEvent
<html>
<script language="JScript">
<!--
var uiEvent = DocumentEvent.createEvent("UIEvent");
uiEvent.initUIEvent("DOMFocusOut", true, false,);
//-->
</script>
</html>
UlEvent.detail
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
uiEventObj. detail
Описание
Свойство detail объекта UlEvent содержит подробные данные об объекте Event,
варьирующиеся в зависимости от типа события.
Пример
Код в листинге 12.41 реализует пример создания события пользовательского
интерфейса с помощью метода createEvent() объекта DocumentEvent. После
создания событие инициализируется через метод initEvent(). После инициализации
выполняется запись в свойство detail.
Листинг 12.41. Пример записи в свойство detail объекта UlEvent
<html>
<script language="JScript">
<!--
var uiEvent = DocumentEvent.createEvent("UIEvent");
uiEvent.initUIEvent("DOMFocusOut", true, false,);
uiEvent.detail =
//-->
</script>
</html>
UlEvent.initUIEventO
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
1 206 Часть III. Справочник по JavaScript
Синтаксис
uiEventObj.initUIEvent(A77un, canBubble, cancelable, view, detail)
Описание
Метод initUIEvent() объекта UIEvent используется для инициализации значения
UIEvent, созданного с помощью объекта DocumentEvent. Этот метод может
вызываться только перед отправкой события UIEvent с помощью метода
dispatchEvent(), хотя при необходимости его можно вызывать несколько раз. В
случае многократных вызовов приоритетным считается последний.
Параметр тип может иметь следующие значения: DOMFocusIn, DOMFocusOut и
DOMActivate. Параметр canBubble указывает, может ли данное событие
перемещаться вверх по иерархии объектов, параметр cancelable определяет, можно
ли данное событие отменить, параметр view — это объект AbstractView, в котором
произошло событие UIEvent, а параметр detail хранит число, которое представляет
собой тип подробной информации о данном конкретном событии UIEvent.
Пример
Код в листинге 12.42 реализует пример создания и инициализации объекта UIEvent
с помощью метода initUIEvent().
Листинг 12.42. Пример создания и инициализации события
пользовательского интерфейса
<html>
<script language="JScript">
<!--
var mouseEvent = DocumentEvent.createEvent("UIEvent");
mouseEvent.initUIEvent("DOMFocusOut", true, false,);
//-->
</script>
</html>
UlEvent.view
JavaScript 1.5+, JScript 5.0+
Nav6+,IE5+
Синтаксис
uiEventObj.view
Описание
Свойство view объекта UIEvent указывает объект AbstractView, в котором
произошло данное событие.
Пример
Код в листинге 12.43 реализует пример записи свойства view объекта UIEvent.
Листинг 12.43. Пример создания и инициализации события
пользовательского интерфейса
<html>
<script language="JScript">
Глава 12. События DOM 1207
var uiEvent = DocumentEvent.CreateEvent("UIEvent");
uiEvent.lnitUIEvent("DOMFocusOut", true, false,);
uiEvent.view = "display";
//-->
</script>
</html>
Глава 13
Каскадные списки стилей DOM
Counter
Синтаксис
Объект каскадных списков стилей DOM.
Описание
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Таблица 13.1. Свойства объекта Counter.
Тип
Свойство
Элемент
identifier
listStyle
separator
Описание
Свойство, доступное только для чтения, имеющее тип
String. Представляет собой идентификатор счетчика.
Свойство, доступное только для чтения, имеющее тип
String. Представляет собой стиль списка.
Свойство, доступное только для чтения, имеющее тип
String. Представляет собой разделитель вложенного
счетчика.
Пример
Код в листинге 13.1 реализует пример считывания свойств объекта Counter.
Листинг 13.1. Пример считывания свойств объекта Counter
<html>
<script language="JScript">
<!--
var counterObj = primitiveValObj.getCounterValue();
var idVal = counterObj.identifier;
var listStyleVal = counterObj.listStyle;
var separatorVal = counterObj.separator;
//-->
</script>
</html>
Counter.identifier
Синтаксис
CounterObj.identifier
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 209 Часть III. Справочник по JavaScript
Описание
Свойство, доступное только для чтения, которое содержит идентификатор объекта
Counter, применяемый для идентификации данного счетчика.
Пример
Код в листинге 13.2 реализует пример считывания свойства identifier объекта
Counter.
Листинг 13.2. Пример считывания свойства identifier объекта Counter
<html>
<script language="JScript">
<!--
var counterObj = primitiveValObj.getCounterValue();
var idVal = counterObj.identifier;
var listStyleVal = counterObj.listStyle;
var separatorVal = counterObj.separator;
//-->
</script>
</html>
Counter.listStyle
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
counterObj.listStyle
Описание
Свойство listStyle объекта Counter, доступное только для чтения, имеет тип String.
Оно используется для описания стиля списка.
Пример
Код в листинге 13.3 реализует пример считывания свойства listStyle объекта
Counter.
Листинг 13.3. Пример считывания значения свойства listStyle
объекта Counter
<html>
<script language="JScript">
<!--
var counterObj = primitiveValObj.getCounterValue();
var idVal = counterObj.identifier;
var listStyleVal = counterObj.listStyle;
var separatorVal = counterObj.separator;
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1210
Counter.separator
JavaScript 1 .5+, JScript 5+
Nav6+,IE5+
Синтаксис
Counter.separator
Описание
Свойство separator объекта Counter, доступное только для чтения, имеет тип
String. Используется в качестве разделителя вложенных счетчиков.
Пример
Код в листинге 13.4 приведен пример считывания значения свойства separator
объекта Counter.
Листинг 13.4. Пример считывания значения свойства separator
объекта Counter
<html>
<script language="JScript">
<!--
var counterObj = primitiveValObj.getCounterValue();
var idVal = counterObj.identifier;
var listStyleVal = counterObj.listStyle;
var separatorseparatorVal = rectObj. separator;
//-->
</script>
</html>
CSSCharsetRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSCharsetRule представляет собой правило @charset объекта
CSSStyleSheet. Он является расширением объекта CSSRule. Объект
CSSCharsetRule имеет следующее свойство:
Элемент
Описание
encoding
Свойство, доступное только для чтения, имеющее тип String.
Представляет собой список типов содержимого данного правила.
Пример
Код в листинге 13.5 реализует пример считывания значения свойства encoding
объекта CSSCharsetRule.
Листинг 13.5. Пример считывания значения свойства encoding
<html>
1211 Часть III. Справочник по JavaScript
<script language="JScript">
<!--
document.writewrite(cssCharsetRuleObj);
//-->
</script>
</html>
CSSCharsetRule.encoding
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssCharsetRuleObj.encoding
Описание
Свойство encoding объекта CSSCharsetRule, доступное только для чтения, имеет
тип String. Оно содержит информацию о кодировке данного правила. Свойство
encoding может привести к генерации исключения DOMException со значениями
NO MODIFICATION ALLOWED ERR или SYNTAX ERR.
Пример
В листинге 13.6 приведен пример считывания свойства encoding объекта
CSSCharsetRule.
Листинг 13.6. Пример считывания свойства encoding
<html>
<script language="JScript">
<!--
document.write(cssCharsetRuleObj.encoding);
//-->
</script>
</html>
CSSFontFaceRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSFontFaceRule представляет собой набор описаний шрифтов в объекте
CSSStyleSheet. Он наследует все свойства и методы объекта CSSRule. Объект
CSSFontFaceRule имеет следующее свойство:
Элемент
Описание
style
Свойство только для чтения, имеющее тип CSSStyleDeclaration.
Представляет собой блок объявлений правила.
Глава 13. Каскадные списки стилей РОМ 1212
Пример
Код в листинге 13.7 реализует пример установки свойства style объекта
CSSFontFaceRule.
Листинг 13.7. Пример установки свойства style
<html>
<script language="JScript">
<!--
cssFontFaceRuleObj.style.face = "courier";
//-->
</script>
</html>
CSSFontFaceRule.style
JavaScript 1.5+, JScript 5+
Nav6+, IE5+JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssFontFaceRuleObj.style
Описание
Свойство style, доступное только для чтения, имеет тип String. Содержит блок
объявлений правила.
Пример
В листинге 13.8 приведен пример установки свойства style объекта
CSSFontFaceRule.
Листинг 13.8. Пример установки свойства style
<html>
<script language="JScript">
<!--
cssFontFaceRuleObj.style.face = "ariel";
//-->
</script>
</html>
CSSImportRule
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSImportRule представляет собой правило @import объекта
CSSStyleSheet. Он наследует все методы и свойства объекта CSSRules. Свойства
объекта CSSImportRule перечислены в табл. 13.2.
1213 Часть III. Справочник по JavaScript
Таблица 13.2. Свойства объекта CSSImportRule
Элемент
href
media
stylesheet
Описание
Свойство, доступное только для чтения, имеющее тип String. Определяет
расположение импортируемого списка стилей в текстовом виде.
Свойство, доступное только для чтения, имеющее тип MediaList.
Представляет собой список типов содержимого, для которых может
использоваться данный список стилей.
Свойство, доступное только для чтения, имеющее тип String.
Представляет собой стиль списка, к которому относится данное правило.
Пример
Код в листинге 13.9 реализует пример считывания свойства href объекта
CSSImportRule.
Листинг 13.9. Пример считывания свойства href
<html>
<script language="JScript">
<!--
document.writewrite(csslmportRuleObj.href);
//-->
</script>
</html>
CSSImportRule. href
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
csslmportRuleObj.href
Описание
Свойство href объекта CSSImportRule, доступное только для чтения, имеет тип
String. Оно содержит расположение импортируемого списка стилей в текстовом
виде. В значение свойства не включается спецификатор URI.
Пример
Код в листинге 13.10 реализует пример считывания значения свойства href объекта
CSSImportRule.
Листинг 13.10. Пример считывания значения свойства href
<html>
<script language="JScript">
<!--
document.write(csslmportRuleObj.href);
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1214
CSSImportRule.media
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
csslmportRuleObj. media
Описание
Свойство media объекта CSSImportRule, доступное только для чтения, имеет тип
MediaList. Оно представляет собой список типов содержимого, к которым может
применяться данный список стилей.
Пример
Код в листинге 13.11 реализует пример считывания свойства media объекта
CSSImportRule.
Листинг 13.11. Пример считывания свойства media
<html>
<script language="JScript">
<!--
document.write(csslmportRuleObj. media);
//-->
</script>
</html>
CSSImportRule.styleSheet
JavaScript 1.5+, JScript 5+
Nav6+, IE5+JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
csslmportRuleObj.styleSheet
Описание
Свойство styleSheet объекта CSSImportRule, доступное только для чтения, имеет
тип CSSStyleSheet. Оно представляет собой загруженный список стилей данного
правила. Если этим правилом список стилей не загружен, возвращается Null.
Пример
В листинге 13.12 приведен пример считывания свойства styleSheet объекта
CSSImportRule.
Листинг 13.12. Пример считывания значения свойства styleSheet
<html>
<script language="JScript">
<!--
document. write(csslmportRuleObj. styleSheet);
//-->
</script>
</html>
1215 Часть III. Справочник по JavaScript
CSSMediaRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSMediaRule представляет собой целевые типы содержимого для набора
правил. Объект CSSMediaRule является расширением объекта CSSRule. Методы и
свойства объекта CSSMediaRule перечислены в табл. 13.3.
Таблица 13.3. Методы и свойства объекта CSSMediaRule
Тип
Свойство
Метод
Элемент
cssRules
media
deleteRule()
insertRuleQ
Описание
Свойство, доступное только для чтения, имеющее тип
CSSRuleList. Содержит все правила для данного блока
содержимого.
Свойство, доступное только для чтения, имеющее тип
MediaList. Содержит список типов содержимого для
данного правила.
Этот метод не возвращает значений и используется для
удаления правила из блока содержимого.
Этот метод возвращает число, которое является
индексом добавленного правила в коллекции правил.
Пример
Код в листинге 13.13 устанавливает тип содержимого объекта CSSMediaRule.
Листинг 13.13. Пример установки типа содержимого объекта
CSSMediaRule
<html>
<script language="JScript">
<!-
mediaRuleObj. media = "screen";
//-->
</script>
</html>
CSSMediaRule.cssRules
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssMediaRuleObj. cssRules
Описание
Свойство cssRules объекта CSSMediaRule, доступное только для чтения, имеет тип
CSSRuleList. Оно содержит список правил CSS данного блока содержимого.
Глава 13. Каскадные списки стилей РОМ 1216
Пример
Код в листинге 13.14 представляет собой пример выполнения итераций по свойству
cssRules с обработкой каждого элемента.
Листинг 13.14. Пример выполнения итераций по свойству cssRules
<html>
<script language="JScript">
<!--
var ruleList = cssMediaRuleObj.cssRules;
var i = 0;
while( i < ruleList.length) {
processRule(ruleList.item(i);
</script>
</html>
CSSMediaRule.deleteRule()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssMediaRuleObj.deleteRule(uH<3e/fc)
Описание
Метод deleteRule() объекта CSSMediaRule в качестве аргумента использует
величину индекс. Метод удаляет правило из данного блока содержимого. Метод
deleteRule() может привести к генерации исключения DOMException со значениями
NO_MODIFICATION_ALLOWED_ERR илиSYNTAX_ERR.
Пример
Код в листинге 13.15 реализует пример удаления правила каскадного списка стилей
из блока содержимого.
Листинг 13.15. Пример удаления правила каскадного списка стилей
с помощью метода deleteRule()
<html>
<script language="JScript">
<!--
cssMediaRule.deleteRule(i);
//-->
</script>
</html>
CSSMediaRule.insertRule()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
1217 Часть III. Справочник по JavaScript
Синтаксис
cssmediaRuleObj.insertRule(npaettf7o, индекс)
Описание
Метод insertRuleO объекта CSSMediaRule в качестве аргумента принимает строку
правило и число индекс и возвращает индекс добавленного правила. Метод
insertRuleO может привести к генерации исключения DOMException со значениями
NO_MODIFICATION_ALLOWED_ERR или SYNTAX_ERR.
Пример
В листинге 13.16 приведен пример вставки в блок содержимого нового правила.
Листинг 13.16. Пример включения в блок содержимого нового
правила с помощью метода insertRuleO
<html>
<script language="JScript">
<!--
cssMediaRuleObj.insertRule("media:screen", 1);
//-->
</script>
</html>
CSSMediaRule.media
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssMediaRuleObj. media
Описание
Свойство media объекта CSSMediaRule, доступное только для чтения, имеет тип
MediaList. Оно представляет собой список типов содержимого для данного правила.
Пример
Код в листинге 13.17 реализует пример установки свойства media объекта
CSSMediaRule.
Листинг 13.17. Пример установки свойства media
<html>
<script language="JScript">
<!--
mediaRuleObj. media = "handheld";
//-->
</script>
</html>
CSSPageRule
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Глава 13. Каскадные списки стилей РОМ 1218
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSPageRule представляет собой правило @page объекта CSSStyleSheet.
Он является расширением объекта CSSRule. Свойства объекта CSSPageRule
перечислены в табл. 13.4.
Таблица 13.4. Свойства объекта CSSPageRule
Элемент
selectorText
style
Описание
Свойство, доступное только для чтения, имеющее тип String.
Представляет собой селектор страницы данного правила в текстовом
виде.
Свойство, доступное только для чтения, имеющее тип
CSSStyleDeclaration. Представляет собой блок объявлений данного
правила.
Пример
Код в листинге 13.18 реализует пример установки свойства selectorText объекта
CSSPageRule.
Листинг 13.18. Пример установки свойства selectorText
<html>
<script language="JScript">
<!--
cssPageRuleObj.selectorText = "текст селектора";
//-->
</script>
</html>
CSSPageRule.selectorText
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
CSSPageRule.selectorText
Описание
Свойство selectorText объекта CSSPageRule, доступное только для чтения, имеет
тип String. Оно представляет собой селектор страницы в текстовом виде. Свойство
selectorText может привести к генерации исключения DOM Exception со значениями
NO MODIFICA TION ALLOWED ERR или SYNTAX ERR.
Пример
Код в листинге 13.19 реализует пример установки свойства selectorText объекта
CSSPageRule.
Листинг 13.19. Пример установки свойства selectorText
<html>
1219 Часть III. Справочник по JavaScript
<script language="JScript">
<!--
cssPageRuleObj.selectorText = "выделение";
</script>
</html>
CSSPageRule.style
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssPageRuleObj.style
Описание
Свойство style объекта CSSPageRule, доступное только для чтения, имеет тип
CSSStyleDeclaration. Оно представляет собой блок объявлений данного правила.
Пример
Код в листинге 13.20 реализует пример использования свойства style объекта
CSSPageRule.
Листинг 13.20. Пример использования свойства style
<html>
<script language="JScript">
<!--
cssPageRuleObj.style.size = 0";
//-->
</script>
</html>
CSSPrimitiveValue
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSPrimitiveValue служит для представления объекта CSSValue. Он может
использоваться для определения и установки значения конкретного свойства стиля.
Константы, свойства и методы объекта CSSPrimitiveValue перечислены в табл. 13.5.
Таблица 13.5. Константы, свойства и методы объекта CSSPrimitiveValue
Тип
Константа
Элемент
CSS_ATTR
CSS_CM
Описание
Константа типа Number. Ее значением является
число 22, соответствующее функции атрибута.
Константа типа Number. Ее значением является
число 6, определяющее размер.
Глава 13. Каскадные списки стилей РОМ 1 220
CSS COUNTER
CSS DEG
CSS DIMENSION
CSS EMS
CSS EXS
CSS GRAD
CSS HZ
CSS IDENT
CSS IN
CSS KHZ
CSS MM
CSS MS
CSS NUMBER
CSS PC
CSS PERCENTAGE
CSS PT
CSS PX
CSS RAD
CSS RECT
CSS RGBCOLOR
CSS S
CSS STRING
CSS UNKNOWN
CSS URI
Константа типа Number. Ее значением является
число 23, соответствующее счетчику или
функции счетчика.
Константа типа Number. Ее значением является
число 11, соответствующее углу.
Константа типа Number. Ее значением является
число 18, соответствующее размерности.
Константа типа Number. Ее значением является
число 3, определяющее длину.
Константа типа Number. Ее значением является
число 4, соответствующее длине.
Константа типа Number. Ее значением является
число 13, соответствующее углу.
Константа типа Number. Ее значением является
число 16, соответствующее частоте.
Константа типа Number. Ее значением является
число 21, соответствующее идентификатору.
Константа типа Number. Ее значением является
число 8, соответствующее длине.
Константа типа Number. Ее значением является
число 17, соответствующее частоте.
Константа типа Number. Ее значением является
число 7, соответствующее длине.
Константа типа Number. Ее значением является
число 14, соответствующее значению времени.
Константа типа Number. Ее значением является
число 1, соответствующее простому числу.
Константа типа Number. Ее значением является
число 10, соответствующее длине.
Константа типа Number. Ее значением является
число 2, соответствующее величине,
задаваемой в процентах.
Константа типа Number. Ее значением является
число 9, соответствующее длине.
Константа типа Number. Ее значением является
число 5, соответствующее длине.
Константа типа Number. Ее значением является
число 12, соответствующее углу (в радианах).
Константа типа Number. Ее значением является
число 24, соответствующее функции Rect.
Константа типа Number. Ее значением является
число 25, соответствующее цвету в формате
RGB.
Константа типа Number. Ее значением является
число 15, соответствующее значению времени.
Константа типа Number. Ее значением является
число 19, соответствующее строке.
Константа типа Number. Ее значением является
число 0, соответствующее неизвестному
значению.
Константа типа Number. Ее значением является
число 20, соответствующее URI.
1 221 Часть III. Справочник по JavaScript
Свойство
Метод
primitiveType
getCounterValueO
getFloatValue()
getRectValue()
getRGBColorValue()
getStringValue()
setFloatValue()
setStringValue()
Свойство, доступное только для чтения,
имеющее тип Number. Представляет собой тип,
заданный с помощью одной из констант.
Этот метод возвращает объект Counter.
Этот метод возвращает число с плавающей
десятичной точкой для указанной единицы.
Этот метод возвращает объект Rect.
Этот метод возвращает объект RGBColor.
Этот метод возвращает объект String, который
представляет собой строковое представление
указанной единицы.
Этот метод не имеет возвращаемого значения.
Устанавливает число с плавающей запятой для
указанной единицы.
Этот метод не имеет возвращаемого значения.
Устанавливает строковое значение для
указанной единицы измерения.
Пример
Код в листинге 13.21 представляет собой пример использования метода
getRGBColor() объекта CSSPrimitiveValue.
Листинг 13.21. Пример использования метода getRGBColor()
<html>
<script language="JScript">
<!--
var rgbColorObj = primitiveValObj.getRGBColor();
//-->
</script>
</html>
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
CSSPrimitiveValue.getCounterValueO
Синтаксис
cssPrimitiveValueObj.getCounterValueO
Описание
Метод getCounterValueO объекта CSSPrimitiveValue не принимает аргументов. Он
возвращает объект Counter, который представляет собой значение счетчика. Метод
getCounterValueO может приводить к генерации исключения DOM Exception со
значением INVALID ACCESS ERR.
Пример
Код в листинге 13.22 представляет собой пример определения значения счетчика для
объекта CSSPrimitiveValue.
Листинг 13.22. Пример считывания значения счетчика с помощью
метода getCounterValueO
<html>
Глава 13. Каскадные списки стилей РОМ 1222
<script language="JScript">
<!--
var counterObj = cssPrimitiveValue.getCounterValue();
//-->
</script>
</html>
CSSPrimitiveValue.getFloatValue()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssPrimitiveValueObj.getFloatValue(untfrype)
Описание
Метод getFloatValue() объекта CSSPrimitiveValue в качестве аргумента принимает
параметр unitType и возвращает значение типа float. Метод getFloatValue() может
привести к генерации исключения DOMException со значением
INVALID ACCESS ERR.
Пример
Код в листинге 13.23 реализует пример назначения целевого объекта события и
вызова события.
Листинг 13.23. Пример считывания числа с плавающей запятой с
помощью метода getFloatValue() объекта CSSPrimitiveValue
<html>
<script language="JScript">
<!--
var floatVal = cssPrimitiveValue.getFloatValue
(CSSPrimitiveValue.CSS_PERCENTAGE);
//-->
</script>
</html>
CSSPrimitiveValue.getRectValue()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssPrimitiveValueObj.getRectValue()
Описание
Метод getRectValue() объекта CSSPrimitiveValue не принимает аргументов. Он
возвращает объект Rect, который представляет собой значение Rect. Метод
getRectValue() может приводить к генерации исключения DOMException со
значением INVALID ACCESS ERR.
1 223 Часть III. Справочник по JavaScript
Пример
Код в листинге 13.24 приводится пример определения значения Rect для объекта
CSSPrimitiveValue.
Листинг 13.24. Пример считывания значения Rect с помощью
метода getCounterValue() объекта CSSPrimitiveValue
<html>
<script language="JScript">
<!--
var rectObj = cssPrimitiveValue.getRectValue();
//-->
</script>
</html>
CSSPrimitiveValue.getRGBColorValue()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssPrimitiveValueObj.getRGBColorValueO
Описание
Метод getRGBColorValueO объекта CSSPrimitiveValue не принимает аргументов.
Он возвращает объект RGBColor, который представляет собой значение цвета,
определенное в формате RGB. Метод getRGBColorValueO может приводить к
генерации исключения DOMException со значением INVALID ACCESS ERR.
Пример
Код в листинге 13.25 реализует пример использования метода getRGBColorValueO
объекта CSSPrimitiveValue.
Листинг 13.25. Пример использования метода getRGBColorValueO
объекта CSSPrimitiveValue
<html>
<script language="JScript">
<!--
var rgbColorObj = primitiveValObj.getRGBColorValueO;
//-->
</script>
</html>
CSSPrimitiveValue.getStringValue()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssPrimitiveValueObj.getStringValueQ
Глава 13. Каскадные списки стилей РОМ 1224
Описание
Метод getStringValue() объекта CSSPrimitiveValue не принимает аргументов. Он
возвращает строковое значение, определенное в текущих единицах измерения.
Метод getStringValue() может приводить к генерации исключения DOMException
со значением INVALID ACCESS ERR.
Пример
Код в листинге 13.26 реализует пример определения строкового значения для
объекта CSSPrimitiveValue.
Листинг 13.26. Пример считывания строкового значения с помощью
метода getStringValue() объекта CSSPrimitiveValue
<html>
<script language="JScript">
<!--
var stringObj = cssPrimitiveValye.getStringValue();
//-->
</script>
</html>
CSSPrimitiveValue.primitiveType
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssPrimitiveValueObj.primitiveType
Описание
Свойство primitiveType объекта CSSPrimitiveValue, доступное только для чтения,
имеет тип Number. Оно содержит числовое значение, соответствующее одному их
значений типов, определенных константами.
Пример
Код в листинге 13.27 реализует пример считывания свойства primitiveType объекта
CSSPrimitiveValue.
Листинг 13.27. Пример считывания свойства primitiveType
<html>
<script language="JScript">
<!--
if(cssPrimitiveValObj. primitiveType == CSSPrimitiveValue.CSS_STRING)
processStringType(cssPrimitiveValObj. primitiveType);
//-->
</script>
</html>
CSSPrimitiveValue.setFloatValue()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 225 Часть III. Справочник по JavaScript
Синтаксис
cssPrimitiveValueObj.setFloatValue(untf7ype, floatType)
Описание
Метод setFloatValue() объекта CSSPrimitiveValue в качестве аргументов принимает
параметры unitType и floatType и не возвращает значения. Метод может приводить к
генерации исключения DOMException со значениями
NO_MODIFICATION_ALLOWED_ERR или INVALID_ACCESS_ERR.
Пример
Код в листинге 13.28 реализует пример установки значения с плавающей точкой для
объекта CSSPrimitveValue.
Листинг 13.28. Пример установки значения с плавающей точкой с
помощью метода setFloatValue() объекта CSSPrimitiveValue
<html>
<script language="JScript">
<!--
CSSPrimitiveValue.setFloatValue(CSSPrimitiveValue.CSS_PERCENTAGE, 3.34);
//-->
</script>
</html>
CSSPrimitiveValue.setStringValue()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssPrimitiveValueObj.setStringValue(sfringf7ype, stringValue)
Описание
Метод setStringValue() объекта CSSPrimitiveValue в качестве аргументов
принимает параметры stringType и stringValue и не возвращает значений. Метод
может приводить к генерации исключения DOMException со значениями
NO MODIFICATION ALLOWED ERR или INVALID ACCESS ERR.
Пример
Код в листинге 13.29 реализует пример установки строкового значения для объекта
CSSPrimitveValue.
Листинг 13.29. Пример установки строкового значения с помощью
метода setStringValue() объекта CSSPrimitiveValue
<html>
<script language="JScript">
<!--
CSSPrimitiveValue.setStringValue
(CSSPrimitiveValue.CSS_STRING, "произвольная строка");
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1226
CSSRule
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSRule является абстрактным базовым объектом для любого оператора
CSS, включая наборы правил и правила. Свойства объекта CSSRule описаны в табл.
13.6.
Таблица 13.6. Свойства объекта CSSRule
Элемент
cssText
parentRule
parentStyleSheet
type
Описание
Свойство доступно только для чтения и имеет тип String.
Представляет собой текущее состояние правила, выраженное в
текстовом виде.
Свойство доступно только для чтения и имеет тип CSSRule.
Возвращает правило или Null.
Свойство доступно только для чтения и имеет тип
CSSStyleSheet. Возвращает объект StyleSheet, в котором
содержится данное правило.
Свойство доступно только для чтения и возвращает число,
указывающее тип правила.
Пример
Код в листинге 13.30 реализует пример использования объекта CSSRules и
выполнения итераций по его правилам с проверкой типа каждого правила.
Листинг 13.30. Проверка типа правил
<html>
<script language="JScript">
<!--
var ruleList = cssStyleSheetObj. rules;
var i = 0;
while( i < ruleList.length) {
var ruleObj = ruleList.index(i);
if(ruleObj.type == UNKNOWN_RULE)
handleUnknownRule(ruleObj);
</script>
</html>
CSSRule.cssText
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
1 227 Часть III. Справочник по JavaScript
Синтаксис
cssRuleObj.cssText
Описание
Свойство cssText объекта CSSRule возвращает строку, которая представляет собой
правило каскадного списка стилей в текстовом виде. В строке содержится текущее
состояние правила. Данное свойство может приводить к генерации исключения
DOMException со значениями HIERARCHY REQUEST ERR,
NO_MODIFICATION_ALLOWED_ERR, INVALID_MODIFICATION_ERR или
SYNTAX_ERR.
Пример
Код в листинге 13.31 реализует пример установки свойства cssText объекта
CSSRule.
Листинг 13.31. Пример установки текста правила каскадного списка
стилей с помощью свойства cssText объекта CSSRule
<html>
<script language="JScript">
<!--
cssRule.cssText = "colon'green'; font-weight:bold";
//-->
</script>
</html>
CSSRule.parentRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssRuleObj. parentRule
Описание
Свойство parentRule объекта CSSRule, доступное только для чтения, имеет тип
CSSRule. Если данный объект CSSRule содержится в другом объекте CSSRule, это
свойство возвращает внешний объект, в противном случае возвращается значение
Null.
Пример
Код в листинге 13.32 реализует пример считывания свойства parentRule.
Листинг 13.32. Пример считывания свойства parentRule
<html>
<script language="JScript">
<!--
if(cssRuleObj.parentRule.name = "myfontrule")
processRule(cssRuleObj.parentRule);
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1228
CSSRule.parentStyleSheet
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssRuleObj.parentStyleSheet
Описание
Свойство parentStyleSheet объекта CSSRule, доступное только для чтения, имеет
тип CSSStyleSheet. Свойство возвращает список стилей, в котором содержится
данное правило.
Пример
Код в листинге 13.33 реализует пример считывания свойства parentStyleSheet.
Листинг 13.33. Пример считывания свойства parentStyleSheet
<html>
<script language="JScript">
<!-
if(cssRuleObj.parentStyleSheet.name = "mycss")
processMyCSS(cssRuleObj.parentStyleSheet);
//-->
</script>
</html>
CSSRule.type
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssRuleObj.type
Описание
Свойство type объекта CSSRule, доступное только для чтения, возвращает число,
соответствующее типу правила.
Пример
Код в листинге 13.34 реализует пример выполнения итераций по списку правил
объекта CSSRules с проверкой типа каждого правила.
Листинг 13.34. Пример считывания типов правил с помощью
свойства type объекта CSSRule
<html>
<script language="JScript">
<!--
var ruleList = cssStyleSheetObj. rules;
var i = 0;
while( i < ruleList.length) {
var ruleObj = ruleList.item(i);
if(ruleObj.type == MEDIA_RULE)
1 229 Часть III. Справочник по JavaScript
handleUnknownRule(ruleObj);
</script>
</html>
CSSRuleList
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSRuleList является абстракцией для упорядоченной коллекции правил
каскадных списков стилей. Свойства и методы объекта CSSRuleList перечислены в
табл. 13.7.
Таблица 13.7. Свойства и методы объекта CSSRuleList
Тип
Свойство
Метод
Элемент
length
item()
Описание
Это свойство, доступное только для чтения, возвращает
количество правил в списке.
Этот метод возвращает правило по его порядковому
номеру.
Пример
Код в листинге 13.35 реализует пример выполнения итераций по списку правил
объекта CSSRuleList.
Листинг 13.35. Пример выполнения итераций по списку правил
объекта CSSRuleList
<html>
<script language="JScript">
<!--
var ruleList = cssStyleSheetObj. rules;
var i = 0;
while( i < ruleList.length) {
processRule(ruleList.item(i);
</script>
</html>
CSSRuleList.item()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Глава 13. Каскадные списки стилей РОМ 1230
Синтаксис
cssRuleListObj.item(uHdeKc)
Описание
Метод item() объекта CSSRuleList в качестве аргумента принимает параметр
индекс. Метод используется для выборки правила каскадного списка стилей по его
порядковому номеру.
Пример
Код в листинге 13.36 реализует пример выполнения итераций по списку правил
объекта CSSRuleList.
Листинг 13.36. Пример выполнения итераций по списку правил
объекта CSSRuleList с помощью метода item()
<html>
<script language="JScript">
<!-
var ruleList = cssStyleSheetObj.rules;
var i = 0;
while( i < ruleList.length) {
processRule(ruleList.item(i));
</script>
</html>
CSSRuleList.length
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssRuleListObj.length
Описание
Свойство length объекта CSSRuleList возвращает количество правил в данном
объекте CSSRuleList.
Пример
Код в листинге 13.37 реализует пример выполнения итераций по списку правил
объекта CSSRuleList.
Листинг 13.37. Пример выполнения итераций по списку правил
объекта CSSRuleList
<html>
<script language="JScript">
<!--
var ruleList = cssStyleSheetObj.rules;
var i = 0;
while( i < ruleList.length) {
1 231 Часть III. Справочник по JavaScript
processRule(ruleList.item(i);
</script>
</html>
CSSStyleDeclaration
JavaScript 1.5+, JScript 5+
Nav6+, IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSStyleDeclaration представляет собой блок объявлений каскадного списка
стилей. Его можно использовать для установки или считывания свойств стилей в
данном блоке. Свойства и методы объекта CSSStyleDeclaration перечислены в табл.
13.8.
Таблица 13.8. Свойства и методы объекта CSSStyleDeclaration
Тип
Свойство
Метод
Элемент
cssText
length
parentRule
item()
getPropertyCSSValue()
getPropertyPriority()
getPropertyValue()
removePropertyO
setProperty()
Описание
Это свойство возвращает значение типа
String, которое представляет собой блок
объявлений в текстовом виде.
Это свойство предназначено только для
чтения и имеет тип Number. Представляет
собой количество свойств, установленных в
блоке объявлений.
Это свойство, предназначенное только для
чтения. Оно имеет тип CSSRule и возвращает
объект CSSRule, содержащий данный блок
объявлений.
Этот метод возвращает строку, содержащую
правило с указанным порядковым номером.
Этот метод возвращает объект CSSValue,
содержащий значение свойства каскадного
списка стилей.
Этот метод возвращает строку, содержащую
приоритет свойства каскадного списка стилей.
Этот метод возвращает строку, содержащую
значение свойства каскадного списка стилей.
Этот метод возвращает строку, содержащую
свойство, которое было установлено в блоке
объявлений.
Этот метод не возвращает значения. Он
используется для установки значения свойства
и его приоритета.
Глава 13. Каскадные списки стилей РОМ 1232
Пример
Код в листинге 13.38 реализует пример установки свойства CSSText объекта
CSSStyleDeclation.
Листинг 13.38. Пример установки свойства CSSText
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
cssStyleDeclarationObj.cssText = "color:'green'; font-weight:bold";
//-->
</script>
</html>
CSSStyleDeclaration.cssText
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDeclObj.cssText
Описание
Свойство cssText объекта CSSStyleDeclaration представляет собой блок объявлений
в текстовом виде. Установка этого атрибута приведет к сбросу всех свойств,
установленных в блоке объявлений. Свойство cssText может приводить к генерации
исключения DOMException со значениями NO MODIFICATION ALLOWED ERR
wihSYNTAX_ERR.
Пример
Код в листинге 13.39 реализует пример установки свойства cssText объекта
CSSStyleDeclaration.
Листинг 13.39. Пример установки свойства cssText
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
cssStyleDeclarationObj.cssText = "colon'red'; font-weight:bold";
//-->
</script>
</html>
CSSStyleDeclaration.getPropertyCSSValue()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStuleDeclObj.getPropertyCSSValue(u/wH_ceoucmea)
1 233 Часть III. Справочник по JavaScript
Описание
Метод getPropertyCSSValue() объекта CSSStyleDeclaration в качестве аргумента
принимает строку имясвойства, а возвращает объект CSSValue, представляющий
собой значение установленного свойства. Если свойство не установлено,
возвращается Null.
Пример
Код в листинге 13.40 реализует пример определения значения свойства с помощью
метода getPropertyCSSValue() объекта CSSStyleDeclaration.
Листинг 13.40. Пример вызова метода getPropertyCSSValue()
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
cssStyleDeclarationObj.getPropertyCSSValuefheight");
//-->
</script>
</html>
CSSStyleDeclaration.getPropertyPriority()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDecl.getPropertyPriority(uMfl_ceoucema)
Описание
Метод getPropertyPriority() объекта CSSStyleDeclaration в качестве аргумента
принимает строку имя_сеойстеа, а возвращает строку, содержащую приоритет
свойства каскадного списка стилей. Если указанное свойство не существует,
возвращается пустая строка.
Пример
Код в листинге 13.41 реализует пример определения приоритета свойства с
помощью метода getPropertyPriority() объекта CSSStyleDeclaration.
Листинг 13.41. Пример определения приоритета свойства с
помощью метода getPropertyPriority()
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
cssStyleDeclarationObj. getPropertyPriorityfheight");
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1234
CSSStyleDeclaration.getPropertyValue()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDedObj.getPropertyValue(uM7_ceoucmea)
Описание
Метод getPropertyValue() объекта CSSStyleDeclaration в качестве аргумента
принимает строку имя_сеойства, а возвращает строку, содержащую значение
свойства в блоке объявлений. Если свойство не установлено, возвращается пустая
строка.
Пример
Код в листинге 13.42 реализует пример определения значения свойства с помощью
метода getPropertyValue() объекта CSSStyleDeclaration.
Листинг 13.42. Пример определения значения именованного
свойства с помощью метода getPropertyValue()
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
cssStyleDeclarationObj.getPropertyValue("height");
//-->
</script>
</html>
CSSStyleDeclaration.item()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDeclarationObj. Ает(индекс)
Описание
Метод item() объекта CSSStyleDeclaration в качестве аргумента принимает
параметр индекс, а возвращает строку, содержащую имя свойства с указанным
порядковым номером.
Пример
Код в листинге 13.43 реализует пример установки типа значения объекта CSSValue.
Листинг 13.43. Пример вызова метода item()
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
var cssValueObj = cssStyleDeclarationObj.getPropertyCSSValue("height");
document.write(cssValueObj.cssValueType);
1 235 Часть III. Справочник по JavaScript
</script>
</html>
CSSStyleDeclaration.length
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDedObj. length
Описание
Свойство length объекта CSSStyleDeclaration, доступное только для чтения, имеет
тип Number, length содержит количество свойств, установленных в данном блоке
объявлений.
Пример
Код в листинге 13.44 реализует пример считывания свойства length объекта
CSSStyleDeclaration.
Листинг 13.44. Пример считывания свойства length объекта
CSSStyleDeclaration
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
document.write(cssStyleDeclarationObj. length);
//-->
</script>
</html>
CSSStyleDeclaration.parentRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDedObj. parentRule
Описание
Свойство parentRule объекта CSSStyleDeclaration доступно только для чтения. Оно
возвращает объект CSSRule, в котором содержится данный блок объявлений или
Null, если данный блок не содержится в объекте CSSRule.
Пример
В листинге 13.45 приведен пример считывания свойства parentRule объекта
CSSStyleDeclaration.
Листинг 13.45. Пример считывания свойства parentRule объекта
CSSStyleDeclaration
<html>
Глава 13. Каскадные списки стилей РОМ 1236
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
document.write(cssStyleDeclarationObj.parentRule);
//-->
</script>
</html>
CSSStyleDeclaration.removePropertyO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDedObj.removeProperty(i7Mtf_ceoucmea)
Описание
Метод removeProperty() объекта CSSStyleDeclaration в качестве аргумента
принимает строку имясеойства, а возвращает строку, содержащую значение
установленного свойства. Если свойство не установлено, возвращается пустая
строка. Метод removeProperty() может приводить к генерации исключения
DOMException со значением NO MODIFICATION ALLOWED ERR.
Пример
Код в листинге 13.46 реализует пример удаления свойства с помощью метода
removeProperty() объекта CSSStyleDeclaration.
Листинг 13.46. Пример удаления свойства с помощью метода
removePropertyO
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
cssStyleDeclarationObj.removeProperty("height");
//-->
</script>
</html>
CSSStyleDeclaration.setPropertyO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleDeclObj.setProperty(uMH_ceoucmea, значение, приоритет)
Описание
Метод setProperty() объекта CSSStyleDeclaration в качестве аргументов принимает
строки имя_сеойстеа, значение и приоритет и не возвращает значений. Метод
setProperty() может приводить к генерации исключения DOMException со
значением NO MODIFICATION ALLOWED ERR.
1 237 Часть III. Справочник по JavaScript
Пример
Код в листинге 13.47 реализует пример установки значения свойства с помощью
метода setProperty() объекта CSSStyleDeclaration.
Листинг 13.47. Пример установки значения именованного свойства
с помощью метода setProperty()
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.ltem(O);
cssStyleDeclarationObj.setPropertyC'height", 5");
//-->
</script>
</html>
CSSStyleRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSStyleRule представляет собой отдельный набор правил объекта
CSSStyleSheet. Он является расширением объекта CSSRule. Свойства объекта
CSSStyleRule перечислены в табл. 13.9.
Таблица 13.9. Свойства объекта CSSStyleRule
Элемент
selectorText
style
Описание
Свойство, доступное только для чтения, имеющее тип String.
Представляет собой селектор данного набора правил в текстовом
виде.
Свойство, доступное только для чтения, имеющее тип
CSSStyleDeclaration. Представляет собой блок объявлений данного
набора правил.
Пример
Код в листинге 13.48 реализует пример установки свойства selectorText объекта
CSSStyleRule.
Листинг 13.48. Пример установки свойства selectorText
<html>
<script language="JScript">
<!--
var cssStyleRuleObj = bodObj.style;
cssStyleRuleObj.selectorText = "пример текста";
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1238
CSSSty leRu le.selectorText
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleRuleObj. selectorText
Описание
Свойство selectorText объекта CSSStyleRule, доступное только для чтения, имеет
тип string. Оно содержит селектор данного набора правил в текстовом виде.
Свойство selectorText может приводить к генерации исключения DOM Exception со
значениями NO MODIFICA TION ALLOWED ERR или SYNTAX ERR.
Пример
Код в листинге 13.49 реализует пример установки свойства selectorText объекта
CSSStyleRule.
Листинг 13.49. Пример установки свойства selectorText
<html>
<script language="JScript">
<!--
var cssStyleRuleObj = bodObj. style;
cssStyleRuleObj.selectorText = "текст селектора";
//-->
</script>
</html>
CSSStyleRule.style
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleRuleObj.style
Описание
Свойство style объекта CSSStyleRule, доступное только для чтения, имеет тип
CSSStyleDeclaration. Оно содержит блок объявлений данного набора правил.
Пример
Код в листинге 13.50 реализует пример установки значения свойства height свойства
style объекта CSSStyleRule.
Листинг 13.50. Пример установки свойства style объекта
CSSStyleRule
<html>
<script language="JScript">
<!--
cssStyleRuleObj.style.height = 24;
//-->
</script>
1 239 Часть III. Справочник по JavaScript
</html>
CSSStyleSheet
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSStyleSheet представляет собой каскадный список стилей. Он
обеспечивает доступ к коллекции правил списка стилей. Свойства и методы объекта
CSSStyleSheet перечислены в табл. 13.10.
Таблица 13.10. Свойства и методы объекта CSSStyleSheet
Тип
Свойство
Метод
Элемент
cssRule
ownerRule
deleteRule(index)
insertRuleO
Описание
Это свойство, доступное только для чтения,
возвращает объект CSSRuleList.
Это свойство, доступное только для чтения,
возвращает объект CSSRule.
Этот метод используется для удаления правила из
списка стилей.
Этот метод используется для включения нового
правила в список стилей.
Пример
Код в листинге 13.51 реализует пример создания объекта CSSStyleSheetObject.
Листинг 13.51. Пример создания объекта CSSStyleSheetObject
<html>
<script language="JScript">
var cssStyleSheetObj = DOMImplementationCSS.createCSSStyleSheetfmycss",
"handheld");
</script>
</html>
CSSStyleSheet.cssRules
Синтаксис
cssStyleSheetObj.cssRules
Описание
Свойство cssRules объекта CSSStyleSheet, доступное только для чтения, имеет тип
CSSRuleList. Оно содержит список всех правил списка стилей и указывает как
наборы правил, так и сами правила.
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Глава 13. Каскадные списки стилей РОМ 1240
Пример
Код в листинге 13.52 реализует пример выполнения итераций по списку правил
cssRules с выводом на экран каждого правила.
Листинг 13.52. Выполнение итераций по списку правил cssRules
<html>
<script language="JScript">
<!--
var rulesList = cssStyleSheetObj.cssRules;
var i = 0;
while(i < ruleList.length) {
display(rulel_ist.lndex(i).type);
</script>
</html>
CSSStyleSheet.deleteRule()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleSheetObj.deleteRule(uH<3e/fc)
Описание
Метод deleteRule() объекта CSSStyleSheet в качестве аргумента принимает параметр
индекс. Этот метод используется для удаления из списка стилей правила с индексом,
заданным в параметре индекс. Метод deleteRule() может приводить к генерации
исключения DOM Exception со значениями INDEXSIZEERR или
NO MOD1F1CA TION ALLOWED ERR.
Пример
Код в листинге 13.53 реализует пример удаления из списка стилей объекта CSSRule.
Листинг 13.53. Пример удаления правила из объекта CSSStyleSheet с
помощью метода deleteRule()
<html>
<script language="JScript">
<!--
cssStyleSheetObj.deleteRule(O);
//-->
</script>
</html>
CSSStyleSheet.insertRule()
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
1 241 Часть III. Справочник по JavaScript
Синтаксис
cssStyleSheetObj.insertRule(npaeiw7o, индекс)
Описание
Метод insertRuleO объекта CSSStyleSheet в качестве аргументов принимает
параметры правило и индекс и возвращает добавленное правило. Метод insertRuleO
может приводить к генерации исключения DOMException со значениями
HIERARCHY_REQUEST_EKR, INDEX_SIZE_ERR,
NO MODIFICATION ALLOWED ERR или SYNTAX ERR.
Пример
Код в листинге 13.54 реализует пример вставки в список стилей нового объекта
CSSRule.
Листинг 13.54. Пример вставки правила в объект CSSStyleSheet с
помощью метода insertRuleO
<html>
<script language="JScript">
<!--
cssStyleSheetObj.insertRule("margin-top: 1ex", 0);
//-->
</script>
</html>
CSSStyleSheet.ownerRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssStyleSheetObj.ownerRule
Описание
Это свойство, доступное только для чтения, возвращает объект типа CSSRule.
Свойство ownerRule может содержать как набор правил, так и само правило.
Пример
Код в листинге 13.55 реализует пример считывания свойства ownerRule
Листинг 13.55. Пример считывания свойства ownerRule
<html>
<script language="JScript">
<!--
if(cssStyleSheetObj.ownerRule.type = "Media") {
handleMediaRuler(cssStyleSheetObj. ownerRule);
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1242
CSSUnknownRule
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSUnknownRule представляет собой неподдерживаемое правило at-rule.
Он наследует все методы и свойства объекта CSSRule.
Пример
Код в листинге 13.56 реализует пример выполнения итераций по списку правил
объекта CSSRules с проверкой, принадлежит ли текущее правило к типу
CSSUnknownRule.
Листинг 13.56. Проверка свойства type объекта CSSUnknownRule
<html>
<script language="JScript">
<!--
var ruleList = cssStyleSheetObj. rules;
var i = 0;
while( i < ruleList.length) {
var ruleObj = ruleList.item(i);
if(ruleObj.Type == UNKNOWN_RULE)
handleUnknownRule(ruleObj);
</script>
</html>
CSSValue
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSValue служит для представления простого или сложного значения в
контексте свойства каскадного списка стилей. Константы и свойства объекта
CSSValue приведены таблице 13.11.
Таблица 13.11. Константы и свойства объекта CSSValue
Тип
Константы
Элемент
CSS_CUSTOM
Описание
Константа типа Number. Ее значением
является число 3, которое указывает на то,
что речь идет о специальном значении.
1 243 Часть III. Справочник по JavaScript
Свойство
CSSJNHERIT
CSS_PRIMITIVE_VALUE
CSS_VALUE_LIST
cssText
cssValueType
Константа типа Number. Ее значением
является число 0, которое указывает на то,
что это значение унаследовано.
Константа типа Number. Ее значением
является число 1, которое указывает на то,
что речь идет о примитивном значении и
экземпляр CSSPrimitiveValue.
Константа типа Number. Ее значением
является число 2, которое указывает, что
это список CSSValue и экземпляр
CSSValueList.
Это свойство имеет тип String. Оно
содержит текущее значение в текстовом
представлении.
Это свойство, доступное только для чтения,
типа Number. Содержит код типа значения.
Пример
Код в листинге 13.57 реализует пример установки типа значения объекта CSSValue.
Листинг 13.57. Пример считывания свойства
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
var cssValueObj = cssStyleDeclarationObj. getPropertyCSSValue("height");
document.write(cssValueObj. cssValueType);
//-->
</script>
</html>
CSSValue.cssText
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssValueObj.cssText
Описание
Свойство cssText объекта CSSValue имеет тип string. Оно содержит текущее
значение в текстовом виде. Свойство cssText может приводить к генерации
исключения DOMException со значениями NO MODIFICATION ALLOWED ERR,
INVALID_MODIFICATION_ERROR или SYNTAX_ERR.
Пример
Код в листинге 13.58 реализует пример установки типа значения объекта CSSValue.
Листинг 13.58. Пример считывания свойства cssText объекта
CSSValue
<html>
Глава 13. Каскадные списки стилей РОМ 1244
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
var cssValueObj = cssStyleDeclarationObj.getPropertyCSSValue("height");
document.write(cssValueObj.cssText);
//-->
</script>
</html>
CSSValue.cssValueType
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssValueObj.cssValueType
Описание
Свойство cssValueType объекта CSSValue, которое доступно только для чтения,
имеет тип Number. Оно содержит код, который указывает тип значения.
Пример
Код в листинге 13.59 реализует пример установки типа значения объекта CSSValue.
Листинг 13.59. Пример считывания свойства cssValueType объекта
CSSValue
<html>
<script language="JScript">
<!--
var cssStyleDeclarationObj = cssStyleSheetObj.cssRules.item(O);
var cssValueObj = cssStyleDeclarationObj.getPropertyCSSValue("height");
document.write(cssValueObj.cssValueType);
//-->
</script>
</html>
CSSValueList
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект CSSValueList является абстракцией упорядоченной коллекции объектов
CSSValues. Свойство и метод объекта CSSValueList перечислены в табл. 13.12.
1 245 Часть III. Справочник по JavaScript
Таблица 13.12. Свойство и метод объекта CSSValueList
Тип
Свойство
Метод
Элемент
length
item()
Описание
Это свойство, доступное только для чтения, имеет тип
Number. Оно возвращает количество объектов CSS Values
в списке.
Этот метод возвращает объект CSSValue.
Пример
Код в листинге 13.60 реализует пример выполнения итераций по объекту
CSSValueList.
Листинг 13.60. Пример выполнения итераций по объекту
CSSValueList
<html>
<script language="JScript">
<!--
var i = 0;
while(i < valueListObj.length) {
var listltem = valueListObj.item(i);
processListltem(listltem);
</script>
</html>
CSSValuel_ist.item()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssValueListObj.item(t/Hde/cc)
Описание
Метод item() объекта CSSValueList в качестве аргумента принимает число,
определенное параметром индекс, и извлекает из списка объект CSSValue с
указанным индексом.
Пример
Код в листинге 13.61 реализует пример выполнения итераций по объекту
CSSValueList.
Листинг 13.61. Пример вызова метода item() объекта CSSValueList
<html>
<script language="JScript">
<!--
var i = 0;
while(i < valueListObj.length) {
var listltem = valueListObj.item(i);
Глава 13. Каскадные списки стилей РОМ 1246
processListltem(listltem);
</script>
</html>
CSSValueList.length
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
cssValueListObj. length
Описание
Это свойство, доступное только для чтения, имеет тип Number. Оно возвращает
количество объектов CSSValue в списке.
Пример
Код в листинге 13.62 реализует пример выполнения итераций по объекту
CSSValueList
Листинг 13.62. Пример считывания свойства length объекта
CSSValueList
<html>
<script language="JScript">
<!--
var i = 0;
while(i < valueListObj.length) {
var listltem = valueListObj.item(i);
processListltem(listltem);
</script>
</html>
DocumentCSS
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект DocumentCSS представляет собой документ, использующий каскадные
списки стилей. Он включает следующий метод:
1 247 Часть III. Справочник по JavaScript
Элемент
getOverrideStyleO
Описание
Этот метод возвращает объект CSSStyleSheet, который
представляет собой перекрытое объявление стиля.
Пример
Код в листинге 13.63 реализует пример перекрывания стиля отдельного элемента.
Листинг 13.63. Перекрывание стиля
<html>
<script language="JScript">
<!--
documentCSSObj.getOverrideStyle(bodyObj, null);
//-->
</script>
</html>
DocumentCSS.getOverrideStyleO
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
documentCSSObj.getOverrideStyle(e#, pseudoElf)
Описание
Метод getOverrideStyleO объекта DocumentCSS в качестве аргументов принимает
параметры elt типа Element и pseudoElt типа String, а возвращает перекрытое
объявление стиля.
Пример
В листинге 13.64 приведен пример перекрывания стиля отдельного элемента.
Листинг 13.64. Пример перекрывания стиля с помощью метода
getOverrideStyleO объекта DocumentCSS
<html>
<script language="JScript">
<!--
documentCSSObj.getOverrideStyle(tableObj, null);
//-->
</script>
</html>
DOMImplementationCSS
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Глава 13. Каскадные списки стилей РОМ 1248
Описание
Объект DOMImplementationCSS дает возможность пользователю DOM создать
объект CSSStyleSheet вне контекста документа. Объект DOMImplementationCSS
имеет следующий метод:
Элемент
createCSSStyleSheet
Описание
Этот метод возвращает объект CSSStyleSheet, который
представляет собой новый объект CSSStyleSheet.
Пример
Код в листинге 13.65 реализует пример создания нового списка стилей.
Листинг 13.65. Пример создания нового списка стилей
<html>
<script language="JScript">
<!--
var cssStyleSheetObj = DOMImplementation.createCSSStyleSheet("my ess", "print");
//-->
</script>
</html>
DOMImplementationCSS.createCSSStyleSheet()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
DOMImplementationCSS.createCSSStyleSheet(ffite, media)
Описание
Метод CreateCSSStyleSheet() объекта DOMImplementationCSS в качестве
аргументов принимает строковые параметры title и media и возвращает новый
объект CSSStyleSheet. Метод CreateCSSStyleSheet() может приводить к генерации
исключения DOMException со значением SYNTAXERR.
Пример
Код в листинге 13.66 реализует пример создания нового списка стилей.
Листинг 13.66. Пример создания нового списка стилей с помощью
метода createCSSStyleSheet() объекта DOMImplementationCSS
<html>
<script language="JScript">
<!--
var cssStyleSheetObj = DOMImplementation.createCSSStyleSheet("my ess", "print");
//-->
</script>
</html>
1 249 Часть III. Справочник по JavaScript
ElementCSSInlineStyle
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект ElementCSSInlineStyle предназначен для представления содержимого
атрибута style HTML-элементов. Объект ElementCSSInlineStyle имеет следующее
свойство:
Элемент Описание
style
Это свойство, которое доступно только для чтения, имеет тип
CSSStyleDeclaration.
Пример
Код в листинге 13.67 реализует пример считывания свойства style объекта
ElementCSSInlineStyle.
Листинг 13.67. Пример считывания свойства style
<html>
<script language="JScript">
<!--
var cssStyleDef = elementCSSInlineStyleObj. style;
//-->
</script>
</html>
ElementCSSInlineStyle.style
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
elementCSSInlineStyleObj.style
Описание
Свойство style объекта ElementCSSInlineStyle, которое доступно только для чтения,
имеет тип CSSStyleDeclaration. Оно возвращает стиль HTML-элементов в текстовом
виде.
Пример
Код в листинге 13.68 реализует пример считывания свойства style объекта
ElementCSSInlineStyle.
Листинг 13.68. Пример считывания свойства style
<html>
<script language="JScript">
<!--
var cssStyleDef = elementCSSInlineStyleObj.style;
Глава 13. Каскадные списки стилей РОМ 1250
</script>
</html>
Rect
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект Rect предназначен для хранения значения Rect. Он содержит значения
свойств стиля. В этом объекте отражаются изменения свойств стиля. Свойства
объекта Rect перечислены в табл. 13.13.
Таблица 13.13. Свойства объекта Rect
Элемент
bottom
left
right
top
Описание
Свойство, доступное только для чтения, имеющее тип
CSSPrimitiveValue. Представляет собой нижнюю границу
прямоугольника.
Свойство, доступное только для чтения, имеющее тип
CSSPrimitiveValue. Представляет собой левую границу
прямоугольника.
Свойство, доступное только для чтения, имеющее тип
CSSPrimitiveValue. Представляет собой правую границу
прямоугольника.
Свойство, доступное только для чтения, имеющее тип
CSSPrimitiveValue. Представляет собой верхнюю границу
прямоугольника.
Пример
Код в листинге 13.69 реализует пример считывания свойств объекта Rect.
Листинг 13.69. Пример считывания свойств объекта Rect
<html>
<script language="JScript">
<!--
var rectObj = primitiveValObj.getRectValue();
vartopVal = rectObj.top;
var rightVal = rectObj.right;
var bottomVal = rectObj.bottom;
var leftVal = rectObj.left;
//-->
</script>
</html>
1 251 Часть III. Справочник по JavaScript
Rect, bottom
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
rectObj.bottom
Описание
Свойство bottom объекта Rect, которое доступно только для чтения, имеет тип
CSSPrimitiveValue. Свойство возвращает нижнюю границу прямоугольника.
Пример
Код в листинге 13.70 реализует пример считывания свойства bottom объекта Rect.
Листинг 13.70. Пример считывания свойства bottom объекта Rect
<html>
<script language="JScript">
<!--
var rectObj = primitiveValObj.getRectValue();
var bottomVal = rectObj.bottom;
//-->
</script>
</html>
Rect, left
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Rect, left
Описание
Свойство left объекта Rect, которое доступно только для чтения, имеет тип
CSSPrimitiveValue. Свойство возвращает левую границу прямоугольника.
Пример
Код в листинге 13.71 реализует пример считывания свойства left объекта Rect.
Листинг 13.71. Пример считывания свойства left объекта Rect
<html>
<script language="JScript">
<!--
var rectObj = primitiveValObj.getRectValue();
var leftVal = rectObj.left;
//-->
</script>
</html>
Глава 13. Каскадные списки стилей РОМ 1252
Rect, right
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Rect.right
Описание
Свойство right объекта Rect, которое доступно только для чтения, имеет тип
CSSPrimitiveValue. Свойство возвращает правую границу прямоугольника.
Пример
Код в листинге 13.72 реализует пример считывания свойства right объекта Rect.
Листинг 13.72. Пример считывания свойства right объекта Rect
<html>
<script language="JScript">
<!--
var rectObj = primitiveValObj.getRectValue();
var rightVal = rectObj.right;
//-->
</script>
</html>
Rect.top
JavaScript 1 5+, JScript 5+
Nav6+,IE5+
Синтаксис
Rect.top
Описание
Свойство top объекта Rect, которое доступно только для чтения, имеет тип
CSSPrimitiveValue. Свойство возвращает верхнюю границу прямоугольника.
Пример
Код в листинге 13.73 реализует пример считывания свойства top объекта Rect.
Листинг 13.73. Пример считывания свойства top объекта Rect
<html>
<script language="JScript">
<!--
var rectObj = primitiveValObj.getRectValue();
vartopVal = rectObj.top;
//-->
</script>
</html>
1 253 Часть III. Справочник по JavaScript
RGBColor
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект RGBColor предназначен для хранения значения цвета в формате RGB. Он
содержит значения свойств стиля. В этом объекте отражаются изменения свойств
стиля. Свойства объекта RGBColor перечислены в табл. 13.14.
Таблица 13.14. Свойства объекта RGBColor
Элемент
blue
green
red
Описание
Свойство, доступное только для чтения, имеющее тип
CSSPrimitiveValue. Представляет собой значение синей
составляющей.
Свойство, доступное только для чтения, имеющее тип
CSSPrimitiveValue. Представляет собой значение зеленой
составляющей.
Свойство, доступное только для чтения, имеющее тип
CSSPrimitiveValue. Представляет собой значение красной
составляющей.
Пример
Код в листинге 13.74 реализует пример использования объекта RGBColor.
Листинг 13.74. Пример считывания свойства объекта RGBColor
<html>
<script language="JScript">
<!--
var rgbColorObj = primitiveValObj.getRGBColor();
var redVal = rgbColorObj.red;
var greenVal = rgbColorObj.green;
var blueVal = rgbColorObj.blue;
//-->
</script>
</html>
RGBColor.blue
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
rgbColorObj.blue
Описание
Свойство blue объекта RGBColor, которое доступно только для чтения, имеет тип
CSSPrimitiveValue. Оно возвращает значение синей составляющей RGB-цвета.
Глава 13. Каскадные списки стилей РОМ 1254
Пример
Код в листинге 13.75 реализует пример использования объекта RGBColor.
Листинг 13.75. Пример считывания свойства blue объекта RGBColor
<html>
<script language="JScript">
<!--
var rgbColorObj = primitiveValObj.getRGBColor();
var blueVal = rgbColorObj.blue;
//-->
</script>
</html>
RGBColor.green
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
rgbColor.green
Описание
Свойство green объекта RGBColor, которое доступно только для чтения, имеет тип
CSSPrimitiveValue. Оно возвращает значение зеленой составляющей RGB-цвета.
Пример
Код в листинге 13.76 реализует пример использования объекта RGBColor.
Листинг 13.76. Пример считывания свойства green объекта RGBColor
<html>
<script language="JScript">
<!--
var rgbColorObj = primitiveValObj.getRGBColor();
vargreenVal = rgbColorObj.green;
//-->
</script>
</html>
RGBColor.red
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
rgbColor.red
Описание
Свойство red объекта RGBColor, которое доступно только для чтения, имеет тип
CSSPrimitiveValue. Оно возвращает значение красной составляющей RGB-цвета.
Пример
Код в листинге 13.77 реализует пример использования объекта RGBColor.
1 255 Часть III. Справочник по JavaScript
Листинг 13.77. Пример считывания свойства red объекта RGBColor
<html>
<script language="JScript">
<!--
var rgbColorObj = primitiveValObj.getRGBColor();
var redVal = rgbColorObj.red;
//-->
</script>
</html>
ViewCSS
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
Объект каскадных списков стилей DOM.
Описание
Объект ViewCSS представляет собой вид каскадного списка стиля. Объект ViewCSS
имеет следующий метод:
Элемент
getComputedStyle
Описание
Метод возвращает объект CSSStyleDeclaration, содержащий
вычисленный стиль.
Пример
Код в листинге 13.78 реализует пример определения вычисленного стиля
определенного элемента.
Листинг 13.78. Пример определения вычисленного стиля
<html>
<script language="JScript">
<!--
viewCSSObj.getComputerStyle(bodyObj, null);
//-->
</script>
</html>
ViewCSS.getComputedStyle()
JavaScript 1.5+, JScript 5+
Nav6+,IE5+
Синтаксис
viewCSSObj.getComputedStyle(e/f, pseudoElt)
Описание
Метод getComputedStyle() объекта ViewCSS в качестве аргументов принимает
параметры elt типа Element и pseudoElt типа String.
Глава 13. Каскадные списки стилей РОМ 1256
Пример
Код в листинге 13.79 реализует пример определения вычисленного стиля
определенного элемента.
Листинг 13.79. Вычисление стиля с помощью метода
getComputedStyleO объекта ViewCSS
<html>
<script language="JScript">
<!--
viewCSSObj.getComputerStyle(tableObj, null);
//-->
</script>
</html>
Глава 14
JScript RunTime
В этой главе приводится описание всех элементов, входящих в состав
дополнительных модулей сценарного механизма Microsoft (Microsoft Scripting
Engine). Будут рассмотрены все элементы, которые характерны для интерпретаторов
Microsoft. Приведенные элементы могут использоваться с ASP-страницами серверов
IIS, в среде Windows Script Host и в браузере Internet Explorer. В табл. 14.1
перечислены поддерживаемые версии языка JScript в различных приложениях, в
состав которых входит сценарный механизм компании Microsoft.
Примечание
Продукты компании Microsoft позволяют обновлять версии механизмов создания
сценариев. Это означает, что браузер Internet Explorer 3 может поддерживать JScript
5.0 с полной обратной совместимостью. В табл. 14.1 указываются только те версии,
которые поставляются с соответствующими продуктами.
Таблица 14.1. Версии языка JScript, поддерживаемые различными
приложениями компании Microsoft
Приложение
Internet Explorer 3.x
IIS 1.0
Internet Explorer 4.x
IIS 4.0
Windows Script Host 1.0
Visual Studio 6.0
Internet Explorer 5.0
IIS 5.0
Windows 2000
Internet Explorer 5.5
Версия JScript
1.0
2.0
3.0
3.0
3.0
4.0
5.0
5.1
5.1
5.5
Все рассматриваемые в этой главе дополнительные модули являются объектами,
поставляемыми в составе библиотеки Scripting Runtime Library, файл которой
называется scrrun.dll. Они не являются объектами самого языка JScript, который
находится в файле библиотеки jscript.dll. Однако существует ряд исключений, в
число которых входят флаги условной компиляции GetObject и ActiveXObject, a
также различные функции ScriptEngine, рассмотренные в главе 7.
Указанные выше исключения являются, пожалуй, наиболее существенным отличием
языков JScript и JavaScript. Язык JScript поддерживает концепцию автоматизации.
Он может создавать и обрабатывать СОМ-объектьт. Примером этого могут служить
объекты Dictionary и FileSystemObject, а также Excel, Word и другие приложения
пакета Microsoft Office. Бинарные файлы этих приложений в мире СОМ-объектов
называют СОМ-серверами.
Следует отметить, что библиотека Microsoft Scripting Runtime Library начала
поставляться в комплекте с браузером Internet Explorer, начиная только с версии 5,
тем не менее, она присутствовала в средах I IS и Windows Script Host. Как
1 258 Часть III. Справочник по JavaScript
упоминалось в примечании, версию библиотеки можно обновить до наиболее
актуальной, которую несложно выгрузить из сайта Microsoft по адресу
http://msdn.microsoft.com/scripting.
После этого небольшого вступления к языку JScript и модели СОМ перейдем к
описанию объектов. Как и в других разделах настоящей книги, каждый пункт
включает версию, синтаксис, описание, пример и множество других данных о языке
JScript.
Dictionary
JScript3.0+
Синтаксис
dictionaryObj = new ActiveXObject("Scripting. Dictionary");
Описание
Объект Dictionary представляет собой ассоциативный массив элементов, которые
могут иметь различные типы. Каждому элементу соответствует уникальный ключ, с
помощью которого осуществляется доступ к элементу. Ключом, как правило,
является целое число или строка, но в общем случае ключом может быть все что
угодно, за исключением массива. Объект Dictionary создается и возвращается, если
в методе ActiveXObject() имя сервера и типа установлено равным
"Scripting.Dictionary".
Объект Dictionary имеет целый ряд свойств и методов, которые позволяют
использовать элементы словаря. Все эти свойства и методы перечислены в табл.
14.2.
Таблица 14.2. Свойства и методы объекта Dictionary
Тип
Свойства
Методы
Элемент
Count
Item
Key
AddO
ExistsO
ItemsO
KeysO
Remove()
RemoveAIIO
Описание
Возвращает количество элементов в коллекции или
словаре.
Устанавливает или возвращает элемент с указанным
ключом.
Устанавливает в словаре ключ.
Добавляет в словарь пару "ключ-элемент".
Определяет, существует ли в словаре указанный ключ.
Возвращает массив всех элементов словаря.
Возвращает массив всех ключей словаря.
Удаляет из словаря пару "ключ-элемент".
Удаляет из словаря все пары "ключ-элемент".
Пример
Код в листинге 14.1 реализует пример создания словаря с помощью конструктора
ActiveXObject() и присвоения нового словаря переменной fruits.
Листинг 14.1. Пример создания объекта Dictionary с помощью
конструктора ActiveXObjectO
<script type="text/jscript" language="JScript">
Глава 14. JScript RunTime 1259
var fruits = new ActiveXObject("Scripting. Dictionary");
//-->
</script>
Dictionary.Add()
JScript3.0+
Синтаксис
<ИсИопагуоЬ}А66{кпюч, элемент)
Описание
Метод Add() объекта Dictionary добавляет в словарь новые пары key, item. Параметр
элемент может иметь любой тип, а параметр key не может быть массивом. Метод не
возвращает значений.
Пример
Код в листинге 14.2 создает словарь, описывающий различные фрукты, а затем в
него с помощью метода Add() добавляются элементы.
Листинг 14.2. Пример создания словаря и добавления в него
элементов с помощью метода Add()
<script type="text/jscript" language="JScript">
<!--
//Создать словарь.
var fruits = new ActiveXObject("Scripting.Dictionary");
//Заполнить словарь элементами.
fruits.AddfA", "Апельсин");
fruits.Add(T",Tpyma");
fruits.Add('^","Яблоко");
//-->
</script>
Dictionary.Count
JScript3.0+
Синтаксис
dictionary'obj. Count
Описание
Свойство Count объекта Dictionary определяет количество элементов в словаре. Это
свойство доступно только для чтения, поэтому его нельзя использовать для
изменения размера словаря.
Пример
Код в листинге 14.3 реализует пример создания словаря и вывода на экран
количества элементов в словаре.
Листинг 14.3. Пример вывода на экран количества элементов в
словаре с помощью свойства Count
<script type="text/jscript" language="JScript">
1 260 Часть III. Справочник по JavaScript
//Создать словарь.
var fruits = new ActiveXObject("Scripting. Dictionary");
//Заполнить словарь элементами.
fruits.AddfA", "апельсин");
fruits.Add("B","виноград");
fruits.Add(T","rpyiua");
fruits.AddpT', "яблоко");
document.writefB словаре находится ".fruits.Count," элемента.");
//-->
</script>
Dictionary.Exists()
JScript3.0+
Синтаксис
dictionaryobj. Exists(«y7/O4)
Описание
Метод Exists() объекта Dictionary определяет, существует ли в словаре элемент с
ключом, определенным через передаваемый методу параметр ключ. Если ключ,
заданный в параметре ключ существует, метод возвращает значение true, в
противном случае возвращается false.
Пример
Код в листинге 14.4 создает словарь, а затем определяет, имеется ли в словаре фрукт,
название которого начинается на букву "С".
Листинг 14.4. Пример определения с помощью метода Exists() факта
существования в словаре фрукта, название которого начинается на
букву "С"
<script type="text/jscript" language="JScript">
<!--
//Создать словарь.
var fruits = new ActiveXObject("Scripting.Dictionary");
//Заполнить словарь элементами.
fruits.Add("A","aпeльcин");
fruits.Add("B","виноград");
fruits.Add(T","rpyiua");
fruits.Add('^","яблоко");
if(fruits.Exists("C"))
document.write("OpyKT",fruits.Item('C')," есть в словаре.");
else
document.write("B словаре нет фруктов, названия которых начинаются на <b>C</b>.");
//-->
</script>
Dictionary. ltem()
JScript3.0+
Глава 14. JScript RunTime 1261
Синтаксис
dictionaryobj. Н.ет(ключ)
dictionaryobj.\ievn{Kmo4) = новып_элемент
Описание
Свойство Item() объекта Dictionary позволяет выбирать элементы из словаря,
создавать новые и изменять существующие элементы.
Для того чтобы извлечь элемент из словаря, необходимо в списке аргументов
указать ключ (определенный параметром ключ) для элемента, который требуется
получить. В этом случае метод возвращает элемент, соответствующий указанному
ключу. Если ключа, определенного параметром ключ, нет в словаре, создается новая
пара ключ, элемент, при этом элемент останется пустым. В этом случае метод не
возвращает никаких значений.
Для создания в словаре новой пары ключ, элемент в качестве аргумента метода
потребуется задать новый, уникальный ключ, непосредственно после метода Item()
указать знак равно (=), за которым задать элемент ноеый_элемент,
соответствующий ключу ключ. В этом случае метод возвращает новый элемент
словаря.
И, наконец, элемент словаря можно изменить, если задать ключ ключ, который
соответствует одному из элементов словаря. Непосредственно после метода Item()
необходимо указать знак равно (=), за которым должен следовать элемент
ноеый_элемент, который заменит существующий элемент. Метод возвращает
новый, измененный элемент словаря.
Пример
В коде из листинга 14.5 метод Item() используется для создания, изменения и
выборки элемента из словаря.
Листинг 14.5. Пример создания, изменения и выборки элемента из
словаря с помощью метода ltem()
<script type="text/jscript" language="JScript">
<!--
//Создать словарь.
var fruits = new ActiveXObjectfScripting. Dictionary");
//Заполнить словарь элементами.
fruits.AddfA", "апельсин");
fruits.Add("B","виноград");
fruits.AddpT', "яблоко");
//С помощью метода ltem() создать новый элемент словаря.
fruits. ltem(T") = "груша";
// С помощью метода ltem() изменить элемент, соответствующий ключу Г.
fruits. ltem(T") = "грейпфрут"
//Извлечь элемент, соответствующий ключу Г, и вывести его на экран.
document.write("KnK>4y Г соответствует элемент ".fruits.Item(T),".");
//-->
</script>
Dictionary.ltems()
JScript3.0+
1 262 Часть III. Справочник по JavaScript
Синтаксис
dictionaryobj. ltems()
Описание
Метод Items() объекта Dictionary возвращает все элементы словаря в форме массива
Visual Basic.
Примечание
Массив Visual Basic (объект VBArray) можно преобразовать в массив JScript с
помощью метода toArray() объекта VBArray.
Пример
В коде из листинга 14.6 метод Items() используется для выборки всех элементов
словаря, образующих массив Visual Basic. Затем для преобразования массива Visual
Basic в массив JavaScript используется метод toArray(). Каждый элемент массива
theArray выводится в окне браузера.
Листинг 14.6. Извлечение элементов в массив с помощью метода
ItemsO
<script type="text/jscript" language="JScript">
<!--
//Создать словарь.
var fruits = new ActiveXObject("Scripting. Dictionary");
//Заполнить словарь элементами.
fruits.Add("A","anenbCKH");
fruits.Add("B","виноград");
fruits.Add(T","груша");
fruits.Add('^","яблоко");
//Создать массив.
theArray = (new VBArray(fruits.ltems())).toArray();
document.write("MaccMB содержит:<Ьг>");
//Вывести элементы массива на экран.
for (i in theArray)
{
document.write("theArray[",i,"]=",theArray[i],"<br>");
}
//-->
</script>
Dictionary. Key ()
JScript3.0+
Синтаксис
dictionaryobj. Кеу(ключ) = новый_ключ
Описание
Свойство Кеу() объекта Dictionary позволяет изменить существующий ключ
словаря. Чтобы изменить ключ, необходимо указать ключ, определенный
параметром ключ элемента, который требуется изменить, поставить знак равно (=) и
указать новый ключ, определенный параметром новый ключ. Если указанного
Глава 14. JScript RunTime 1263
ключа ключ нет в словаре, создается новая пара ключ, элемент с ключом
ноеыйключ и пустым элементом. В любом случае метод возвращает новый ключ.
Пример
Код в листинге 14.7 реализует пример использования свойства Кеу() для изменения
существующего ключа словаря.
Листинг 14.7. Пример изменения существующего ключа словаря с
помощью метода Кеу()
<script type="text/jscript" language="JScript">
<!--
//Создать словарь.
var fruits = new ActiveXObject("Scripting. Dictionary");
//Заполнить словарь элементами.
fruits.Add("A","апельсин");
fruits.Add("B","виноград");
fruits.Add("r","rpyma");
fruits.Add('^","яблоко");
//Изменить ключ "А" на "П".
fruits. Key ("A") = "П";
//-->
</script>
Dictionary-Keys()
JScript3.0+
Синтаксис
dictionaryobj. Keys()
Описание
Метод Keys() объекта Dictionary возвращает все ключи, доступные в словаре.
Пример
Код в листинге 14.8 реализует пример использования метода Keys() для выборки
всех доступных в словаре ключей.
Листинг 14.8. Пример выборки всех доступных в словаре ключей с
помощью метода Keys()
<script type="text/jscript" language="JScript">
<!--
//Создать словарь.
var fruits = new ActiveXObject("Scripting.Dictionary");
//Заполнить словарь элементами.
fruits.Add("A","апельсин");
fruits.Add("B","виноград");
fruits.Add(T", "груша");
fruits.Add("fl","fl6noKo");
//Создать массив.
theArray = (new VBArray(fruits.Keys())).toArray();
document.write("MaccnB содержит:<Ьг>");
//Вывести на экран содержимое массива ключей.
1 264 Часть III. Справочник по JavaScript
for (i in theArray)
{
document.write("theArray[",i,"]=",theArray[i],"<br>");
}
//-->
</script>
Dictionary. RemoveQ
JScript3.0+
Синтаксис
dictionaryobj.Remove(/</7/o4)
Описание
Метод Remove() объекта Dictionary удаляет из словаря пару ключ, элемент,
которая соответствует переданному методу в качестве аргумента ключу,
определенному параметром ключ. Если элемент с указанным ключом в словаре
отсутствует, возвращается ошибка. В противном случае метод не возвращает
значений.
Пример
В коде из листинга 14.9 метод Remove() используется для удаления из словаря
элемента "груша".
Листинг 14.9. Удаление из словаря элемента "груша" с помощью
метода Remove()
<script type="text/jscript" language="JScript">
<!--
//Создать словарь.
var fruits = new ActiveXObject("Scripting. Dictionary");
//Заполнить словарь элементами.
fruits.AddfA", "апельсин");
fruits.Add("B","виноград");
fruits.Add(T", "груша");
fruits.Add('^","яблоко");
//Удалить из словаря элемент "груша".
fruits. Removefr");
//-->
</script>
Dictionary-RemoveAII()
JScript3.0+
Синтаксис
dictionaryobj. RemoveAII()
Описание
Метод RemoveAH() объекта Dictionary удаляет из словаря все пары ключ, элемент.
Этот метод не возвращает значений.
Глава 14. JScript RunTime 1265
Пример
Код в листинге 14.10 реализует пример удаления всех элементов словаря с помощью
метода RemoveAH().
Листинг 14.10. Пример удаления всех элементов словаря с
помощью метода RemoveAII()
<script type="text/jscript" language="JScript">
<!-
//Создать словарь.
var fruits = new ActiveXObject("Scripting. Dictionary");
//Заполнить словарь элементами.
fruits.Add("A","апельсин");
fruits.Add("B","Bi/iHorpafl");
fruits.Add(T","груша");
fruits.Add('^","яблоко");
//Удалить из словаря все элементы.
fruits. RemoveAII();
//-->
</script>
Drive
JScript3.0+
Синтаксис
Этот основной объект JScript создается с помощью метода GetDrive() объекта
FileSystemObject.
Описание
Объекты файловой системы (File System Objects, FSO) предоставляют доступ к
свойствам, методам и событиям с помощью простой точечной нотации, что
позволяет работать с каталогами и файлами. Объект Drive - это объект файловой
системы, который позволяет использовать свойства общедоступных дисков и сетей.
Объект Drive создается с помощью метода GetDrive() объекта FileSystemObject.
Свойства объекта Drive перечислены в табл. 14.3. Более подробную информацию по
объектам файловой системы можно найти в описании объекта FileSystemObject
далее в этой главе.
Таблица 14.3. Свойства объекта Drive.
Элемент
AvailableSpace
DriveLetter
DriveType
FileSystem
FreeSpace
IsReady
Path
Описание
Возвращает объем пространства, доступного пользователю на
указанном диске или в указанной сети совместного пользования.
Возвращает имя диска для физического диска или сетевого
устройства совместного использования.
Возвращает значение, которое указывает тип указанного диска.
Возвращает тип файловой системы для указанного диска.
Возвращает объем свободного пространства, доступного
пользователю на указанном диске или в указанном сетевом
устройстве совместного использования.
Возвращает состояние указанного диска.
Возвращает путь к указанному файлу, каталогу или диску.
1 266 Часть III. Справочник по JavaScript
RootFolder
SerialNumber
ShareName
TotalSize
VolumeName
Возвращает объект Folder, который представляет корневой
каталог указанного диска.
Возвращает уникальный десятичный серийный номер, который
используется для идентификации тома диска.
Возвращает сетевое имя указанного диска.
Возвращает общий объем указанного диска или сетевого
устройства совместного использования.
Устанавливает или возвращает метку тома указанного диска.
Пример
Код в листинге 14.11 реализует пример создания объекта Drive с помощью метода
GetDrive() объекта FileSystemObject.
Листинг 14.11. Пример создания объекта Drive
<script type="text/jscript" language="Jscript">
<!--
//Создать строку для хранения пути к диску.
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//-->
</script>
Drive.AvailableSpace
JScript3.0+
Синтаксис
c/r/veofc/ecf.AvailableSpace
Описание
Свойство AvailableSpace объекта Drive определяет объем доступного пользователю
пространства диска или сетевого устройства совместного доступа.
Пример
Код в листинге 14.12 реализует пример определения доступного пользователю
объема диска С.
Листинг 14.12. Пример определения доступного пользователю
объема диска С с помощью свойства AvailableSpace объекта Drive
<script type="text/jscript" language="JScript">
<!--
// Создать строку для хранения пути к диску.
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting. FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вывести на экран объем доступного пространства.
document.write("Oбъeм доступного пространства диска ".drivePath," составляет");
Глава 14. JScript RunTime 1267
document.write(drive.AvailableSpace);
//-->
</script>
Drive. DriveLetter
JScript3.0+
Синтаксис
driveobject. DriveLetter
Описание
Свойство DriveLetter объекта Drive содержит имя локального диска или сетевого
устройства совместного использования.
Пример
Код в листинге 14.13 определяет пример определения имени указанного диска.
Листинг 14.13. Пример определения имени диска с помощью
свойства DriveLetter объекта Drive
<script type="text/jscript" language="JScript">
<!--
//Создать строку для хранения пути к диску.
vardrivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вывести на экран имя диска.
document.write("l/lMfl диска ",drivePath," - ".drive.DriveLetter);
//-->
</script>
Drive. DriveType
JScript3.0+
Синтаксис
driveobject. DriveType
Описание
Свойство DriveType объекта Drive содержит числовое значение, соответствующее
типу указанного диска. Значения типов, возвращаемых свойством DriveType,
перечислены в табл. 14.4.
Таблица 14.4. Значения типов дисков
Значение
0
1
2
3
4
Описание
Неизвестный диск
Съемный диск
Несъемный диск
Сетевой диск
CD-ROM
1 268 Часть III. Справочник по JavaScript
Виртуальный диск |
Пример
Код в листинге 14.14 осуществляет пример определения типа указанного диска.
Листинг 14.14. Пример определения типа диска с помощью
свойства DriveType объекта Drive
<script type="text/jscript" language="JScript">
<!--
// Создать строку для хранения пути к диску.
var drivePath = "С:";
// Создать объект файловой системы.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
// Вывести на экран тип диска.
document.write("TMn диска ",drivePath," - ".drive.DriveType);
//-->
</script
Drive.FileSystem
JScript3.0+
Синтаксис
driveobject. FileSystem
Описание
Свойство FileSystem объекта Drive определяет тип файловой системы,
используемой на указанном диске.
Пример
Код в листинге 14.15 реализует пример определения типа файловой системы для
указанного диска.
Листинг 14.15. Пример определения типа файловой системы диска
с помощью свойства FileSystem объекта Drive
<script type="text/jscript" language="JScript">
<!--
//Создать переменную для хранения пути к диску.
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вывести на экран тип используемой диском файловой системы.
document.write("Ha диске ".drivePath," используется файловая система ");
document.write(drive. FileSystem,".");
//-->
</script>
Глава 14. JScript RunTime 1269
Drive.FreeSpace
JScript3.0+
Синтаксис
driveobject. FreeSpace
Описание
Свойство FreeSpace объекта Drive содержит объем свободного пространства (в
байтах) доступного пользователю на указанном диске или сетевом устройстве
совместного использования.
Пример
Код в листинге 14.16 реализует пример определения объема свободного
пространства на диске С.
Листинг 14.16. Пример определения свободного пространства диска
с помощью свойства FreeSpace объекта Drive
<script type="text/jscript" language="JScript">
<!--
//Создать строку для хранения пути к диску.
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вывести на экран объем свободного пространства диска.
document.writefHa диске ".drivePath," объем свободного пространства составляет
".drive.FreeSpace);
document.writef байт.");
//-->
</script
Drive.IsReady
JScript3.0+
Синтаксис
driveobject. IsReady
Описание
Свойство IsReady объекта Drive содержит состояние указанного диска. Если диск
готов, свойство возвращает значение true, в противном случае возвращается false.
Пример
Код в листинге 14.17 реализует пример определения готовности к работе диска А.
Листинг 14.17. Пример определения готовности диска А с помощью
свойства IsReady объекта Drive
<script type="text/jscript" language="JScript">
<!--
//Создать строку для хранения пути к диску.
1 270 Часть III. Справочник по JavaScript
var drivePath = "A:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
//Создать объект Drive для диска А.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Определить, готов ли диск.
if(drive.lsReady)
document.write("fli/icK ",drivePath," готов.");
else
document.write("flncK ",drivePath," HE готов.");
//-->
</script>
Drive. Path
JScript3.0+
Синтаксис
driveobject.PaVn
Описание
Свойство Path объекта Drive определяет путь к указанному файлу, каталогу или
диску.
Пример
Код в листинге 14.18 реализует пример определения пути к диску С.
Листинг 14.18. Пример определения пути к диску С с помощью
свойства Path объекта Drive
<script type="text/jscript" language="JScript">
<!--
//Создать строку для хранения пути к диску.
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вывести на экран путь к диску С.
document.writefnyTb к диску С - ",drive.Path);
//-->
</script>
Drive. RootFolder
JScript3.0+
Синтаксис
driveobject. RootFolder
Описание
Свойство RootFolder объекта Drive определяет объект Folder, который
представляет собой корневой каталог указанного диска.
Глава 14. JScript RunTime 1271
Пример
Код в листинге 14.19 приведена функция, которая возвращает корневой каталог
диска С.
Листинг 14.19. Пример определения корневого каталога диска с
помощью свойства RootFolder объекта Drive.
function getCRootFolder()
{
//Создать строку для хранения пути к диску,
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вернуть корневой каталог диска С.
return(drive. RootFolder);
Drive.SerialNumber
JScript3.0+
Синтаксис
dr/veob/ecf.SerialNumber
Описание
Свойство SerialNumber объекта Drive содержит уникальный десятичный серийный
номер, который используется для идентификации указанного тома диска.
Пример
Код в листинге 14.20 реализует пример определения десятичного серийного номера
диска С.
Листинг 14.20. Пример определения серийного номера диска С с
помощью свойства SerialNumber объекта Drive
<script type="text/jscript" language="JScript">
<!--
//Создать строку для хранения пути к диску.
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вывеси на экран серийный номер диска С.
document.write("CepnUHb^ номер диска: ".drive.SerialNumber);
//-->
</script>
Drive.ShareName
JScript3.0+
1 272 Часть III. Справочник по JavaScript
Синтаксис
c/r/Veofo/ecf.ShareName
Описание
Свойство ShareName объекта Drive содержит сетевое имя указанного диска.
Пример
Код в листинге 14.21 приведена функция, которая возвращает сетевое имя диска.
Листинг 14.21. Пример определения сетевого имени диска с
помощью свойства ShareName объекта Drive
function getShareName(drivePath)
{
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
//Создать объект Drive для диска drivePath.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вернуть сетевое имя диска.
return(drive. ShareName);
}
Drive.TotalSize
JScript3.0+
Синтаксис
dr/Veofo/ecf. TotalSize
Описание
Свойство TotalSize объекта Drive возвращает полный объем указанного диска в
байтах.
Пример
Код в листинге 14.22 реализует пример определения полного объема диска.
Листинг 14.22. Пример определения полного объема диска с
помощью свойства TotalSize объекта Drive
<script type="text/jscript" language="JScript">
<!--
//Создать строку для хранения пути к диску.
var drivePath = "С:";
//Создать объект файловой системы.
var fileSysObj = new ActiveXObject("Scripting.FileSystemObject");
//Создать объект Drive для диска С.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вывести на экран полный объем диска.
document.write("rionHb^ объем диска ".drivePath," составляет ".drive.TotalSize," байт.");
//-->
</script>
Глава 14. JScript RunTime 1273
Drive.VolumeName
JScript3.0+
Синтаксис
driveobject. VolumeName
driveobject. VolumeName = имя_нового_тома
Описание
Свойство VolumeName объекта Drive содержит метку тома указанного диска. Если
за этим свойством следует знак равно (=), устанавливается метка тома с именем
имя_ноеого_тома.
Пример
Код в листинге 14.23 реализует функцию, которая возвращает метку тома диска.
Листинг 14.23. Пример определения метки тома диска с помощью
свойства VolumeName объекта Drive
function getVolumeName(drivePath)
{
//Создать объект файловой системы.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
//Создать объект Drive для диска drivePath.
var drive = fileSysObj.GetDrive(fileSysObj.GetDriveName(drivePath));
//Вернуть имя метки тома диска.
return(drive. VolumeName);
Drives
JScript3.0+
Синтаксис
fileSysObj.Drives
Описание
Коллекция Drives представляет собой доступную только для чтения коллекцию всех
доступных дисков. Коллекция аналогична массиву за тем лишь исключением, что
для выборки элементов коллекции используется указатель, а не индекс элемента.
Указатель на элемент можно переместить только на первый или на следующий
элемент коллекции. Поскольку объект Drives является коллекцией, доступ к дискам
можно получить только через объект Enumerator. Свойства объекта Drives
перечислены в табл. 14.5. Более подробная информация по работе с коллекциями
приведена в описании объекта Enumerator.
Таблица 14.5. Свойства коллекции Drives
Элемент
Count
Item
Описание
Возвращает количество элементов в коллекции.
Возвращает из коллекции Drives элемент с указанным ключом.
1 274 Часть III. Справочник по JavaScript
Пример
Код в листинге 14.24 реализует пример определения количества дисков в коллекции
Drives с помощью объекта FiieSystemObject и свойства count объекта Drives.
Листинг 14.24. Пример использования объекта Drives
<script type="text/jscript" language="JScript">
<!-
var fileSysObj = new ActiveXObject("Scripting. FiieSystemObject");
document.writefflocTynHo ".fileSysObj.Drives.count," диска");
//-->
</script>
Drives.Count
JScript3.0+
Синтаксис
Drives.Count
Описание
Свойство Count коллекции Drives содержит количество элементов в коллекции.
Пример
Код в листинге 14.25 реализует пример определения количества элементов в
коллекции Drives.
Листинг 14.25. Пример определения количества элементов в
коллекции Drives с помощью свойства Count
<script type="text/jscript" language="JScript">
<!--
//Создать объект файловой системы.
var fileSysObj = new ActiveXObject("Scripting.FiieSystemObject");
//Вывести на экран количество дисков.
document.writefflocTynHO ".fileSysObj.Drives.count," диска.");
//-->
</script>
Drives. Item ()
JScript3.0+
Синтаксис
new enumeratorobj = Enumerator(Drives)
enumeratorobj. Иет(ключ)
Описание
Свойство Нет() извлекает из коллекции Drives диск по его ключу, заданному
параметром ключ.
Глава 14. JScript RunTime 1275
Пример
Код в листинге 14.26 создает объект Enumerator, который используется для доступа
к элементам коллекции Drives. Свойство Item() используется объектом enumerator
для определения имени и типа каждого диска.
Листинг 14.26. Выборка информации о дисках из коллекции Drives с
помощью свойства ltem()
<html>
<п1>Имена и типы дисков:</1т1>
<script type="text/jscript" language="JScript">
<!--
//Создать объект Enumerator.
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
varen = new Enumerator(fileSysObj.Drives);
//Вывести на экран имя и типа каждого диска.
for (;!en.atEnd();en.moveNext())
{
document.write("flncK ",en.item().DriveLetter);
document.writef имеет тип ",en.item().DriveType,"<br>");
</script>
</html>
JScript3.0+
Синтаксис
fileObj = new ActiveXObject("Scripting.FileSystemObject");
Описание
Объект File предоставляет доступ ко всем свойствам файлов. Специфические
свойства и методы объекта File перечислены в табл. 14.6.
Таблица 14.6. Свойства и методы объекта File
Свойство/метод
Attributes
СоруО
DateCreated
DateLastAccessed
DateLastModified
DeleteO
Drive
Move()
Name
0 pen AsTextStrea m ()
ParentFolder
Path
ShortName
ShortPath
Описание
Возвращает атрибуты файла.
Копирует файл из одного места в другое.
Возвращает дату создания файла.
Возвращает дату последнего использования файла.
Возвращает дату последнего изменения файла.
Удаляет файл.
Возвращает диск, на котором находится файл.
Перемещает файл из одного каталога в другой.
Возвращает имя файла.
Открывает поток, направленный в файл.
Возвращает имя родительского каталога файла.
Возвращает путь к файлу.
Возвращает короткое имя файла.
Возвращает короткий путь к файлу.
1 276 Часть III. Справочник по JavaScript
Size
Type
Возвращает размер файла.
Возвращает тип файла.
Пример
Код в листинге 14.27 реализует пример создания нового объекта File.
Листинг 14.27. Пример создания объекта File
<script type="text/jscript" language="JScript">
<!--
var myObject, f;
// Создать экземпляр нового объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("f:\\test.txt");
document.write("l/lMfl файла:" + f.Name);
//-->
</script>
File.Attributes
JScript3.0+
Синтаксис
file.Att\-\butes[Hoebie_ampu6ymbi]
Описание
Свойство Attributes используется для определения или установки атрибутов файла.
Это свойство представляет собой массив, который для установки новых атрибутов
принимает необязательный параметр новые_атрибуты. Атрибуты могут быть
доступны для чтения/записи или только для чтения. Список всех возможных
атрибутов приведен в табл. 14.7.
Таблица 14.7. Атрибуты файла
Свойство
0
1
2
4
8
16
32
64
128
Описание
Обычный файл. Атрибуты не установлены.
Файл, предназначенный Только для чтения. Атрибут "чтение/запись".
Скрытый файл. Атрибут "чтение/запись".
Системный файл. Атрибут "чтение/запись".
Метка тома диска. Атрибут "только для чтения".
Папка в каталоге. Атрибут "только для чтения".
Указывает, что со времени последнего резервного сохранения файл
был изменен. Атрибут "чтение/запись".
Ссылка или ярлык. Атрибут "только для чтения".
Метка тома диска. Атрибут "только для чтения".
Пример
Код в листинге 14.28 реализует пример определения всех атрибутов фиктивного
файла test.txt. Когда пользователь щелкает на кнопке "Определить атрибуты" (Get
Attributes), для определения свойств файла и вывода их на экран используется
свойство Attributes.
Глава 14. JScript RunTime 1277
Листинг 14.28. Пример использования свойства Attributes
<html>
<script type="text/jscript" language="JScript">
<!--
function get()
{
// Объявить переменные,
var myObject, f;
// Создать новый объект File.
myObject = new ActiveXObject("Scripting.FileSystemObject");
f = myObject.GetFile("c:\\test.txt");
// Определить все атрибуты файла.
if(!f.attributes) а1еп:("атрибуты не установлены");
var strAttributes ="";
if (f.attributes & 1) strAttributes += "Только для чтения\п";
if (f.attributes & 2) strAttributes +="Скрытый\п";
if (f.attributes & 4) strAttributes +="Системный\п";
if (f.attributes & 8) strAttributes +="Метка тома\п";
if (f.attributes & 16) strAttributes +="Каталог\п";
if (f.attributes & 32) strAttributes +="Установлен архивный бит\п";
if (f.attributes & 64) strAttributes +="Ярлык или ссылка\п";
if (f.attributes & 128) strAttributes +="Сжатый файл\п";
alert(strAttributes);
</script>
Определить установленные атрибуты.<br>
<form name="myForm">
<input type="Button" уа!ие="Определить атрибуты" onClick='get()'>
</form>
</html>
File.Copy()
JScript3.0+
Синтаксис
Ш.Copy (цель, overwrite)
Описание
Метод Сору() используется для копирования указанного файла из одного каталога в
другой. Этот метод использует два параметра. Параметр цель определяет путь для
копирования файл. Параметр overwrite — это необязательное булево значение,
которое указывает, следует ли перезаписывать существующий файл под таким же
именем.
Пример
Код в листинге 14.29 реализует пример использования метода Сору() для
копирования фиктивного файла test.txt в файл "testcopy.txt".
Листинг 14.29. Пример использования метода Сору()
<html>
1 278 Часть III. Справочник по JavaScript
<script type="text/jscript" language="JScript">
<!—Начало невидимого блока
function copy()
{
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("c:\\test.txt");
// Скопировать файл "test.txt" в файл "testcopy.txt"
f.Copy("c:\\testcopy.txt",1);
}
// Конец невидимого блока ->
</script>
Для копирования файла test.txt в файл testcopy.txt щелкните на кнопке "Копировать"
(Сору)
<form name="myForm">
<input type="Button" уа1ие="Копировать" onClick='copy()'>
</form>
</html>
File.DateCreated
JScript3.0+
Синтаксис
file. DateCreated
Описание
Свойство DateCreated используется для определения даты создания файла.
Пример
Код в листинге 14.30 реализует пример использования свойства DateCreated для
определения даты создания файла test.txt.
Листинг 14.30. Пример использования свойства DateCreated
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция определяет дату создания файла "test.txt".
function get()
{
var myObject, f, date;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
f = myObject.GetFile("c:\\test.txt");
// Определить дату создания файла,
date = f. DateCreated;
alert ("Дата создания файла:" + date);
</script>
Определение даты создания файла test.txt.<br>
<form name="myForm">
<input type="Button" уа!ие="Определить дату" onClick='get()'>
Глава 14. JScript RunTime 1279
</form>
</html>
Fi le. DateLastAccessed
JScript3.0+
Синтаксис
/У/e.DateLastAccessed
Описание
Свойство DateLastAccessed используется для определения даты последнего
использования файла.
Пример
Код в листинге 14.31 реализует пример применения свойства DateLastAccessed для
определения даты последнего использования файла test.txt.
Листинг 14.31. Пример использования свойства DateLastAccessed
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция определяет дату последнего использования файла.
function get()
{
var myObject, f, date;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("c:\\test.txt");
date = f. DateLastAccessed;
// Вывести на экран дату последнего использования файла,
alert ("Дата последнего использования этого файла:" + date);
}
//-->
</script>
Определение даты последнего использования файла test.txt.<br>
<form name="myForm">
<input type="Button" уа1ие="Определить дату" onClick='get()'>
</form>
</html>
Fi le. DateLastMod if ied
JScript3.0++
Синтаксис
fiVe.DateLastModified
Описание
Свойство DateLastModified используется для определения даты последнего
изменения файла.
1 280 Часть III. Справочник по JavaScript
Пример
Код в листинге 14.32 реализует пример использования свойства DateLastModified
для определения даты последнего изменения файла test.txt.
Листинг 14.32. Пример использования свойства DateLastModified
<html>
<script type="text/jscript" language="JScript">
<!--
//Функция создает новый файл и определяет дату его последнего изменения.
function get()
{
var myObject, f, date;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("c:\\test.txt");
date = f. DateLastModified;
// Вывести на экран дату последнего изменения файла,
alert ("Дата последнего изменения файла:" + date);
}
//-->
</script>
Определение даты последнего изменения файла test.txt.<br>
<form name="myForm">
<input type="Button" уа1ие="Определить дату" onClick='get()'>
</form>
</html>
File.Delete
JScript3.0+
Синтаксис
/У/e.DeleteO
Описание
Метод Delete() используется для удаления указанного файла.
Пример
Код в листинге 14.33 реализует пример удаления файла с помощью метода Delete().
Листинг 14.33. Пример использования метода Delete()
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция создает новый файл, а затем
// удаляет его с помощью метода Delete().
function remove()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
var f = myObject.GetFile("c:\\mytest.txt");
Глава 14. JScript RunTime 1281
f.DeleteO;
}
//-->
</script>
Удалить файл "mytest.txt".<br>
<form name="myForm">
<input type="Button" уа1ие="Удалить файл" onClick='remove()'>
</form></html>
File.Drive
JScript3.0++
Синтаксис
ffte.Drive
Описание
Свойство Drive возвращает имя диска, на котором находится указанный файл.
Пример
Код в листинге 14.34 реализует пример использования свойства Drive для
определения имени диска, на котором находится указанный файл.
Листинг 14.34. Пример использования свойства Drive
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция определяет имя диска, на котором находится файл,
// и выводит его на экран.
function get()
{
var myObject, f, d;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
f = myObject.GetFile("c:\\test.txt");
d = f.drive;
а!е|1("Имя диска, на котором находится файл test.txt:" + d);
</script>
Определение имени диска, на котором находится файл test.txt<br>
<form name="myForm">
<input type="Button" уа1ие="Определить имя диска" onClick='get()'>
</form>
</html>
File.Move()
JScript3.0+
Синтаксис
Я1еМоче(цель)
1 282 Часть III. Справочник по JavaScript
Описание
Метод Move используется для перемещения файла из одного каталога в другой. Это
метод использует один параметр, цель, который указывает путь для целевого
местоположения файла.
Пример
В листинге 14.35 приведен пример использования метода Move() для перемещения
файла test.txt из каталога "С:\\" в каталог "C:\\mydir\\".
Листинг 14.35. Пример использования метода Move()
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция создает новый файл и перемещает его из
// корневого каталога диска С в каталог mydir.
function move()
{
var myObject, f;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("c:\\test.txf);
f. Move("c:\\mydir\\");
}
//-->
</script>
Для перемещения файла test.txt в каталог mydir щелкните на кнопке.<br>
<form name="myForm">
<input type="Button" уа1ие="Переместить файл" onClick='move()'>
</form>
</html>
File.Name
JScript3.0++
Синтаксис
ft/e.Name
Описание
Свойство Name используется как для установки, так и для считывания имени файла.
Пример
В листинге 14.36 приведен пример использования свойства Name для определения
имени файла (test.txt) и вывода имени на экран в окне предостережения.
Листинг 14.36. Пример использования свойства Name
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция создает новый файл и с помощью свойства name
// выводит на экран имя созданного файла .
function get()
Глава 14. JScript RunTime 1283
{
var myObject, f;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting.FileSystemObject");
f = myObject.GetFile("c:\\test.txt");
а1ег1("Имя файла:" + f.Name);
</script>
Определение имени файла.<br>
<form name="myForm">
<input type="Button" уа1ие="Определить имя" onClick='get()'>
</form>
</html>
File.OpenAsTextStream()
JScript3.0+
Синтаксис
/y/e.OpenAsTextStream(/omocte, format)
Описание
Метод OpenAsTextStream используется для открытия указанного текстового
потока, который можно использовать для чтения или записи файла. В качестве
аргументов метод может принимать два необязательных параметра. Первый
параметр, iomode, указывает режим ввода/вывода для файла. Допустимые режимы
ForReading, ForWriting и ForAppending рассмотрены в табл. 14.8. Второй
параметр, format, указывает формат файла. По умолчанию используется значение
ASCII, однако, можно использовать одно из трех значений, приведенных в табл.
14.9.
Таблица 14.8. Возможные значения параметра iomode
Константа
ForReading
ForWriting
ForAppending
Значение
1
2
3
Описание
Открывает файл только в режиме чтения.
Открывает файл для чтения и записи. Если указанный
файл уже существует, он перезаписывается.
Открывает файл для чтения и записи. Если указанный
файл уже существует, новое содержимое добавляется
в конец файла.
Таблица 14.9. Возможные значения параметра format
Константа
TristateUseDefault
TristateTrue
TristateFalse
Значение
-2
-1
0
Описание
Открывает файл с использованием системных
настроек, заданных по умолчанию.
Открывает файл как файл Unicode.
Открывает файл в режиме ASCII.
Пример
Код в листинге 14.37 реализует пример использования метода OpenAsTextStream
для открытия потока в файл test.txt в режиме ASCII и записи в файл строки.
1 284 Часть III. Справочник по JavaScript
Листинг 14.37. Пример использования метода OpenAsTextStream
<html>
<script type="text/jscript" language="JScript">
<!--
function open()
{
var myObject, f, text;
// Объявить локальные переменные,
var TristateFalse = 0;
var ForWriting = 2;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
myObject.CreateTextFile( "c:\\test.txt");
f = myObject.GetFile("c:\\test.txt");
text = f.OpenAsTextStream(ForWriting, TristateFalse);
text.Write( "Просто бессмысленный текст");
text.Close();
</script>
Открытие файла и запись в него данных.<Ьг>
<form name="myForm">
<input type="Button" уа1ие="Открыть поток в файл" onClick='open()'>
</form>
</html>
File.ParentFolder
JScript3.0++
Синтаксис
ft/e.ParentFolder
Описание
Свойство ParentFolder используется для определения родительского каталога, из
которого был получен данный файл.
Пример
Код в листинге 14.38 реализует пример использования свойства ParentFolder.
Листинг 14.38. Пример использования свойства ParentFolder
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция отображает на экране путь к родительскому каталогу.
function get()
{
var myObject, f;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
f = myObject.GetFile("c:\\tmp\\myTest.txt");
а1е11("Имя родительского каталога:" + f.ParentFolder.Path);
Глава 14. JScript RunTime 1285
</script>
Щелкните на кнопке, чтобы определить имя родительского каталога.<br>
<form name="myForm">
<input type="Button" уа1ие="Определить имя родительского каталога" onClick='get()'>
</form>
</html>
File.Path
JScript3.0++
Синтаксис
ff/e.Path
Описание
Свойство Path используется для определения пути к указанному файлу.
Пример
Код в листинге 14.39 реализует пример использования свойства Path.
Листинг 14.39. пример использования свойства Path
<html>
<script type="text/jscript" language="JScript">
<!--
function getPath()
{
var myObject, f;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("c:\\tmp\\myTest.txt");
а1е|1("Путь к файлу:" + f.Path);
}
//-->
</script>
Определение пути к файлу.<Ьг>
<form name="myForm">
<input type="Button" уа1ие="Определить путь" onClick='getPath()'>
</form>
</html>
File.ShortName
JScript3.0++
Синтаксис
ff/e.ShortName
Описание
Свойство ShortName возвращает имя файла, которое используется программами,
требующими именования файлов в формате 8.3.
1 286 Часть III. Справочник по JavaScript
Пример
Код в листинге 14.40 реализует пример определения короткого имени файла.
Листинг 14.40. Пример использования свойства ShortName
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция определяет короткое имя файла.
function get()
{
var myObject, f;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("c:\\tmp\\myTest.txt");
alert("KopoTKoe имя файла:" + f.ShortName);
}
//-->
</script>
Определение короткого имени файла.<br>
<form name="myForm">
<input type="Button" уа1ие="Определить короткое имя" onClick='get()'>
</form>
</html>
File.ShortPath
JScript3.0++
Синтаксис
//fe.ShortPath
Описание
Свойство ShortPath возвращает короткое имя пути к файлу, которое используется
программами, требующими именования в формате 8.3.
Пример
Код в листинге 14.41 приведен пример определения короткого имени пути к
указанному файлу.
Листинг 14.41. Пример использования свойства ShortPath
<html>
<script type="text/jscript" language="JScript">
<!--
// Функция определяет короткое наименование пути к файлу.
function get()
{
var myObject, f;
// Создание экземпляра объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
f = myObject.GetFile("c:\\tmp\\myTest.txt");
alert("KopoTKoe имя пути к файлу:" + f.ShortPath);
Глава 14. JScript RunTime 1287
</script>
Определение короткого имени пути к файлу.<br>
<form name="myForm">
<input type="Button" уа1ие="Определить короткое имя пути" onClick='get()'>
</form>
</html>
File.Size
JScript3.0++
Синтаксис
ft/e.Size
Описание
Свойство Size возвращает размер указанного файла.
Пример
Код в листинге 14.42 реализует пример использования свойства Size для
определения размера файла.
Листинг 14.42. Пример использования свойства Size
<html>
<script type="text/jscript" language="JScript">
<!--
function get()
{
var myObject, f;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFile("c:\\tmp\\myTest.txt");
alert("Pa3Mep файла:" + f.Size);
}
//-->
</script>
Определение размера файла.<Ьг>
<form name="myForm">
<input type="Button" уа1ие="Определить размер файла" onClick='get()'>
</form>
</html>
File.Type
JScript3.0++
Синтаксис
fi/e.Type
Описание
Свойство Type используется для получения информации о типе файла.
1 288 Часть III. Справочник по JavaScript
Пример
Код в листинге 14.43 реализует пример использования свойства Туре для
определения типа файла myTest.txt.
Листинг 14.43. Пример использования свойства Туре
<html>
<script type="text/jscript" language="JScript">
<!--
function get()
{
var myObject, f;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
// Выбор файла myTest.txt.
f = myObject.GetFile("c:\\tmp\\myTest.txt");
а1епХ"Тип файла:" + f.Type);
}
//-->
</script>
<form name="myForm">
<input type="Button" уа1ие="Определить тип файла" onClick='get()'>
</form>
</html>
Files
JScript3.0+
Синтаксис
Jscript-коллекция объектов File.
Описание
Объект Files представляет собой коллекцию файлов каталога. Свойства и методы
объекта Files перечислены в табл. 14.10.
Таблица 14.10. Свойства и методы объекта Files
Свойство/метод
Count
Item
Описание
Возвращает количество элементов в коллекции.
Устанавливает или возвращает элемент по указанному ключу.
Пример
Код в листинге 14.44 реализует пример создания нового объекта Files.
Листинг 14.44. Пример создания объекта Files
<html>
<script language="JScript">
<!--
// Функция выводит на экран перечень файлов
// указанного каталога.
function ShowList(foldername)
Глава 14. JScript RunTime 1289
var myObject, f, MyFiles, names;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
f = myObject.GetFolder(foldername);
// Сохранить файлы в перечислителе.
myFiles = new Enumerator(f.files);
names="";
for (i=0; !myFiles.atEnd(); myFiles.moveNext()){
names += myFiles.item();
names += "<br>";
}
document.write(names);
</script>
<body>
<form name="form1">
Введите имя существующего каталога, включая имя диска,
если файл находится не на диске С.
<input type="text" size=5" name="file">
<br><br>
<input type="Button" уа1ие="Получить список файлов"
onClick='ShowList(document.form1.file.value)'>
</form>
</body>
to </html>
Files.Count
JScript2.0+
Синтаксис
ff/es.Count
Описание
Свойство Count возвращает количество элементов в коллекции Files.
Пример
Код в листинге 14.45 реализует пример использования свойства Count для
определения количества элементов в коллекции Files.
Листинг 14.45. Пример использования свойства Count
<html>
<script language="JScript">
<!--
// Функция определяет количество файлов
// в указанном каталоге.
function getCount(foldemame)
{
var myObject, f, filesCount;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
f = myObject.GetFolder(foldername);
1 290 Часть III. Справочник по JavaScript
// Определить количество файлов в каталоге.
filesCount = f.files. Count;
document.write("KonH4ecTBO файлов в каталоге:" + filesCount);
</script>
<body>
<form name="myForm">
Введите имя каталога, содержащего файлы.
<input type="text" size=5" name="file">
<br><br>
<input type="Button" уа1ие="Определить количество файлов"
onClick='getCount(document.form1.file.value)'>
</form>
</body>
</html>
Files.Item
JScript2.0+
Синтаксис
fifes. Item
Описание
Свойство Item устанавливает или возвращает элемент item коллекции по его ключу
key.
Пример
Код в листинге 14.46 реализует пример использования свойства Item.
Листинг 14.46. Пример использования свойства Item
<html>
<script language="JScript">
<!--
// Функция извлекает элемент Item из коллекции файлов
// в указанном каталоге.
function getltem(foldemame)
{
var myObject, f, filesltem;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
f = myObject.GetFolder(foldername);
// Выборка файла setup.exe.
filesltem = f.files. ltemfSetup.exe ");
document.write("bbm выбран файл:" + filesltem);
</script>
<body>
<form name="myForm">
Введите имя каталога, содержащего файлы.
<input type="text" size=5" name="file">
Глава 14. JScript RunTime 1 291
<br><br>
<inputtype="Button" value="Bbi6paTb файл" onClick='getltem(document.form1.file.value)'>
</form>
</body>
</html>
FileSystemObject
JScript3.0+
Синтаксис
Основной объект JScript, который создается с помощью метода ActiveXObjectQ с
аргументом Scripting.FileSystemObject.
Описание
Объект FileSystemObject предоставляет доступ к файловой системе компьютера.
Свойства и методы объекта FileSystemObject перечислены в табл. 14.11.
Таблица 14.11.
Свойство/метод
BuildPath()
CopyFile()
CopyFolder()
CreateFolder()
CreateTextfileO
DeleteFileO
DeleteFolder()
DriveExists()
Drives
FileExistsO
FolderExists()
GetAbsolutePathNameO
GetBaseName()
GetDrive()
GetDriveName()
ExtensionName()
GetFile()
GetFileName()
GetFolder()
GetParentFolderName()
GetSpecialFolder()
GetTempName()
MoveFile()
MoveFolder()
OpenTextFileQ
Свойства и методы объекта FileSystemObject
Описание
Добавляет данные в путь к файлу.
Копирует файл из одного каталога в другой.
Копирует каталог из одного каталога в другой.
Создает новый каталог.
Создает новый текстовый файл.
Удаляет файл.
Удаляет каталог.
Определяет, существует ли указанный диск.
Возвращает коллекцию Drives, в которой содержатся все
доступные диски.
Определяет, существует ли указанный файл.
Определяет, существует ли указанный каталог.
Возвращает абсолютный путь к файлу.
Возвращает базовое имя последнего компонента.
Возвращает имя диска, на котором находится файл.
Возвращает метку диска, на котором находится файл.
Возвращает расширение файла.
Возвращает файл.
Возвращает имя файла.
Возвращает имя каталога, в котором находится файл.
Возвращает имя родительского каталога.
Возвращает имена специальных каталогов.
Создает случайный временный файл.
Перемещает файл из одного каталога в другой.
Перемещает каталог из одного каталога в другой.
Открывает текстовый поток, направленный в файл.
Пример
Код в листинге 14.47 реализует пример создания объекта FileSystemObject.
1 292 Часть III. Справочник по JavaScript
Листинг 14.47. Пример создания объекта FileSystemObject
<html>
<script language="JScript">
<!--
// Создать новый объект FileSystemObject.
var myObject;
myObject = new ActiveXObject("Scripting. FileSystemObject");
// ->
</script>
</html>
FileSystemObject.BuildPath()
JScript3.0+
Синтаксис
filesystemobject.BuildPath(nymb, имя)
путь - строка, содержащая существующий путь,
имя — имя, добавляемое к существующему пути.
Описание
Метод BuildPath() используется для добавления к существующему пути имени. При
необходимости между существующим путем и именем вставляется разделитель.
Пример
Код в листинге 14.48 реализует пример использования метода BuildPath().
Листинг 14.48. Пример использования метода BuildPath()
<html>
<script language="JScript">
<!--
function GetNewPath(path)
{
var myObject, newpath;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting.FileSystemObject");
newpath = myObject.BuildPath(path, "Wnewstuff");
а1епХ"Результат применения метода:" + newpath);
</script>
Добавить "\ \newstuff' к существующему пути: "c:\\tmp"
<body>
<form name="myForm">
<input type="Button" уа1ие="Создать путь" onClick='GetNewPath("c:\\tmp")'>
</form>
</body>
</html>
FileSystemObjectCopyFile
JScript3.0+
Глава 14. JScript RunTime 1293
Синтаксис
filesystemobject.CopyFile(ucmo4HUK, цель, overwrite)
Описание
Метод CopyFile() используется для копирования одного или нескольких файлов в
указанный каталог. В качестве аргументов метод использует три параметра. Первый
параметр, источник, представляет собой строку, в которой содержится путь и имя
копируемого файла. Второй параметр, цель, представляет собой строку, в которой
содержится путь и имя целевого файла. И последний параметр, overwrite, - это
необязательный параметр, содержащий булево значение, которое указывает, следует
ли перезаписывать существующий файл.
Пример
Код в листинге 14.49 реализует пример копирования файла из одного каталога в
другой.
Листинг 14.49. Пример использования метода CopyFile()
<html>
<script language="JScript">
<!--
function copy()
{
var myObject, newpath;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
// Копировать файл test.txt с корневого каталога диска С в каталог tmp.
myObject.CopyFile ("c:\\test.txt", "c:\\tmp\\myTest.txt");
</script>
<body>
Копирование файла "c:\ test.txt" в файл: "с:\ tmp\ myTest.txt"
<form name="myForm">
<input type="Button" уа1ие="Копировать файл" onClick='copy()'>
</form>
</body>
</html>
FileSystemObject.CopyFolder()
JScript3.0+
Синтаксис
filesystemobject.CopyFolder(ucmo4HU/f, цель, overwrite)
Описание
Метод CopyFolder() копирует каталог из одного каталога в другой. В качестве
аргументов метод использует три параметра. Первый параметр, источник,
представляет собой строку, в которой содержится путь и имя копируемого файла.
Для копирования нескольких каталогов могут использоваться символы подстановки.
Второй параметр, цель, представляет собой строку, в которой содержится путь и имя
1 294 Часть III. Справочник по JavaScript
целевого файла. И последний параметр, overwrite, - это необязательный параметр,
содержащий булево значение, которое указывает, следует ли перезаписывать
существующий файл.
Пример
Код в листинге 14.50 реализует пример использования метода CopyFolder().
Создается новый объект FileSystemObject, который предоставляет доступ к
файловой системе компьютера. Затем этот объект используется для копирования
всего содержимого каталога tmp в каталог newtmp. Символ * указывает, что
копированию подлежит все содержимое каталога tmp.
Листинг 14.50. Пример использования метода CopyFolder()
<html>
<script language="JScript">
<!--
// Функция создает новый объект FileSystemObject и копирует
// файл из одного каталога в другой.
function copy()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Копировать все файлы из каталога "tmp" в каталог "newtmp".
myObject.CopyFolder ("c:\\tmp\V", "c:\ \newtmp\\");
</script>
<body>
Копирование содержимого каталога "c:\ tmp" в каталог "c:\newtmp"
<form name="myForm">
<input type="Button" уа1ие="Копировать каталог" onClick='copy()'>
</form>
</body>
</html>
FileSystemObject.CreateFolder()
JScript3.0+
Синтаксис
filesystemobject.CreateFolder(uMH)
Описание
Метод CreateFolder() используется для создания нового каталога. В качестве
аргумента метод принимает параметр имя, который представляет собой строку,
содержащую имя создаваемого каталога.
Пример
Код в листинге 14.51 реализует пример использования метода CreateFolder().
Листинг 14.51. Пример использования метода CreateFolder()
<html>
Глава 14. JScript RunTime 1295
<script language="JScript">
<!--
// Функция создает новый каталог "newtmp".
function create()
{
var myObject, newfolder;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать новый каталог newtmp.
newfolder = myObject.CreateFolder ("c:\\newtmp\\");
</script>
<body>
Создание каталога: "c:\newtmp"
<form name="myForm">
<input type="Button" уа1ие="Создать новый каталог" onClick='create()'>
</form>
</body>
</html>
FileSystemObject.CreateTextFile()
JScript2.0+
Синтаксис
filesystemobject.CreateTextFile(u/wH_файла, overwrite, Unicode)
Описание
Метод CreateTextFile() используется для создания нового текстового файла. В
качестве аргументов метод использует три параметра. Первый параметр,
имя файла, представляет собой строку, содержащую имя создаваемого файла, а
второй параметр, overwrite, является булевым значением, которое указывает, следует
ли перезаписывать существующий файл. Третий параметр, Unicode, представляет
собой необязательный параметр, который указывает, какой файл будет создан:
Unicode или ASCII. По умолчанию этот параметр имеет булево значение false. Для
создания файла Unicode необходимо установить значение этого параметра равным
true.
Пример
Код в листинге 14.52 приведен пример использования метода CreateTextFile().
Создается экземпляр объекта FileSystemObject, который при создании файла
testing.txt применяет метод CreateTextFile().
Листинг 14.52. Пример использования метода CreateTextFile()
<html>
<script language="JScript">
<!--
// Функция создает новый текстовый файл "testing.txt".
function createFile()
{
var myObject, newfile;
1 296 Часть III. Справочник по JavaScript
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Создать текстовый файл "testing.txt".
newfile = myObject.CreateTextFile("c:\\testing.txt", false);
}
// ->
</script>
<body>
Создание текстового файла "testing.txt"
<form name="myForm">
<input type="Button" уа1ие="Создать новый файл" onClick='createFile()'>
</form>
</body>
</html>
FileSystemObject. DeleteFile()
JScript3.0+
Синтаксис
filesystemobject.DeleteFile(uMH_файла, force)
Описание
Метод DeleteFile() используется для удаления существующего файла. В качестве
аргументов используются два параметра. Первый параметр, имя_файла,
представляет собой строку, содержащую имя удаляемого файла, а второй параметр,
force, представляет собой булево значение, указывающее можно ли удалить файл,
доступный только для чтения.
Пример
Код в листинге 14.53 реализует пример удаления файла.
Листинг 14.53. Пример использования метода DeleteFile()
<html>
<script language="JScript">
<!--
// Функция удаляет файл "testing.txt".
function deleteFile()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Удалить файл texting.txt.
myObject. DeleteFile("c:\\testing.txt");
</script>
<body>
Удаление файла "testing.txt"
<form name="myForm">
<input type="Button" уа1ие="Удалить файл" onClick='deleteFile()'>
</form>
</body>
Глава 14. JScript RunTime 1297
</html>
FileSystemObject.DeleteFolder()
JScript3.0+
Синтаксис
filesystemobject.DeleteFolder(имя_папки, force)
Описание
Метод DeleteFolder() используется для удаления существующего каталога и всего
его содержимого. В качестве аргументов применяются два параметра. Первый
параметр, имя_папки, представляет собой строку, содержащую имя удаляемого
каталога, а второй параметр, force, представляет собой булево значение,
указывающее можно ли удалить файл, доступный только для чтения.
Пример
Код в листинге 14.54 реализует пример использования метода DeleteFolder().
Создается экземпляр объекта FileSystemObject, который для удаления каталога
newtmp применяет метод DeleteFolder().
Листинг 14.54. Пример использования метода DeleteFolder()
<html>
<script language="JScript">
<!--
// Функция удаляет каталог "newtmp".
function deleteFolder()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Удалить каталог "newtmp".
myObject.DeleteFolder("c:\\newtmp");
</script>
<body>
Удаление каталога: "newtmp"
<form name="myForm">
<input type="Button" уа1ие="Удалить каталог" onClick='deleteFolder()'>
</form>
</body>
</html>
FileSystemObject. DriveExists()
JScript3.0+
Синтаксис
filesystemobject.DriveExists (литера)
1 298 Часть III. Справочник по JavaScript
Описание
Метод DriveExists() используется для определения существования диска. В качестве
аргумента метод принимает параметр литера, который представляет собой имя
искомого диска.
Пример
Код в листинге 14.55 реализует пример проверки существования диска D.
Листинг 14.55. Пример использования метода DriveExists()
<html>
<script language="JScript">
<!--
// Функция проверяет существование диска D.
function checkDrive()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting.FileSystemObject");
// Проверить, существует ли диск D.
if(myObject.DriveExists("d")){
а1ег1("Дик D существует");
}
else {
а1еп:("Диск D не существует");
</script>
<body>
Проверка существования диска "D"
<form name="myForm">
<input type="Button" уа1ие="Проверить существование диска" onClick='checkDrive()'>
</form>
</body>
</html>
FileSystemObject.Drives
JScript3.0+
Синтаксис
filesystemobject. Drives
Описание
Коллекция Drives содержит все объекты Drive. Она используется для создания
объекта, содержащего все диски.
Пример
Код в листинге 14.56 реализует пример использования коллекции Drives.
Листинг 14.56. Пример использования коллекции Drives
<html>
Глава 14. JScript RunTime 1299
<script language="JScript">
<!--
function getdrive()
{
var myObject, drive, e;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
drive = myObject.Drives;
// Сохранить диски в перечислителе.
е = new Enumerator(drive);
а1е|1("Первый диск:" + e.item());
</script>
<body>
<form name="myForm">
<input type="Button" уа1ие="Определить имя диска" onClick='getdrive()'>
</form>
</body>
</html>
FileSystemObject.FileExists()
JScript3.0+
Синтаксис
/r/tesystemofoyecf.FileExists(t/MH_ файла)
Описание
Метод FileExists() используется для проверки существования в текущей системе
указанного файла. В качестве единственного аргумента метод принимает параметр
имяфайла, который представляет собой имя искомого файла.
Пример
В листинге 14.57 приведен пример использования метода FileExists() для проверки
существования файла test.txt.
Листинг 14.57. Пример использования метода FileExists()
<html>
<script language="JScript">
<!--
function checkfile()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Проверить существует ли указанный файл, и отобразить пользователю
соответствующее сообщение.
if(myObject.FileExists("c:\\test.txt")){
а1е|1("Файл существует");
}
else {
а1е11("Файл не существует");
1 300 Часть III. Справочник по JavaScript
</script>
<body>
Проверка существования файла "test.txt"
<form name="myForm">
<input type="Button" уа1ие="Проверить" onClick='checkfile()'>
</form>
</body>
</html>
Fi leSystem Object. FolderExists()
JScript3.0+
Синтаксис
filesystemobject.FolderExists(uM«_nan/<'ty)
Описание
Метод FolderExists() используется для проверки существования в текущей системе
указанного каталога. В качестве единственного аргумента метод использует
параметр имяпапки, который представляет собой имя искомого каталога.
Пример
Код в листинге 14.58 реализует пример использования метода FolderExists() для
проверки существования на указанном диске каталога tmp.
Листинг 14.58. Пример использования метода FolderExists()
<html>
<script language="JScript">
<!--
function checkfolder()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Проверить существует ли каталог tmp.
if(myObject.FolderExists("c:\\tmp")){
alertfHa диске С существует каталог tmp");
}
else {
alert("Ha диске С нет каталога tmp");
</script>
<body>
Проверка существования каталога "tmp" на диске С
<form name="myForm">
<input type="Button" уа1ие="Проверить" onClick='checkfolder()'>
</form>
</body>
Глава 14. JScript RunTime 1 301
</html>
FileSystemObject.GetAbsolutePathNameO
JScript3.0+
Синтаксис
/J7esystemobyecf.GetAbsolutePathName()
Описание
Метод GetAbsolutePathNameO возвращает для указанного пути полный и
однозначный путь.
Пример
В листинге 14.59 приведен пример использования метода GetAbsolutePathNameO.
Листинг 14.59. Пример использования метода GetAbsolutePathNameO
<html>
<script language="JScript">
<!--
// Функция определяет абсолютный путь и отображает его пользователю.
function getpath()
{
var myObject, path;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
path = myObject.GetAbsolutePathName("c:\\")
а1е|1("Абсолютный путь:" + path);
</script>
<body>
Определение абсолютного пути для С:\
<form name="myForm">
<input type="Button" уа1ие="Определить абсолютный путь" onClick='getpath()'>
</form>
</body>
</html>
FileSystemObject.GetBaseNameO
JScript3.0+
Синтаксис
filesystemobject.GetBaseName(nymb)
путь - обязательный параметр, указывающий компонент, базовое имя которого
необходимо определить.
Описание
Метод GetBaseNameO возвращает строку, в которой содержится базовое имя файла
или каталога без расширения.
1 302 Часть III. Справочник по JavaScript
Пример
Код в листинге 14.60 реализует пример использования метода GetBaseName().
Листинг 14.60. Пример использования метода GetBaseName()
<html>
<script language="JScript">
<!--
// Функция определяет базовое имя объекта FileSystemObject.
function get()
{
var myObject, b;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting.FileSystemObject");
// Определить базовое имя.
b = myObject.GetBaseName("c:\\tmp\\myTest.txt");
а1епХ"Базовое имя:" + b);
}
// -->
</script>
<body>
<form name="myForm">
<input type="Button" уа1ие="Определить базовое имя" onClick='get()'>
</form>
</body>
</html>
FileSystemObject.GetDrive()
JScript3.0+
Синтаксис
filesystemobject.GetDn\ie(ducK)
Описание
Метод GetDrive() используется для определения диска, указанного в параметре
диск. В качестве единственного аргумента метод использует параметр диск,
содержащий имя диска, данные для которого необходимо получить.
Пример
Код в листинге 14.61 реализует пример использования метода GetDrive().
Листинг 14.61. Пример использования метода GetDrive()
<html>
<script language="JScript">
<!--
function getdrive()
{
var myObject, drive;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
drive = myObject.GetDrive("c:\\")
а1е|1("Имя диска С:" + drive.VolumeName);
Глава 14. JScript RunTime 1 303
</script>
<body>
Определение имени диска С.
<form name="myForm">
<input type="Button" уа1ие="Определить имя диска" onClick='getdrive()'>
</form>
</body>
</html>
FileSystemObject.GetDriveName()
JScript3.0+
Синтаксис
filesystemobject.GetDriveName(ramepa)
Описание
Метод GetDriveNameO используется для определения имени указанного диска. В
качестве единственного аргумента метод использует параметр литера,
указывающий диск, имя которого необходимо определить.
Пример
Код в листинге 14.62 реализует пример использования метода GetDriveNameO- Для
определения имени диска С создается экземпляр объекта FileSystemObject.
Листинг 14.62. Пример использования метода GetDriveNameO
<html>
<script language="JScript">
<!--
function getdrive()
{
var myObject, drive;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting.FileSystemObject");
// Определить имя указанного диска.
drive = myObject. GetDriveName("c:\\");
// Вывести имя диска на экран.
а1е11("Имя диска С:" + drive);
</script>
<body>
Определение имени диска С.
<form name="myForm">
<input type="Button" уа1ие="Определить имя диска" onClick='getdrive()'>
</form>
</body>
</html>
1 304 Часть III. Справочник по JavaScript
FileSystemObject.GetExtensionName()
JScript3.0+
Синтаксис
filesystemobject.GetExtensionName(nymb)
Описание
Метод GetExtensionName() используется для определения расширения указанного
файла. В качестве единственного аргумента метод использует параметр путь,
который содержит полный путь к файлу.
Пример
В листинге 14.63 приведен пример использования метода GetExtensionName(). Для
определения расширения указанного файла создается экземпляр объекта
FileSystemObject.
Листинг 14.63. Пример использования метода GetExtensionName()
<html>
<script language="JScript">
<!--
// Функция определяет расширение файла и выводит результат на экран.
function getExt()
{
var myObject, ext;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
//Определение расширения указанного файла.
ext = myObject.GetExtensionName("c:\\testing.txt");
//Вывести сообщение на экран.
а1ег1("Расширение файла testing:" + ext);
}
// ->
</script>
<body>
Определение расширения файла "testing.txt".
<form name="myForm">
<input type="Button" уа1ие="Определить расширение" onClick='getExt()'>
</form>
</body>
</html>
FileSystemObject.GetFile()
JScript3.0+
Синтаксис
filesystemobject.Ge\F\\e()
Описание
Метод GetFile() используется для выборки указанного файла.
Глава 14. JScript RunTime 1 305
Пример
Код в листинге 14.64 реализует пример использования метода GetFile() для
определения размера файла.
Листинг 14.64. Пример использования метода GetFile()
<html>
<script language="JScript">
<!--
function getsize()
{
var myObject, afile, size;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
afile = myObject.GetFile("c:\\test.txt")
//Определить размер файла.
size = afile.Size;
// Вывести сообщение о размере файла на экран.
а1еп:("Размер файла test.txt составляет" + size + " байт.");
</script>
<body>
Определение размера файла "test.txt"
<form name="myForm">
<input type="Button" уа!ие="Определить размер" onClick='getsize()'>
</form>
</body>
</html>
FileSystemObject.GetFileName()
JScript3.0+
Синтаксис
filesystemobject.GetFileName(uMtf_ файла)
Описание
Метод GetFileName() используется для выборки указанного имени файла. В
качестве единственного аргумента метод использует параметр имя_файла, который
представляет собой абсолютный или относительный путь к файлу.
Пример
Код в листинге 14.65 реализует пример использования метода GetFileName().
Листинг 14.65. Пример использования метода GetFileName()
<html>
<script language="JScript">
<!--
function getname()
{
var myObject, name;
// Создать экземпляр объекта FileSystemObject.
1 306 Часть III. Справочник по JavaScript
myObject = new ActiveXObjectfScripting.FileSystemObject"
// Определить имя файла.
name = myObject.GetFileName("c:\\test.txt");
// Вывести имя файла на экран.
а1е11("Имя файла:" + name);
</script>
<body>
Определение имени файла "test.txt"
<form name="myForm">
<input type="Button" уа1ие="Определить имя файла" onClick='getname()'>
</form>
</body>
</html>
FileSystemObject.GetFolder()
JScript3.0+
Синтаксис
filesystemobject. GetFolder()
Описание
Метод GetFolder() используется для выборки указанного каталога.
Пример
Код в листинге 14.66 реализует пример выборки каталога. Для определения имени
каталога создается экземпляр объекта FileSystemObject. Затем для определения
даты последнего использования каталога используется свойство DateLastAccessed.
Результат выводится на экран.
Листинг 14.66. Пример использования метода GetFolder()
<html>
<script language="JScript">
<!--
// Функция выбирает каталог, а затем определяет дату
// последнего использования каталога.
function getfolder()
{
var myObject, afolder, date;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Извлечь каталог.
afolder = myObject. GetFolder("c:\\tmp");
// Определить дату последнего использования каталогу.
date = afolder. DateLastAccessed;
// Вывести данные о дате на экран.
а1е|1("Каталог" + afolder + " последний раз использовался:" + date);
</script>
<body>
Глава 14. JScript RunTime 1 307
Определение даты последнего использования каталога "tmp".
<form name="myForm">
<input type="Button" уа1ие="Определить дату" onClick='getfolder()'>
</form>
</body>
</html>
FileSystemObject.GetParentFolderName()
JScript3.0+
Синтаксис
filesystemobject.GetParentFolderName(i7MH_nan/«7)
Описание
Метод GetParentFolderNameO используется для определения имени родительского
каталога файла или каталога. В качестве единственного аргумента метод использует
параметр имя папки, который представляет собой путь к имени подкаталога.
Пример
Код в листинге 14.67 реализует пример определения имени родительского каталога.
Листинг 14.67. Пример использования метода GetParentFolderNameO
<html>
<script language="JScript">
<!--
function getparent()
{
var myObject, name;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
name = myObject.GetParentFolderName("c:\\tmp\\subfolder");
а1ег1("Имя родительского каталога:" + name);
</script>
<body>
Определить имя родительского каталога каталога "subfolder".
<form name="myForm">
<input type="Button" уа1ие="Определить имя родительского каталога"
onClick='getparent()'>
</form>
</body>
</html>
FileSystemObject.GetSpecialFolder()
JScript3.0+
Синтаксис
filesystemobject.Ge\Spec\a\Fo\derDucno)
1 308 Часть III. Справочник по JavaScript
Описание
Метод GetSpecialFolder() используется для выборки указанного специального
каталога. В качестве единственного аргумента метод использует параметр число,
который может содержать следующие значения:
0 - каталог Windows
1 - каталог System
2 - каталог временных файлов
Пример
Код в листинге 14.68 реализует пример использования метода GetSpecialFolder()
для выборки каталога временных файлов.
Листинг 14.68. Пример использования метода GetSpecialFolder()
<html>
<script language="JScript">
<!--
function get()
{
var myObject, name;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
name = myObject.GetSpecialFolderB);
а1ег1("Каталог временных файлов:" + name);
}
// ->
</script>
<body>
Проверить является ли каталог "Temp" каталогом временных файлов.
<form name="myForm">
<input type="Button" value="Bbi6opKa специального каталога" onClick='get()'>
</form>
</body>
</html>
FileSystemObject. GetTempNameO
JScript3.0+
Синтаксис
filesystemobject. GetTempNameO
Описание
Метод GetTempNameO используется для создания временных файлов или каталогов
со случайными именами.
Пример
Код в листинге 14.69 реализует пример использования метода GetTempName(). Для
определения случайного имени создаваемого временного файла создается экземпляр
объекта FileSystemObject.
Глава 14. JScript RunTime 1 309
Листинг 14.69. Пример использования метода GetTempName()
<html>
<script language="JScript">
<!--
function get()
{
var myObject, name;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObject("Scripting. FileSystemObject");
// Определить случайное имя временного файла.
name = myObject.GetTempName();
а1ег1("Имя временного файла:" + name);
</script>
<body>
Создание временного файла.
<form name="myForm">
<input type="Button" уа1ие="Определить имя временного файла" onClick='get()'>
</form>
</body>
</html>
FileSystemObject. MoveFile()
JScript3.0+
Синтаксис
filesystemobject.MoveFile(ucmo4Ht//f, цель)
Описание
Метод MoveFile() используется для перемещения файла из одного каталога в
другой. В качестве аргументов метод использует два параметра. Первый параметр,
источник, содержит расположение перемещаемого файла, а второй параметр, цель,
— новое расположение перемещаемого файла.
Пример
Код в листинге 14.70 реализует пример использования метода MoveFile(). Для
перемещения файла test.txt из корневого каталога диска С в каталог tmp
используется экземпляр объекта FileSystemObject.
Листинг 14.70. Пример использования метода MoveFile()
<html>
<script language="JScript">
<!--
function move()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Переместить файл из корневого каталога в каталог tmp.
myObject.MoveFile("c:\\test.txt", "c:\\tmp\\test.txt");
1 31 0 Часть III. Справочник по JavaScript
</script>
<body>
Перемещение файла "test.txt" из с:\ в с:\ tmp
<form name="myForm">
<input type="Button" уа1ие="Переместить файл" onClick='move()'>
</form>
</body>
</html>
FileSystemObject.MoveFolder()
JScript3.0+
Синтаксис
filesystemobject.MoveF o\der()
Описание
Метод MoveFolder() используется для перемещения одного или нескольких
каталогов из одного каталога в другой.
Пример
Код в листинге 14.71 реализует пример использования метода MoveFolder(). Для
перемещения каталога subtmp в корневой каталог диска С используется экземпляр
объекта FileSystemObject.
Листинг 14.71. Пример использования метода MoveFolder()
<html>
<script language="JScript">
<!--
function move()
{
var myObject;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Переместить каталог.
myObject.MoveFolder("c:\\tmp\\subtmp", "c:\\");
</script>
<body>
Перемещение каталога "subtmp" из c:\ tmp\ subtmp в с:\
<form name="myForm">
<input type="Button" уа1ие="Переместить каталог" onClick='move()'>
</form>
</body>
</html>
FileSystemObject.OpenTextFileO
JScript2.0+
Глава 14. JScript RunTime 1311
Синтаксис
filesystemobject.OpenTextFile(i7Mtf_файла, iomode, create, format)
Описание
Метод OpenTextFileO используется для открытия в указанный файл текстового
потока, который может использоваться для считывания и записи файла. В качестве
аргументов метод принимает четыре параметра. Первый параметр, имяфайла,
содержит имя открываемого файла. Второй параметр, iomode, представляет собой
необязательный параметр, указывающий режим открытия файла. Третий параметр,
create, представляет собой необязательное булево значение, указывающее, будет ли
создан файл, если он не существует. И, наконец, последний, четвертый параметр,
format, указывает формат открываемого файла. По умолчанию используется
значение ASCII.
Пример
Код в листинге 14.72 реализует пример использования метода OpenTextFileO- Для
открытия текстового потока в файл dummy.txt создается экземпляр объекта
FileSystemObject. Файл открывается в режиме append.
Листинг 14.72. Пример использования метода OpenTextFileO
<html>
<script language="JScript">
<!--
function open()
{
var myObject, afile;
// Создать экземпляр объекта FileSystemObject.
myObject = new ActiveXObjectfScripting. FileSystemObject");
// Создать файл "dummy.txt" и открыть его для дополнения.
afile = myObject.OpenTextFile("c:\\dummy.txt", ForAppending, false);
afile.close();
}
// ->
</script>
<body>
Открытие текстового потока в файл dummy.txt
<form name="myForm">
<input type="Button" уа1ие="Открыть файл" onClick='open()'>
</form>
</body>
</html>
Folder
JScript3.0+
Синтаксис
Основной объект JScript, который создается с помощью метода GetFolder() объекта
FileSystemObject.
1312 Часть III. Справочник по JavaScript
Описание
Объект Folder предоставляет доступ ко всем свойствам каталога. Этот объект
создается с помощью метода GetFolder() объекта FileSystemObject, которому в
качестве аргумента передается имя каталога, для которого создается объект J Script.
Методы и свойства объекта Folder перечислены в табл. 14.12.
Таблица 14.12. Методы и свойства объекта Folder.
Тип
Метод
Свойство
Элемент
Сору()
DeleteO
Move()
Attributes
DateCreated
DateLastAccessed
DateLastModified
Drive
Files
IsRootFolder
Name
ParentFolder
Path
ShortName
ShortPath
Size
SubFolders
Type
Описание
Копирует каталог из одного каталога в другой.
Удаляет указанный каталог.
Перемещает указанный каталог.
Устанавливает или считывает атрибуты каталога.
Возвращает дату создания каталога.
Возвращает дату последнего использования
каталога.
Возвращает дату последнего изменения каталога.
Возвращает имя диска, на котором находится
каталог.
Возвращает коллекцию Files, в которой находятся
все файлы каталога.
Возвращает true, если это корневой каталог, и
false - в противном случае.
Устанавливает или считывает имя каталога.
Возвращает родительский каталог данного
каталога.
Возвращает путь каталога.
Возвращает имя каталога в формате 8.3.
Возвращает путь к каталогу в формате 8.3.
Возвращает размер всего содержимого каталога (в
байтах).
Возвращает коллекцию Folders всех каталогов
данного каталога.
Возвращает тип каталога.
Пример
Код в листинге 14.73 создает экземпляр объекта FileSystemObject, а затем -
экземпляр объекта Folder. При запуске приведенного кода в браузере на странице
выводится имя диска, на котором находится экземпляр каталога.
Листинг 14.73. Пример создания экземпляра объекта Folder
<script type="text/jscript" language="JScript">
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObjectfScripting.FileSystemObject");
// Создать экземпляр объекта Folder для каталога "temp".
var myFolder = myFileSysObj.GetFolder("\\temp");
// Вывести на экран имя диска, на котором находится каталог.
document.write(myFolder.Drive);
</script>
Глава 14. JScript RunTime 1313
Folder. Attributes
JScript3.0+
Синтаксис
fo/cter.Attributes
/b/cter.Attributes = attrib
Описание
Свойство Attributes экземпляра объекта Folder используется для установки или
считывания атрибутов каталога. Считать текущие атрибуты каталога можно путем
вызова свойства Attributes в формате, показанном в первой строке описания
синтаксиса. Если установить значение свойства равным attrib, атрибуты будут
записаны. Значения атрибутов перечислены в табл. 14.13.
Таблица 14.13. Значения атрибутов
Значение
0
1
2
4
8
16
32
64
128
Атрибут
Обычный
Только для
чтения.
Скрытый
Системный
Том
Каталог
Архив
Псевдоним
Сжатый
Описание
Обычный каталог, атрибуты которого не установлены.
Каталог Только для чтения с атрибутом
"чтение/запись".
Скрытый каталог с атрибутом "чтение/запись".
Системный каталог с атрибутом "чтение/запись".
Метка тома диска с атрибутом "только для чтения".
Каталог с атрибутом "только для чтения".
Каталог был изменен со времени последнего
резервного копирования с атрибутом "чтение/запись".
Ссылка или ярлык каталога с атрибутом
"чтение/запись".
Сжатый каталог с атрибутом "только для чтения".
Пример
Код в листинге 14.74 при щелчке на кнопке на экран отображает окно
предостережения с указанием атрибутов указанного в сценарии каталога. Более
подробный пример приведен в описании File.Attributes.
Листинг 14.74. Пример использования свойства Attributes
<html>
<head>
<script type="text/jscript" language="JScript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting. FileSystemObject");
// Создать экземпляр объекта Folder,
var my Folder = myObject. GetFolder("c:\\Temp");
// Вывести на экран окно предостережения с указанием атрибутов каталога.
alert(myFolder.Attributes);
}
</script>
</head>
<body>
Определение атрибутов каталога.
1 314 Часть III. Справочник по JavaScript
<form name="myForm">
<input type="Button" уа1ие="Определить атрибуты" onClick='get()'>
</form>
</body>
</html>
Folder.Copy()
JScript3.0+
Синтаксис
folder.Copy(uenb)
folder.Copy(цeль, boolean)
Описание
Метод Сору() используется для копирования указанного каталога из одного каталога
в другой. Параметр цель содержит каталог, в который должен копироваться данный
каталог. Если значение параметра boolean равно true и каталог, заданный
параметром цель, существует, он будет перезаписан.
Пример
Код в листинге 14.75 создает экземпляр объекта Folder, который затем копируется с
помощью метода Сору(). Если указанный каталог уже существует, он будет
перезаписан.
Листинг 14.75. Пример использования метода Сору()
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting. FileSystemObject");
// Создать объект Folder.
var myFolder = myObject.GetFolder("c:\Temp");
// Копировать каталог в другой каталог с перезаписыванием существующего каталога.
myFolder.Copy("c:\\Test", true);
Folder. DateCreated
JScript3.0+
Синтаксис
folder. DateCreated
Описание
Свойство DateCreated экземпляра объекта Folder используется для определения
даты создания каталога.
Пример
Код в листинге 14.76 отображает на экране одну кнопку. При щелчке на кнопке на
экране появляется окно предостережения, в котором указывается дата создания
заданного каталога.
Листинг 14.76. Пример использования свойства DateCreated
<html>
<head>
Глава 14. JScript RunTime 1315
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting. FileSystemObject");
// Создать объект Folder,
var my Folder = myObject. GetFolder("c:\\Temp");
// Вывести на экран дату создания каталога,
alert (myFolder.DateCreated);
}
</script>
<head>
<body>
Определение даты создания каталога с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить дату создания" onClick='get()'>
</form>
</body>
</html>
Folder. DateLastAccessed
JScript3.0+
Синтаксис
/Ь/der.DateLastAccessed
Свойство DateLastAccessed экземпляра объекта Folder используется для
определения даты последнего обращения к каталогу.
Пример
Код в листинге 14.77 отображает на экране одну кнопку. При щелчке на кнопке на
экране появляется окно предостережения, в котором указывается дата последнего
обращения к каталогу.
Листинг 14.77. Пример использования свойства DateLastAccessed
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject object,
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder,
var my Folder = myObject. GetFolder("c:\\Temp");
// Вывести на экран дату последнего доступа к каталогу,
alert (myFolder.DateLastAccessed);
}
</script>
</head>
<body>
Определение даты последнего доступа к каталогу с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить дату последнего доступа" onClick='get()'>
</form>
</body>
1316 Часть III. Справочник по JavaScript
</html>
Folder. DateLastModified
JScript3.0+
Синтаксис
fo/cter.DateLastModified
Описание
Свойство DateLastModified экземпляра объекта Folder используется для
определения даты последнего изменения каталога.
Пример
Код в листинге 14.78 на экране отображает одну кнопку. При щелчке на кнопке на
экране отображается окно предостережения, в котором указывается дата последнего
изменения заданного каталога.
Листинг 14.78. Пример использования свойства DateLastModified
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting. FileSystemObject");
// Создать объект Folder,
var my Folder = myObject. GetFolder("c:\\Temp");
// Вывести на экран дату последнего изменения каталога,
alert (myFolder.DateLastModified);
}
</script>
</head>
<body>
Определение даты последнего изменения каталога с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить дату последнего изменения" onClick='get()'>
</form>
</body>
</html>
Folder.Delete()
JScript3.0+
Синтаксис
folder. Delete(bootean)
fo/cter. Delete()
Описание
Метод Delete() экземпляра объекта Folder используется для удаления указанного
каталога. Если значение необязательного параметра boolean равно true, в указанном
каталоге будут удалены все файлы и каталоги с атрибутом "только для чтения".
Глава 14. JScript RunTime 1317
Пример
Код в листинге 14.79 демонстрирует пример удаления каталога.
Листинг 14.79. Пример использования метода Delete()
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder.
var myFolder = myObject.GetFolder("c:\ Test");
// Удалить каталог.
myFolder.Delete();
Folder.Drive
JScript3.0+
Синтаксис
folder. Drive
Описание
Свойство Drive экземпляра объекта Folder возвращает имя диска, на котором
находится данный каталог.
Пример
Код в листинге 14.80 отображает на экране одну кнопку. При щелчке на кнопке на
экране отображается окно предостережения, в котором указывается имя диска, на
котором находится заданный каталог.
Листинг 14.80. Пример использования свойства Drive
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder,
var myFolder = myObject. GetFolder("c:\\Temp");
// Вывести на экран имя диска, на котором находится данный каталог,
alert (myFolder.Drive);
}
</script>
</head>
<body>
Определение имени диска, на котором находится каталог с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить имя диска" onClick='get()'>
</form>
</body>
</html>
Folder.Files
JScript3.0+
1 31 О Часть III. Справочник по JavaScript
Синтаксис
fo/cter.Files
Описание
Свойство Files экземпляра объекта Folder возвращает коллекцию объектов File,
содержащихся в данном каталоге. В коллекцию включаются скрытые и системные
файлы.
Пример
В листинге 14.81 создается экземпляр объекта Folder, а затем для обеспечения
доступа к коллекции свойства Files создается экземпляр объекта Enumerator. В
приведенном примере на экран выводятся все файлы, хранящиеся в указанном
каталоге.
Листинг 14.81. Пример использования свойства Files.
<script language="JScript" type="text/jscript">
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать экземпляр объекта Folder для каталога "temp",
var myFolder = myFileSysObj. GetFolderfWtemp");
// Для обеспечения доступа к файлам каталога
// использовать объект Enumerator,
var myEnum = new Enumerator(myFolder.Files);
// Вывести на экран имена файлов, хранящихся в данном каталоге.
while(!myEnum.atEnd()){
document.write(myEnum.item() + '<br>');
myEnum. moveNext();
}
</script>
Folder.lsRootFolder
JScript3.0+
Синтаксис
fo/cter.lsRootFlsRootFolder
Описание
Свойство older экземпляра объекта Folder возвращает true, если данный каталог
является корневым, и false - в противном случае.
Пример
Код в листинге 14.82 создает экземпляр объекта Folder, а также выполняет проверку
на предмет того, является ли этот каталог корневым. При загрузке кода данного
примера в браузере на экран будет выведено сообщение, указывающее на то,
является ли созданный каталог корневым.
Листинг 14.82. Пример использования свойства IsRootFolder.
<script language="JScript" type="text/jscript">
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
Глава 14. JScript RunTime 1319
// Создать экземпляр объекта Folder для каталога "temp".
var myFolder = myFileSysObj.GetFolderfWtemp");
// Определить является ли созданный каталог корневым.
if(myFolder.lsRootFolder){
document.write(myFolder.Name + "- корневой каталог.");
} else{
document.write(myFolder.Name + " - не корневой каталог.");
}
</script>
Folder. Move()
JScript3.0+
Синтаксис
folder. Мо\/е(цель)
Описание
Метод Move() используется для перемещения каталога из одного каталога в другой.
Параметр цель определяет местоположение, в которое требуется переместить
данный каталог.
Пример
Код в листинге 14.83 создает экземпляр объекта Folder, который затем
перемещается с помощью метода Move().
Листинг 14.83. Пример использования метода Move()
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder.
var myFolder = myObject.GetFolder("c:\\Temp");
// Переместить каталог в другой каталог.
myFolder.Move("c:\\Test");
Folder. Name
JScript3.0+
Синтаксис
/o/cter.Name
Описание
Свойство Name экземпляра объекта Folder используется для установки и
считывания имени каталога.
Пример
Код в листинге 14.84 отображает на экране одну кнопку. При щелчке на кнопке на
экране появляется окно предостережения, в котором указывается имя каталога.
Листинг 14.84. Пример использования свойства Name
<html>
<head>
1 320 Часть III. Справочник по JavaScript
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder,
var my Folder = myObject. GetFolder("c:\\Temp");
// Вывести на экран имя каталога,
alert (myFolder.Name);
}
</script>
</head>
<body>
Определение имени каталога с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить имя" onClick='get()'>
</form>
</body>
</html>
Folder.ParentFolder
JScript3.0+
Синтаксис
fo/cfer.ParentFolder
Описание
Свойство ParentFolder экземпляра объекта Folder используется для получения
родительского каталога для данного каталога.
Пример
Код в листинге 14.85 отображает экране одну кнопку. При щелчке на кнопку на
экране появляется окно предостережения, в котором указывается имя родительского
каталога для данного каталога.
Листинг 14.85. Пример использования свойства ParentFolder
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder,
var my Folder = myObject. GetFolder("c:\\Temp");
// Вывести на экран имя родительского каталога,
alert (myFolder.ParentFolder.Path);
}
</script>
</head>
<body>
Определение имени родительского каталога каталога с:\ temp.
<form name="myForm">
<input type="Button" уа!ие="Определить имя родительского каталога" onClick='get()'>
Глава 14. JScript RunTime 1321
</form>
</body>
</html>
Folder.Path
JScript3.0+
Синтаксис
fo/cter. Path
Описание
Свойство Path экземпляра объекта Folder используется для получения полного пути
к каталогу.
Пример
Код в листинге 14.86 отображает на экране одну кнопку. При щелчке на кнопке на
экране отображается окно предостережения, в котором указывается полный путь к
каталогу.
Листинг 14.86. Пример использования свойства Path
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting. FileSystemObject");
// Создать объект Folder,
var my Folder = myObject. GetFolder("c:\\Temp");
// Вывести на экран путь к каталогу,
alert (myFolder.Path);
}
</script>
</head>
<body>
Определение пути к каталогу с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить путь" onClick='get()'>
</form>
</body>
</html>
Folder.ShortName
JScript3.0+
Синтаксис
fo/cter.ShortName
1 322 Часть III. Справочник по JavaScript
Описание
Свойство ShortName экземпляра объекта Folder используется для получения имени
каталога в формате 8.3 (восемь символов имени, за которыми следует точка и три
символа расширения).
Пример
Код в листинге 14.87 отображает на экране одну кнопка. При щелчке на кнопке на
экране появляется окно предостережения, в котором указывается короткое имя
каталога.
Листинг 14.87. Пример использования свойства ShortName
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объект FileSystemObject.
var myObject = new ActiveXObject("Scripting. FileSystemObject");
// Создать объект Folder.
var myFolder = myObject.GetFolder("c:\\Program Files");
// Вывести на экран короткое имя каталога,
alert (myFolder.ShortName);
}
</script>
</head>
<body>
Определение короткого имени каталога "С:\ Program Files".
<form name="myForm">
<input type="Button" уа1ие="Определить короткое имя" onClick='get()'>
</form>
</body>
</html>
Folder.ShortPath
JScript3.0+
Синтаксис
fo/cter.ShortPath
Описание
Свойство ShortPath экземпляра объекта Folder используется для получения пути к
каталогу в формате 8.3 (восемь символов имени, за которыми следует точка и три
символа расширения).
Пример
Код в листинге 14.88 отображает на экране одну кнопка. При щелчке на кнопке на
экране появляется окно предостережения, в котором указывается путь к каталогу в
формате 8.3.
Листинг 14.88. Пример использования свойства ShortPath
<html>
Глава 14. JScript RunTime 1 323
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting. FileSystemObject");
// Создать объект Folder.
var myFolder = myObject.GetFolder("c:\\Program Files");
// Вывести на экран путь к каталогу в формате 8.3.
alert (myFolder.ShortPath);
}
</script>
</head>
<body>
Определение пути к каталогу "c:\\Program Files" в формате 8.3.
<form name="myForm">
<input type="Button" уа1ие=пределить путь" onClick='get()'>
</form>
</body>
</html>
Folder.Size
JScript3.0+
Синтаксис
fo/cfer. Size
Описание
Свойство Size экземпляра объекта Folder возвращает размер каталога (в байтах).
Пример
Код в листинге 14.89 отображает на экране одну кнопку. При щелчке на кнопку на
экране появляется окно предостережения, в котором указывается размер каталога (в
байтах).
Листинг 14.89. Пример использования свойства Size
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder.
var myFolder = myObject.GetFolder("c:\\Program Files");
// Вывести на экран размер каталога,
alert (myFolder.Size);
}
</script>
</head>
<body>
Определение размера каталога "c:\\Program Files".
<form name="myForm">
<input type="Button" уа!ие="Определить размер" onClick='get()'>
1 324 Часть III. Справочник по JavaScript
</form>
</body>
</html>
Folder.SubFolders
JScript3.0+
Синтаксис
/o/cter.SubFolders
Описание
Свойство SubFolders экземпляра объекта Folder возвращает коллекцию объектов
Folder, содержащихся в каталоге folder. В коллекцию входят скрытые и системные
каталоги.
Пример
Код в листинге 14.90 создает экземпляр объекта Folder, а затем, для обеспечения
доступа к коллекции свойства Folders, создается экземпляр объекта Enumerator. В
приведенном примере на экран выводятся все каталоги, хранящиеся в указанном
каталоге.
Листинг 14.90. Пример использования свойства Folders
<script language="JScript" type="text/jscript">
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
// Создать экземпляр объекта Folder для каталога "temp",
var myFolder = myFileSysObj. GetFolderfWtemp");
// Для обеспечения доступа к подкаталогам указанного каталога
// создать объект Enumerator.
var myEnum = new Enumerator(myFolder.SubFolders);
// Вывести на экран имена подкаталогов указанного каталога.
while(!myEnum.atEnd()){
document.write(myEnum.item() + '<br>');
myEnum.moveNext();
}
</script>
Folder.Type
JScript3.0+
Синтаксис
fo/cter. Type
Описание
Свойство Type экземпляра объекта Folder возвращает тип каталога. Для каталога
всегда возвращается значение File Folder.
Пример
Код в листинге 14.91 отображает на экране одну кнопку. При щелчке на кнопке на
экране появляется окно предостережения, в котором указывается тип каталога.
Глава 14. JScript RunTime 1 325
Листинг 14.91. Пример использования свойства Туре
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать объект FileSystemObject.
var myObject = new ActiveXObject("Scripting.FileSystemObject");
// Создать объект Folder.
var myFolder = myObject.GetFolder("c:\\Program Files");
// Вывести на экран тип каталога,
alert (myFolder.Type);
}
</script>
</head>
<body>
Определение типа каталога "c:\\Program Files".
<form name="myForm">
<input type="Button" уа1ие="Определить тип" onClick='get()'>
</form>
</body>
</html>
Folders
JScript3.0+
Синтаксис
Коллекция объектов Folder JScript.
Описание
Коллекция Folders представляет собой доступную только для чтения коллекцию
всех имеющихся каталогов. Коллекция аналогична массиву, за тем лишь
исключением, что для извлечения элементов коллекции используется указатель, а не
индекс элемента. Указатель на элемент можно переместить только на первый или на
следующий элемент коллекции. Поскольку объект Folder является коллекцией,
доступ к дискам можно получить только с помощью объекта Enumerator. Свойства
объекта Folders перечислены в табл. 14.14. Более подробная информация по работе с
коллекциями приведена в описании объекта Enumerator.
Таблица 14.14. Свойства коллекции Folders
Элемент
Описание
Add
Добавляет в коллекцию новый каталог.
Count
Возвращает количество элементов в коллекции.
Item
Устанавливает или считывает элемент по указанному ключу в словаре
Drives.
Пример
Код в листинге 14.92 реализует пример использования коллекции Folders с
помощью объекта FileSystemObject.
1 326 Часть III. Справочник по JavaScript
Листинг 14.92. Пример определения количества элементов в
коллекции Folders
<script language="JScript" type="text/jscript">
var fileSysObj = new ActiveXObjectfScripting.FileSystemObject");
document.write(fileSysObj. Folders, count);
</script>
Folders.Add()
JScript3.0+
Синтаксис
folderscollection.Add(uMP_nanKu)
Описание
Метод Add() коллекции Folders используется для добавления к коллекции нового
каталога. Этот метод можно использовать для создания в файловой системе новых
каталогов.
Пример
Код в листинге 14.93 в каталоге \ temp создает каталог test. Приведенный сценарий
можно запустить в среде Windows Script Host (wscript.exe или cscript.exe).
Убедитесь, что каталог temp находится на текущем диске и что каталог test
отсутствует. В противном случае при запуске сценария отобразится сообщение об
ошибке.
Листинг 14.93. Пример использования метода Add() коллекции
Folders
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать экземпляр объекта Folder для каталога "temp".
var myFolder = myFileSysObj. GetFolder("\\temp");
// Выборка коллекции подкаталогов данного каталога.
var myFolderCollection = myFolder.SubFolders;
// Добавить новый каталог "test".
myFolderCollection.Add("test");
Folders.Count
JScript3.0+
Синтаксис
folderscollection.Count
Описание
Свойство Count коллекции Folders возвращает количество каталогов в коллекции.
Каталоги в коллекцию можно добавить с помощью метода Folders.Add().
Глава 14. JScript RunTime 1 327
Пример
Код в листинге 14.94 отображает на экране одну кнопка. При щелчке на кнопку на
экране появляется окно предостережения, в котором указывается количество
каталогов в коллекции Folders.
Листинг 14.94. Пример использования свойства Count
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
// Создать два экземпляра объекта Folder для каталога "temp",
var myFolder = myFileSysObj.GetFolder("c:\\Temp");
// Выборка коллекции подкаталогов данного каталога,
var myFolderCollection = myFolder.SubFolders;
// Добавить два новых каталога.
myFolderCollection.Add("test1");
myFolderCollection.Add("test2");
// Вывести на экран количество каталогов в коллекции.
alert(myFolderCollection. Count);
}
</script>
</head>
<body>
Определение количества каталогов в каталоге с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить количество каталогов" onClick='get()'>
</form>
</body>
</html>
Folders. Item
JScript3.0+
Синтаксис
folderscollection.\\em{uMH_nanKu)
Описание
Свойство Item экземпляра коллекции Folders возвращает имя каталога.
Пример
Код в листинге 14.95 отображает на экране одну кнопку. При щелчке на кнопке на
экране появляется окно предостережения, в котором указывается имя второго
каталога, добавленного в коллекцию Folders.
Листинг 14.95. Пример использования свойства Item
<html>
<head>
<script language="JScript" type="text/jscript">
function get(){
1 328 Часть III. Справочник по JavaScript
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
// Создать два экземпляра объекта Folder для каталога "temp".
var myFolder = myFileSysObj.GetFolder("c:\\Temp");
// Выбрать коллекцию подкаталогов данного каталога.
var myFolderCollection = myFolder.SubFolders;
// Добавить два новых каталога.
myFolderCollection.Add("test1");
myFolderCollection.Add("test2");
// Отобразить на экране имя второго каталога, добавленного в коллекцию.
alert(myFolderCollection.ltemB).Name);
}
</script>
</head>
<body>
Определение имени второго каталога, добавленного в коллекцию с:\ temp.
<form name="myForm">
<input type="Button" уа1ие="Определить имя" onClick='get()'>
</form>
</body>
</html>
TextStream
JScript2.0+
Синтаксис
Основной объект JScript, который создается с помощью метода CreateTextFileQ
объекта FileSystemObject.
Описание
Объект TextStream создается с помощью метода CreateTextFile() экземпляра
объекта FileSystemObject. Экземпляр объекта TextStream создается с помощью
метода CreateTextFile()o6beKTa FileSystemObject.
Методы и свойства объекта TextStream перечислены в табл. 14.15.
Таблица 14.15. Методы и свойства объекта TextStream
Тип
Метод
Элемент
Close()
Read()
ReadAII()
ReadLine()
Skip()
SkipLine()
Write()
WriteBlankLines()
WriteLine()
Описание
Закрывает файл.
Считывает указанное количество символов.
Считывает весь файл.
Считывает строку файла до символа новой строки.
Пропускает указанное количество символов.
При считывании файла пропускает следующую
строку.
Записывает в файл строку.
Записывает в файл указанное количество пустых
строк.
Записывает в файл строку, за которой следует
символ новой строки.
Глава 14. JScript RunTime 1 329
Свойство
AtEndOfLine
AtEndOfStream
Column
Line
Возвращает значение true, если указатель
указывает на позицию, которая находится
непосредственно перед символом конца строки.
Возвращает значение true, если указатель
указывает на конец файла.
Возвращает номер текущей колонки указателя
позиции.
Возвращает номер текущей строки указателя
позиции.
Пример
Код в листинге 14.96 реализует пример создания объекта TextStream и записи в
файл строки. После записи поток закрывается. Приведенный сценарий можно
запустить на выполнение в среде Windows Script Host (wscript.exe или cscript.exe).
Листинг 14.96. Пример создания экземпляра объекта TextStream.
// Создать экземпляр объекта FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject")
// Создать объект TextStream.
var myTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 2, true)
// Записать в файл строку.
myTextStream.Write(flpaBCTBy^ мир!");
// Закрыть поток в файл.
myTextStream. Close();
TextStream.AtEndOfLine
JScript2.0+
Синтаксис
textstream. AtEndOfLine
Описание
Свойство AtEndOfLine объекта TextStream возвращает значение true, если в
текстовой строке найден признак конца строки.
Пример
Код в листинге 14.97 открывает два файла: первый файл открывается для чтения, а
второй - для записи одного символа при выполнении каждой итерации. В результате
выполнения сценария первая строка файла, открытого для чтения, переписывается
во второй файл. Приведенный сценарий можно запустить в среде Windows Script
Host (wscript.exe или cscript.exe).
Листинг 14.97. Пример использования свойства AtEndOfLine с целью
обнаружения признака конца строки в первой строке файла.
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
// Создать один объект TextStream для чтения и один для записи.
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
1 330 Часть III. Справочник по JavaScript
// Выполнять итерации по каждому символу с записью символа
// во второй файл.
while(!mylnputTextStream.AtEndOfLine){
myOutputTextStream.Write(mylnputTextStream.ReadA));
}
// Закрыть потоки в файлы.
mylnputTextStream.Close();
myOutputTextStream.Close();
TextStream. AtEndOf Stream
JScript2.0+
Синтаксис
fexfsfream.AtEndOfStream
Описание
Свойство AtEndOfStream объекта TextStream возвращает значение true, если в
текстовом файле найдет конец файла.
Пример
Код в листинге 14.98 открывает два файла: первый файл открывается для чтения, а
второй - для записи одного символа при выполнении каждой итерации. В результате
выполнения сценария файла, открытый для считывания, переписывается во второй
файл. Приведенный сценарий можно запустить в среде Windows Script Host
(wscript.exe или cscript.exe).
Листинг 14.98. Пример использования свойства AtEndOfStream для
обнаружения конца файла
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать один объект TextStream для считывания и один - для записи,
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt",", 2, true);
// Выполнять итерации по каждому символу с записью символа
// во второй файл.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.Write(mylnputTextStream.ReadA));
}
// Закрыть потоки в файлы.
mylnputTextStream.Close();
myOutputTextStream.Close();
TextStream.CloseQ
JScript2.0+
Синтаксис
textstream. Close()
Описание
Метод Close() объекта TextStream закрывает ранее открытый файл.
Глава 14. JScript RunTime 1 331
Пример
Код в листинге 14.99 реализует пример открытия и закрытия текстового файла.
Приведенный сценарий можно запустить в среде Windows Script Host (wscript.exe
или cscript.exe).
Листинг 14.99. Пример использования метода Close() для закрытия
текстового файла
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать объект TextStream.
var myTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
// Закрыть поток в файл.
myTextStream.Close();
TextStream.Column
JScript2.0+
Синтаксис
textstream. Column
Описание
Свойство Column объекта TextSream возвращает номер текущего столбца, в
котором находится указатель.
Пример
Код в листинге 14.100 открывает два файла: один для считывания и один для записи.
Сценарий выполняет итерации по каждому символу первого файла и записывает
символ и номер колонки во второй файл. Приведенный сценарий можно запустить в
среде Windows Script Host (wscript.exe или cscript.exe).
Листинг 14.100. Пример использования свойства Column
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
// Создать объекты TextStream для считывания и для записи.
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
// Выполнять итерации по каждому символу с записью символа
// во второй файл. С каждим символом записывать номер колонки.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.Write(mylnputTextStream.Column + ":");
myOutputTextStream .WriteLine(myl nputTextStream. ReadA));
}
// Закрыть потоки в файлы.
mylnputTextStream.Close();
myOutputTextStream.Close();
TextStream. Line
JScript2.0+
1 332 Часть III. Справочник по JavaScript
Синтаксис
textstream. Line
Описание
Свойство Line объекта TextSream возвращает номер текущей строки, в которой
находится указатель.
Пример
Код в листинге 14.101 открывает два файла: один для считывания и один для записи.
Сценарий выполняет итерации по каждому символу первого файла и записывает
символ и номер строки во второй файл. Приведенный сценарий можно запустить в
среде Windows Script Host (wscript.exe или cscript.exe).
Листинг 14.101. Пример использования свойства Line
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать объекты TextStream для считывания и для записи.
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
// Выполнять итерации по каждому символу с записью символа
// во второй файл.
// С каждим символом записывать номер строки.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.Write(mylnputTextStream.Line +":");
myOutputTextStream.WriteLine(mylnputTextStream.ReadA));
}
// Закрыть потоки в файлы.
mylnputTextStream.Close();
myOutputTextStream.Close();
TextStream. Read()
JScript2.0+
Синтаксис
textstream. ReadDucno)
Описание
Метод Read() экземпляра объекта TextStream считывает из файла количество
символов, определенное параметром число, начиная с текущей позиции указателя.
Пример
Код в листинге 14.102 открывает два файла: один для считывания и один для записи.
Сценарий выполняет итерации по каждому символу первого файла и записывает
символ во второй файл. В результате содержимое первого файла переписывается во
второй файл. Приведенный сценарий можно запустить в среде Windows Script Host
(wscript.exe или cscript.exe).
Листинг 14.102. Пример использования метода Read()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
Глава 14. JScript RunTime 1 333
// Создать объекты TextStream для считывания и записи,
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
// Выполнять итерации по каждому символу с записью символа
// во второй файл.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.Write(mylnputTextStream.ReadA));
}
// Закрыть потоки в файлы.
mylnputTextStream. Close();
myOutputTextStream.Close();
TextStream. Read Al l()
JScript2.0+
Синтаксис
textstream. ReadAII()
Описание
Метод ReadAHO экземпляра объекта TextStream считывает весь файл. Будьте
осторожны при применении этого метода с большими файлами, поскольку для этого
потребуется большой объем памяти.
Пример
Код в листинге 14.103 открывает два файла: один для считывания и один для записи.
В результате содержимое первого файла переписывается во второй файл.
Приведенный сценарий можно запустить в среде Windows Script Host (wscript.exe
или cscript.exe).
Листинг 14.103. Пример использования метода ReadAII()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать объекты TextStream для считывания и записи,
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
// Выполнять итерации по каждому символу с записью символа
// во второй файл.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.Write(mylnputTextStream.ReadAHO);
}
// Закрыть потоки в файлы.
mylnputTextStream.Close();
myOutputTextStream.Close();
TextStream. Read Li ne()
JScript2.0+
Синтаксис
textstream. Read Line()
1 334 Часть III. Справочник по JavaScript
Описание
Метод ReadLine() экземпляра объекта TextStream считывает из файла строку до
символа новой строки. Будьте осторожны при применении этого метода с большими
файлами, поскольку для этого потребуется большой объем памяти.
Пример
Код в листинге 14.104 открывает два файла: один для считывания и один для записи.
При каждой итерации выполняется считывание и запись строки. В результате
содержимое первого файла переписывается во второй файл. Приведенный сценарий
можно запустить в среде Windows Script Host (wscript.exe или cscript.exe).
Листинг 14.104. Пример использования метода Readl_ine()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать объекты TextStream для считывания и для записи.
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
// Выполнять итерации по каждой строке с записью строки
// во второй файл.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.WriteLine(mylnputTextStream.ReadLineO);
}
// Закрыть потоки в файлы.
mylnputTextStream. Close();
myOutputTextStream.Close();
TextStream.Skip()
JScript2.0+
Синтаксис
textstream.Sk\pDucno)
Описание
При выполнении метода Skip() экземпляра объекта TextStream пропускается
количество символов, указанных с помощью параметра число.
Пример
Код в листинге 14.105 открывает два файла: один для считывания и один для записи.
Метод Skip() используется для пропуска первых пяти символов файла. Приведенный
сценарий можно запустить в среде Windows Script Host (wscript.exe или cscript.exe).
Листинг 14.105. Пример использования метода Skip()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject");
// Создать объекты TextStream для считывания и для записи.
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
// Метод Skip используется для пропуска первых 5 символов.
mylnputTextStream. SkipE);
// Выполнять итерации по каждой строке с записью строки
Глава 14. JScript RunTime 1 335
// во второй файл.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.Write(mylnputTextStream.ReadA));
}
// Закрыть потоки в файлы.
mylnputTextStream.Close();
myOutputTextStream.CloseO;
TextStream.SkipLine()
JScript2.0+
Синтаксис
fexfsfream.SkipLine()
Описание
При использовании метода SkipLine() экземпляра объекта TextStream пропускается
следующая строка.
Пример
Код в листинге 14.106 открывает два файла: один для считывания и один для записи.
Метод SkipLine() используется для пропуска первой строки файла. Приведенный
сценарий можно запустить на выполнение в среде Windows Script Host (wscript.exe
или cscript.exe).
Листинг 14.105. Пример использования метода Skipl_ine()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject");
// Создать объекты TextStream для считывания и для записи,
var mylnputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 1, true);
var myOutputTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test2.txt", 2, true);
// Метод SkipLine используется для пропуска первой строки файла.
mylnputTextStream.SkipLine();
// Выполнять итерации по каждой строке с записью строки
// во второй файл.
while(!mylnputTextStream.AtEndOfStream){
myOutputTextStream.Write(mylnputTextStream.ReadA));
}
// Закрыть потоки в файлы.
mylnputTextStream.Close();
myOutputTextStream.CloseO;
TextStream. Write()
JScript2.0+
Синтаксис
textstream.Wr'tie(cmpoKa)
Описание
Метод Write() экземпляра объекта TextStream используется для записи строки в
текстовый файл.
1 336 Часть III. Справочник по JavaScript
Пример
Код в листинге 14.107 открывает текстовый файл, в который записывается строка.
Приведенный сценарий можно запустить в среде Windows Script Host (wscript.exe
или cscript.exe).
Листинг 14.107. Пример использования метода Write()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject")
// Создать объект TextStream.
var myTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 2, true)
// Записать в файл строку.
myTextStream.\Л/гКе("Здравствуй, мир!");
// Закрыть поток в файл.
myTextStream.Close();
TextStream.WriteBlankLines()
JScript2.0+
Синтаксис
textstream.WriteBlankLinesDUOTo)
Описание
Метод WriteBlankLines() экземпляра объекта TextStream используется для записи в
текстовый файл новых строк, количество которых определяется параметром число.
Пример
Код в листинге 14.108 открывает текстовый файл, в который записывается строка.
Метод WriteBlankLines() используется для вставки перед следующей строкой
текста символа новой строки. Приведенный сценарий можно запустить в среде
Windows Script Host (wscript.exe или cscript.exe).
Листинг 14.108. Пример использования метода WriteBlankLines()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting.FileSystemObject")
// Создать объект TextStream.
var myTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 2, true)
// Записать в файл первую строку.
myTextStream.Write(flpaBCTBy^ мир!");
// Записать в файл символ новой строки.
myTextStream.WriteBlankLines(i);
// Записать в файл вторую строку.
myTextStream.WritefEine раз, здравствуй, мир!");
// Закрыть поток в файл.
myTextStream.Close();
TextStream.WriteLine()
JScript2.0+
Синтаксис
textstream. WriteLineQ
Глава 14. JScript RunTime 1 337
Описание
Метод WriteLine() экземпляра объекта TextStream используется для записи в
текстовый файл строки, которая заканчивается символом новой строки.
Пример
Код в листинге 14.109 открывает текстовый файл, в который записывается строка,
заканчивающаяся символом новой строки. Приведенный сценарий можно запустить
в среде Windows Script Host (wscript.exe или cscript.exe).
Листинг 14.109. Пример использования метода WriteLine()
// Создать объект FileSystemObject.
var myFileSysObj = new ActiveXObject("Scripting. FileSystemObject")
// Создать объект TextStream.
var myTextStream = myFileSysObj.OpenTextFile("c:\\temp\\test.txt", 2, true)
// Записать в файл строку, заканчивающуюся символом новой строки.
myTextStream.WriteLine(flpaBCTByu, мир!");
// Закрыть поток в файл.
myTextStream. CloseQ;
Глава 15
Windows Script Host
В главе приводится описание всех объектов, свойств и методов среды Windows
Script Host компании Microsoft, которые имеют отношение к JScript. В большинстве
книг по Windows Script Host среда рассматривается с точки зрения языка VBScript,
несмотря на то что в Windows Script Host может использоваться любой язык.
Поскольку эта книга о JavaScript, a JavaScript - великолепный язык написания
сценариев, в этой главе Windows Script Host будет рассматриваться именно с точки
зрения JScript (JavaScript).
В этой главе в алфавитном порядке объектов приводится описание основных частей
языка. Свойства и методы объектов располагаются в алфавитном порядке после
соответствующего родительского объекта в простой точечной нотации. Например,
метод Echo() объекта WScript записывается как WScript.Echo().
Примечание
На момент написания книги существовала лишь бета-версия 5.6 Windows Script Host,
поэтому материал по версии 5.6, приведенный в этой главе, может несколько
отличаться от окончательного варианта версии 5.6. Последнюю версию среды
Windows Script Host и различную документацию по ней можно выгрузить из Web-сайта
компании Microsoft по адресу www.msdn.microsoft.com/scripting.
Scripting.Signer
WSH 5.6+
Синтаксис
Scripting.Signer
Описание
Объект Scripting.Signer позволяет авторам подписывать свои сценарии цифровой
подписью. Кроме того, этот объект позволяет получателю сценария проверять
подлинность и достоверность подписи. Объект Scripting.Signer требует наличия
сертификата, который используется для кодирования и декодирования цифровой
подписи.
Пример
Код в листинге 15.1 реализует пример использования объекта Scripting.Signer для
подписания сценария. Если сертификат или файл не указан, пользователь получает
предупреждающее сообщение.
Листинг 15.1. Пример использования объекта Scripting.Signer
<job>
<script language="JScript">
var Signer, File, Cert, Store;
//Если отсутствует сертификат или файл, вывести на экран предупреждающее
//сообщение.
if (!(WScript.Arguments.Named.Exists("cert") &&
1 339 Часть III. Справочник по JavaScript
WScript. Arguments. Named. Existsffile")))
WScript.Есгю("Отсутствует сертификат или файл"
WScript.Quit();
//Создать объект Scripting.Signer.
Signer = new ActiveXObject("Scripting.Signer");
File = WScript.Arguments.Named("file");
Cert = WScript.Arguments.Named("cert");
Store = WScript. Arguments. Namedfstore");
//Подписать файл.
Signer.SignFile(File, Cert, Store);
</script>
Примечание
Дескрипторы <job> и </job> используются для указания начала и окончания работы в
файле сценария для среды Windows Script Host. Если в дескрипторе присутствует
аргумент "id=", за которым указано имя, то, если в одном файле определено
несколько заданий, указанное имя может использоваться для выполнения одного
определенного задания. Для выполнения конкретного задания необходимо в
командной строке cscriptexe указать аргумент "Job", за которым должно следовать
имя задания.
WSH1.0+
WScript
Синтаксис
WScript
Описание
Объект WScript обеспечивает доступ к свойствам работающей в данный момент
среды Windows Script Host (WScript.exe или cscript.exe). Кроме того, в этом объект
имеются методы для создания и считывания объектов. Свойства и методы объекта
WScript перечислены в табл. 15.1.
Таблица 15.1. Свойства и методы объекта WScript
Тип
Свойства
Элемент
Arguments
FullName
Interactive
Name
Path
ScriptFullName
ScriptName
StdErr
Stdin
Stdout
Version
Описание
Коллекция параметров командной строки.
Полный путь к исполняемому файлу.
Режим сценария.
Имя Windows Script Host.
Каталог, в котором находятся исполняемый файл
Windows Script Host.
Полный путь к сценарию.
Имя сценария.
Обеспечивает доступ к потоку ошибок.
Предоставляет доступ к входному потоку.
Предоставляет доступ к выходному потоку.
Версия Windows Script Host.
Глава 15. Windows Script Host 1340
Методы
WshArguments
ConnectObject()
CreateObject()
DisconnectObject()
Echo()
GetObjectO
Quit()
SleepQ
Объект, в котором содержатся параметры
командной строки.
Подключает объекты к функциям обработки
событий.
Создает новые объекты.
Отключает объекты от функций обработки
событий.
Выводит на экран строки.
Выбирает объект из памяти или из файла.
Завершает выполнение сценария.
Приостанавливает выполнение сценария.
Помимо методов и свойств, приведенных в таблице, объект WScript является
родительским объектом для ряда других объектов. В частности, метод
CreateObject() может использоваться для создания следующих дочерних объектов
для объекта WScript: WshController, WshNetwork, WshShell.
Пример
В коде из листинга 15.2 метод Echo() объекта WScript используется для вывода на
экран содержимого свойства Name объекта WScript.
Листинг 15.2. Пример использования объекта WScript
<job>
<script language="JScript">
WScript.Echo("WSH Name=",WScript.Name);
</script>
WScript.Argu merits
WSH 1.0+
Синтаксис
И/sftOfo/ecf.Arguments
Описание
Свойство Arguments объекта WScript содержит указатель на объект
WshArguments, который представляет собой коллекцию параметров командной
строки объекта WScript.
Пример
Код в листинге 15.3 реализует пример использования свойства Arguments с целью
выборки коллекции переданных сценарию аргументов. Например, предположим, что
сценарий, приведенный в листинге 15.1, был записан в файл myscript.wsf и запущен
на выполнение в окне MS-DOS с помощью следующей командной строки:
cscript.exe myscript.wsf автомобиль грузовик корабль самолет
В таком случае сценарию передаются аргументы автомобиль, грузовик, корабль и
самолет. Эти аргументы считываются в сценарии с помощью свойства Arguments и
отображаются на экране, как показано на рис. 15.1.
1 341 Часть III. Справочник по JavaScript
Листинг 15.3. Считывание аргументов с помощью свойства
Arguments
<job>
<script language="JScript">
if(WScript.Arguments.Count())
{
WScript.Echo("ApryMeHTbi:");
//Получение коллекции аргументов.
WSObjectArgs = WScript.Arguments
//Цикл по всем аргументам в коллекции.
for(i=0; i<WSObjectArgs.Count(); i+
WScript.Echo(i + "= " + WSObjectArgs(i));
else
WScript.Echo("ApryMeHTbi отсутствуют");
</script>
mil M8-O08 Prompt
Hicroseft (R) iindows Script Host Uersion 5.S
Copyright (C) Microsoft Corporation 1396-2880. ЯП
ftrguiertts;
8= car
1= truck
2= boat
3= plane
Рисунок 15.1. Доступ к аргументам командной строки через свойство
Arguments
WScript.ConnectObject()
WSH 2.0+
Синтаксис
WshObject.Comec\Ob]eci(theObject, prefixString)
Описание
Метод ConnectObject() подключает источники событий заданного объекта
(theObjeci) к функциям сценария. При возникновении в объекте события после
вызова метода ConnectObject() среда Windows Script Host вызовет указанную
функцию. Аргумент prefixString используется для формирования имени функции,
которое создается путем объединения содержимого параметра prefixString с именем
Глава 15. Windows Script Host 1342
события. Например, если аргумент prefixString содержит строку "MyObject", a
событие именуется "OnBegin", функция получит название "MyObjectOnBegin".
Пример
Код в листинге 15.4 реализует пример использования метода ConnectObject()
фиктивного объекта BogusObject. Сначала создается экземпляр объекта
BogusObject, а затем вызывается метод ConnectObject(). Если при выполнении
метода myMethod() возникнет событие "BogusEvent", будет вызвана функция
MyBogusFunctionBogusEvent(). Поскольку в приведенной программе используются
фиктивные объекты и события, она не будет в полной степени работоспособной.
Программа приведена только для анализа.
Листинг 15.4. Пример использования метода ConnectObject()
<job>
<script language="JScript">
//Создать фиктивный объект.
MyBogusObject = WScript.CreateObject("BogusObject");
//Подключить объект к функции.
WScript.ConnectObject(MyBogusObject, "MyBogusFunction");
MyBogusObject.myMethod();
//Обработать событие BogusEvent.
function MyBogusFunctionBogusEvent()
{
//Обработка события.
}
//Отключить объект от функции.
WScript.DisconnectObject(MyBogusObject);
</script>
WScript.CreateObject()
WSH 2.0+
Синтаксис
WshObject.CreaieOb\e(A(programlD, \prefixString])
Описание
Метод CreateObject() создает объект, заданный идентификатором программы
(programID). В методе может указываться необязательный аргумент, который
позволяет подключить исходящий интерфейс нового объекта к файлу сценария.
Если после такого подключения в новом объекте возникает событие, среда Windows
Script Host вызовет функцию, которая находится в сценарии. Имя функции
формируется путем объединения содержимого второго аргумента {prefixString) с
именем события. Например, если аргумент prefixString содержит строку
"MyObject", а событие называется "OnBegin", функция получит название
"MyObjectOnBegin".
1 343 Часть III. Справочник по JavaScript
Пример
Код в листинге 15.5 реализует пример использования метода CreateObject() с целью
создания нового объекта WshNetwork с именем MyWshNetwork. После создания
объект MyWshNetwork используется для вывода на экран имени компьютера.
Листинг 15.5. Пример использования метода CreateObject() для
создания объекта WshNetwork
<job>
<script language="JScript">
MyWshNetwork = WScript.CreateObject("WScript.Network");
WScript.echo(MyWshNetwork.computerName);
</script>
WScript.DisconnectObject()
WSH 2.0+
Синтаксис
WshObject.D\sconnectOb\ect(theObjecf)
Описание
Метод DisconnectObject() отключает источники событий заданного объекта
(theObject) от Windows Script Host.
Пример
В приведенном выше листинге 15.4 показано применение метода DisconnectObject()
на примере фиктивного объекта MyBogusObject.
WScript.Echo()
WSH 1.0+
Синтаксис
WshObject.Ecbo(cmpoKa1, строка2,..., строкаЫ)
Описание
Метод Echo() используется для вывода на экран указанных строк, разделенных
запятыми. Если сценарий запущен на выполнение с помощью WScript.exe, строки
будут выводиться в диалоговом окне. Если сценарий запущен в консольном режиме
(CScript.exe), строки будут выводиться на консоль, в рамках которой запущен
сценарий. При запуске сценария с помощью CScript.exe в конце результатов вывода
каждого метода Echo() будет выводиться символ новой строки. Если метод
вызывается с пустым списком аргументов, на экран будет выведена пустая строка.
Пример
Код в листинге 15.6 реализует пример использования метода Echo() для вывода
различных строк. Если сценарий запускается с помощью WScript.exe, два вызова
метода Echo() выведут на экран два диалоговых окна. При запуске сценария с
помощью CScript.exe результаты будет выведены в виде двух строк текста.
Глава 15. Windows Script Host 1344
Листинг 15.6. Пример использования метода Echo()
<job>
<script language="JScript">
color = "красные";
WScript.Echo('^6noKM", color);
WScript.Echo(aHaHbi не", color);
</script>
WScript.FullName
WSH 2.0+
Синтаксис
И/s/iOfoy'ecf.FullName
Описание
Свойство FullName определяет полный путь к исполняемому файлу среды Windows
Script Host.
Пример
В коде из листинга 15.7 свойство FullName используется для вывода на экран
полного пути к исполняемому файлу среды Windows Script Host. Например, если
файл WScript.exe находится в каталоге C:\WINDOWS, свойство FullName будет
иметь значение C:\WINDOWS\WSCRIPT.EXE.
Листинг 15.7. Пример использования свойства FullName
<job>
<script language="JScript">
WScript.Echo("Coflep>KMMoe свойства FullName=", WScript.FullName);
</script>
WScript.GetObject()
WSH 2.0+
Синтаксис
WshObject.GetObject(u/i«?_файла, [programID], \prefixString])
Описание
Метод GetObject() выбирает существующий объект из памяти или создает новый
объект из файла. Для создания объекта из файла необходимо просто указать полный
путь к файлу (имя_файла). Для выборки объекта из памяти необходимо указать
идентификатор программы (programID). Если объект, который необходимо извлечь,
зарегистрирован как объект с возможностью создания только одного экземпляра,
будет создан только один экземпляр.
В методе может указываться необязательный аргумент, который позволяет
подключить исходящий интерфейс нового объекта к файлу сценария. Если после
такого подключения в новом объекте возникает событие, среда Windows Script Host
вызовет функцию, которая находится в сценарии. Имя функции формируется путем
1 345 Часть III. Справочник по JavaScript
объединения содержимого второго аргумента (pre/ixString) с именем события.
Например, если аргумент prefixString содержит строку "MyObject", а событие
называется "OnBegin", функция получит название "MyObjectOnBegin".
Примечание
Метод GetObjectQ может использовать со всеми СОМ-классами независимо от языка,
который использовался для создания объекта.
Метод GetObjectQ нельзя использовать для получения ссылки на класс Visual Basic,
который был создан в Visual Basic 4.0 и более ранних версиях.
Пример
В приведенной ниже строке кода метод GetObject() используется для создания
объекта channel из файла MYSONG.MID, который ассоциирован с приложением
MYSOUNDPGM. Это приведет к тому, что запустится приложение
MYSOUNDPGM, которое откроет объект CHANNEL файла MYSONG.
channel = GetObject("C:\SONGS\MYSONG.MID","MYSOUNDPGM. CHANNEL");
WScri pt. I nteractive
WSH 5.6+
Синтаксис
l/l/sftOb/ecMnteractive
Описание
Свойство Interactive определяет режим сценария с помощью булевого значения. Это
свойство также можно использовать для установки режима. Режим может быть либо
пакетным, либо интерактивным, что выражается значениями 0 и 1 соответственно.
В интерактивном режиме A) обеспечивается взаимодействие с пользователями с
помощью диалоговых окон. В пакетном режиме @) ввод и вывод невозможны,
поэтому взаимодействие между сценарием и пользователями отсутствует.
Примечание
Режим сценария также можно установить в командной строке CScript.exe с помощью
ключей //I (интерактивный режим) и //В (пакетный режим).
Пример
Код в листинге 15.8 с помощью свойства Interactive определяет и выводит на экран
режим сценария.
Листинг 15.8. Определение режима сценария с помощью
свойства Interactive
<job>
<script language="JScript">
\Л/5спр1Еспо("Режим cueHapnfl=",WScript.lnteractive);
</script>
WScri pt. Name
WSH 2.0+
Глава 15. Windows Script Host 1346
Синтаксис
WshObject. Name
Описание
Свойство Name содержит имя среды Windows Script Host (WSH).
Пример
В листинге 15.9 приведен пример определения и вывода на экран имени среды
Windows Script Host с помощью свойства Name.
Листинг 15.9. Пример определения имени WSH с помощью
свойства Name
<job>
<script language="JScript">
WScript.EchofMMfl WSH =",WScript.Name);
</script>
WScript.Path
WSH 2.0+
Синтаксис
Wsh Object. Path
Описание
Свойство Path содержит имя каталога, в котором находится файл WScriptexe или
CScript.exe.
Пример
Код в листинге 15.10 реализует пример определения с помощью свойства Path
каталога, в котором находятся исполняемые файлы среды Windows Script Host.
Листинг 15.10. Определение каталога исполняемых файлов WSH с
помощью свойства Path
<job>
<script language="JScript">
WScript.EchofriyTb к исполняемым файлам WSH =",WScript.Path);
</script>
WScript.Quit()
WSH 2.0+
Синтаксис
Wsh Object. Qu Л(код_выхода)
1 347 Часть III. Справочник по JavaScript
Описание
Метод Quit() приводит к немедленному прекращению выполнения сценария. Если
необходимо, чтобы сценарий возвращал целочисленный код завершения, укажите в
вызове метода Quit() необязательный параметр код_еыхода.
Пример
В коде из листинга 15.11 метод Quit() вызывается до вызова второго метода Echo().
Это приводит к тому, что сценарий завершает выполнение, так и не вызвав второй
метод Echo().
Листинг 15.11. Прекращение выполнения сценария с помощью
метода Quit()
<job>
<script language="JScript">
WScript.Echo("riepefl вызовом метода Quit().");
WScript.Quit();
WScript.Echofriocne вызова метода Quit().");
</script>
WScriptScriptFullName
WSH 2.0+
Синтаксис
И/sftOfo/ecf.ScriptFullName
Описание
Свойство ScriptFullName определяет полный путь к выполняемому сценарию.
Пример
В коде из листинга 15.12 свойство ScriptFullName используется для вывода на экран
выполняемого сценария.
Листинг 15.12. Вывод на экран содержимого свойства ScriptFullName
<job>
<script language="JScript">
WScript.Echo(WScript.ScriptFullName);
</script>
WScript.ScriptName
WSH 2.0+
Синтаксис
l/l/sftOb/ecfScriptName
Описание
Свойство ScriptName содержит имя файла выполняемого сценария. Информация о
пути в этом свойстве отсутствует.
Глава 15. Windows Script Host 1348
Листинг 15.13. Вывод на экран содержимого свойства ScriptName
<job>
<script language="JScript">
WScript.Echo(WScript.ScriptName);
</script>
WScript.Sleep()
WSH 2.0+
Синтаксис
WshObject.S\eep(MunnuceKyHdbi)
Описание
Метод SleepO приводит к остановке выполнения сценария на количество
миллисекунд, указанное в параметре миллисекунды.
Пример
В коде из листинга 15.14 метод SleepO приостанавливает выполнение сценария на 10
секунд A0000 миллисекунд). Использование метода SleepO приводит к тому, что
пауза между выводом на экран строк, расположенных перед и после вызова метода
SleepO, составляет 10 секунд.
Листинг 15.14. Остановка выполнения сценария с помощью
метода Sleep()
<job>
<script language="JScript">
WScript.Echofriepefl вызовам метода Sleep().");
WScript.SleepA0000);
\Л/5спр1Еспо("После вызова метода Sleep().");
</script>
WScriptStdErr
WSH 2.0+
Синтаксис
WshObject. StdErr
Описание
Свойство StdErr предоставляет доступ к исходящему потоку ошибок, доступному
только для чтения.
Предупреждение
Доступ к свойству StdErr можно получить только при запуске в консольном режиме (с
помощью CScript.exe). Попытка его вызова в оконном режиме (с помощью
WScript.exe) приведет к ошибке.
1 349 Часть III. Справочник по JavaScript
Пример
В коде из листинга 15.15 поток ошибок с помощью свойства StdErr присваивается
переменной standardError. Затем с помощью метода write() передается сообщение
об ошибке в стандартный выходной поток ошибок. Для того чтобы этот
приведенный сценарий работал, его необходимо запускать в консольном режиме
(CScript.exe). Если не перенаправить стандартный выходной поток ошибок, строка
отобразится в консоли.
Листинг 15.15. Передача строки в стандартный поток вывода
ошибок
<job>
<script language="JScript">
standardError = WScript.StdErr;
standardError.write(Ta строка была передана в стандартный поток вывода ошибок");
</script>
WScript.Stdln
WSH 2.0+
Синтаксис
WshObject.Sid\n
Описание
Свойство Stdln предоставляет доступ к входному потоку текущего сценария.
Предупреждение
Доступ к свойству Stdln можно получить только при запуске в консольном режиме (с
помощью CScript.exe). Попытка его вызова в оконном режиме (с помощью
WScript.exe) приведет к появлению сообщения об ошибке.
Пример
В коде из листинга 15.16 стандартный входной поток с помощью свойства Stdln
присваивается переменной standard Input. После этого пользователю предлагается
ввести текст. Текст считывается с помощью метода Read() и первые 10 введенных
пользователем символов присваиваются переменной str и выводятся в консоли.
Листинг 15.16. Ввод текста с помощью стандартного входного
потока
<job>
<script language="JScript">
standardln = WScript.Stdln;
\Л/5спр1Еспо("Пожалуйста, введите произвольный текст:");
str = standardln.readAO);
WScript.Echo("Bbi ввели:",str);
</script>
Глава 15. Windows Script Host 1350
WScriptStdOut
WSH 2.0+
Синтаксис
WshObject.SldOul
Описание
Свойство StdOut предоставляет доступ к выходному потоку текущего сценария.
Предупреждение
Доступ к свойству StdOut можно получить только при запуске в консольном режиме (с
помощью CScript.exe). Попытка его вызова в оконном режиме (с помощью
WScript.exe) приведет к ошибке.
Пример
В коде из листинга 15.17 стандартный входной поток с помощью свойства StdOut
присваивается переменной standardOutput. После этого с помощью метода write()
строка передается в стандартный выходной поток. Для того чтобы этот сценарий
выполнялся корректно, его необходимо запускать в консольном режиме (с помощью
CScript.exe). Если не перенаправить стандартный выходной поток, строка
отобразится в консоли.
Листинг 15.17. Передача строки в стандартный выходной поток
<job>
<script language="JScript">
standardOutput = WScript.StdOut;
standard0utput.write(Ta строка была передана в стандартный выходной поток");
</script>
WScript. Version
WSH 1.0+
Синтаксис
WshObject. Version
Описание
Свойство Version определяет версию используемой среды Windows Script Host.
Пример
В коде из листинга 15.18 свойство Version используется для вывода на экран версии
Windows Script Host.
Листинг 15.18. Вывод на экран версии WSH с помощью
свойства Version
<job>
<script language="JScript">
WScript.Echo("BepcMq WSH:",WScript.Version);
</script>
1 351 Часть III. Справочник по JavaScript
WScript.WshArguments
WSH 5.6+
Синтаксис
И/sftOfo/ecf. WshArguments
Описание
Свойство WshArguments объекта WScript определяет указатель на объект
WshArguments, который, в свою очередь, содержит параметры командной строки
данного объекта WScript.
Пример
В коде из листинга 15.19 свойство Arguments используется для выборки коллекции
переданных сценарию аргументов. Например, предположим, что сценарий из
листинга 15.1 был записан в файл myscript.wsf и запущен в окне MS-DOS с
помощью следующий командной строки:
cscript.exe myscript.wsf автомобиль грузовик корабль самолет
В таком случае сценарию передаются аргументы автомобиль, грузовик, корабль и
самолет. Эти аргументы считываются в сценарии с помощью свойства Arguments и
выводятся на экран, как показано на рис. 15.1.
Листинг 15.19. Считывание аргументов с помощью
свойства Arguments
<job>
<script language="JScript">
if(WScript.WshArguments.Count())
{
WScript. Еспо("Аргументы:");
// Выборка коллекции аргументов
WSObjectArgs = WScript.WshArguments
// Цикл по всем аргументам объекта.
for(i=0; i<WSObjectArgs.Count();
{
WScript. Echo(i + "= " + WSObjectArgs(i));
}
}
else
{
WScript.Есгю("Аргументы отсутствуют");
}
</script>
WScript.WshController
WSH 5.6+
Синтаксис
Нет.
Глава 15. Windows Script Host 1352
Описание
Объект WshController является дочерним объектом объекта WScript. Поскольку
непосредственный доступ к этому объекту нельзя получить с помощью синтаксиса
WScript. WshController, более подробная информация по данному объекту
приведена в описании объекта WshController.
WScript. WshNetwork
WSH 5.6+
Синтаксис
Нет.
Описание
Объект WshNetwork является дочерним объектом объекта WScript. Поскольку
непосредственный доступ к этому объекту невозможно получить с помощью
синтаксиса WScript.WshNetwork, более подробная информация по данному объекту
приведена в описании объекта WshNetwork.
WScript.WshShell
WSH 5.6+
Синтаксис
Нет.
Описание
Объект WshShell является дочерним объектом объекта WScript. Поскольку
непосредственный доступ к этому объекту нельзя получить с помощью синтаксиса
WScript.WshShell, более подробная информация по данному объекту приведена в
описании объекта WshShell.
WshArguments
WSH 2.0+
Синтаксис
ArgObj = WScript.Arguments
WScript.ArgumentsDucy7o)
Описание
Объект WshArguments предоставляет доступ к параметрам командной строки
объекта WScript. Доступ к объекту WshArguments, который фактически является
дочерним объектом объекта WScript, осуществляется с помощью свойства
Arguments объекта WScript. Свойства и методы объекта WshArguments
перечислены в табл. 15.2.
Доступ к содержимому объекта WshArguments может осуществляться путем
указания параметра число в скобках после имени объекта WshArguments.
1 353 Часть III. Справочник по JavaScript
Таблица 15.2. Свойства и методы объекта WshArguments
Тип
Свойства
Метод
Элемент
Count
Length
Named
Unnamed
Count()
ItemO
ShowUsageQ
Описание
Количество параметров (только VBScript).
Количество параметров.
Объект только именованных параметров.
Объект только неименованных параметров.
Возвращает количество параметров.
Предоставляет доступ к определенному параметру.
Выводит данные об использовании сценария.
Помимо методов и свойств, приведенных В табл. 15.2, объект WshArguments
является родительским объектом для ряда других объектов. В частности, свойства
Named и Unnamed предоставляют доступ к объектам WshNamed и WshUnnamed.
Пример
В коде листинга 15.20 из свойства WScript. Arguments создается объект
WshArgument с именем WshArgsObj. Если объект WshArgsObj содержит
параметры, доступ к ним можно получить непосредственно с помощью этого
объекта с помощью скобок. Так, например, если запустить приведенный сценарий из
командной строки cscript.exe Hstingl5-20.wsf Chris Craig, на экран будут выведены
аргументы Chris и Craig.
Листинг 15.20. Вывод на экран содержимого объекта WshArguments
<job>
<script language="JScript">
//Выборка коллекции аргументов.
WshArgsObj = WScript.Arguments;
if(WshArgsObj.Count())
{
WScript.EchofApryMeHTbi:");
//Цикл по всем аргументам коллекции.
for(i=0; i< WshArgsObj.Count(); i+
WScript. Echo(i + "= " + WshArgsObj(i));
}
}
else
{
WScript.Есгю("Аргументы отсутствуют");
}
</script>
WshArguments.Count
Синтаксис
И/sMrgOb/Count
WSH 2.0+
Глава 15. Windows Script Host 1354
Описание
Свойство Count определяет количество параметров, переданных в Windows Script
Host. В число параметров включаются как именованные, так и неименованные
параметры.
Примечание
Свойство Count доступно только в VBScript. В JScript для определения количества
параметров используется свойство Length.
Пример
Пример использования свойства Count не приводится, поскольку свойство
недоступно в JScript.
WshArguments.Count()
WSH 2.0+
Синтаксис
WshArgObj.CountO
Описание
Метод Count() возвращает количество параметров, переданных в Windows Script
Host. В число параметров включаются как именованные, так и неименованные
параметры.
Пример
В коде листинга 15.21 с помощью свойства WScript.Arguments создается объект
WshArgument с именем WshArgsObj. После этого для вывода на экран количества
параметров, переданных в Windows Script Host используется метод Count().
Например, если запустить на выполнение приведенный код в MS-DOS с помощью
командной строки "cscriptexe Hsting21.wsf красный синий", метод Count()
возвратит значение 2.
Листинг 15.21. Вывод на экран содержимого метода Count()
<job>
<script language="JScript">
//Выборка коллекции аргументов.
WshArgsObj = WScript.Arguments;
//Отображение на экране количества параметров.
WScript.Есгю("Количество параметров:", WshArgsObj.Count());
</script>
WshArguments.ltemQ
WSH 2.0+
Синтаксис
WshArgObj. \1ет(число)
1 355 Часть III. Справочник по JavaScript
Описание
Метод Item() используется для получения доступа к одному определенному
элементу коллекции WshArguments. Выбираемый элемент (параметр WScript)
определяется аргументом число.
Пример
В коде листинга 15.22 создается объект WshArgument с именем WshArgsObj, Если
в объекте WshArgsObj содержатся параметры, они выбираются с помощью метода
Item().
Листинг 15.22. Вывод на экран параметров WScript с помощью
метода ltem()
<job>
<script language="JScript">
//Выборка коллекции аргументов.
WshArgsObj = WScript.Arguments;
if(WshArgsObj.Count())
{
WScript. Есгю("Аргументы:");
//Цикл по всем элементам коллекции.
for(i=0; i< WshArgsObj.Count(); i+
{
WScript. Echo(i + "= " + WshArgsObj.Item(i));
}
}
else
{
WScript.Echo("ApryMembi отсутствуют");
}
</script>
WshArguments.length
WSH 2.0+
Синтаксис
WshArgObj. length
Описание
Свойство Length содержит количество параметров, переданных в Windows Script
Host. В число параметров включаются как именованные, так и неименованные
параметры.
Пример
В коде листинга 15.23 создается объект WshArgument с именем WshArgsObj.
После этого для определения количества параметров используется свойство Length.
Если объект WshArgObj содержит параметры, свойство Length используется
повторно в цикле вывода параметров на экран.
Глава 15. Windows Script Host 1356
Листинг 15.23. Пример использования свойства Length
<job>
<script language="JScript">
//Выборка коллекции аргументов.
WshArgsObj = WScript.Arguments;
if(WshArgsObj. Length)
{
WScript.Echo("ApryMeHTbi:");
//Цикл по всем элементам коллекции.
for(i=0; i< WshArgsObj.Length;
WScript.Echo(i + "= " + WshArgsObj.Item(i));
}
}
else
{
WScript.Echo("ApryMeHTbi отсутствуют");
}
</script>
WshArguments.Named
WSH 5.6+
Синтаксис
WshArgsObj. Named
Описание
Свойство Named содержит коллекцию WshNamed. В этой коллекции содержатся
именованные параметры объекта WshArguments. Именованным параметром
считается параметр, состоящий из пары ключ/значение с разделителем-двоеточием
(:), причем перед ключом должна указываться косая черта (/).
Пример
В коде листинга 15.24 создается объект WshArgument с именем WshArgsObj.
После этого для доступа к объекту WshNamed, который используется для вывода на
экран значения параметра color (если параметр существует), используется свойство
Named. Так, например, если приведенный сценарий запускается в режиме
командной строки:
cscript.exe Iisting24.wsf /со1ог:зеленый
на экране будет выведена строка "color= зеленый".
Листинг 15.24. Пример использования свойства Named для вывода
на экран значения параметра color
<job>
<script language="JScript">
//Выборка коллекции аргументов.
WshArgsObj = WScript.Arguments;
//Выбрать коллекцию именованных аргументов.
1 357 Часть III. Справочник по JavaScript
WshNamedArgsObj = WshArgsObj. Named
if(WshNamedArgsObj.length)
{
WScript.Echo("color=", WshNamedArgsObj.Itemfcolor"));
}
else
{
WScript.EchofMMeHOBaHHbie аргументы отсутствуют");
}
</script>
WshArguments.ShowUsage()
WSH 5.6+
Синтаксис
WshArgsObj.SbowllsageQ
Описание
Метод ShowUsage() выводит справочный экран сценария. На справочном экране
находится информация по опциям командной строки сценария. Эта информация
задается в разделе времени выполнения сценария между дескрипторами <runtime> и
</runtime>.
Пример
Код в листинге 15.25 реализует сценарий, который выводит на экран цвет,
введенный пользователем в командной строке при запуске сценария. Если в
командной строке аргументы отсутствуют, метод ShowUsage() выводит на экран
информацию, содержащуюся в дескрипторах <runtime>. Выводимая на экран
информация показана на рис. 15.2.
Листинг 15.25. Пример использования метода ShowUsage() для
вывода на экран информации об использовании сценария
<job>
<runtime>
<description>
Этот сценарий выводит на экран о цвете, переданном в качестве аргумента
</description>
<named
name = "color"
helpstring = "Ваш любимый цвет"
type = "string"
required = "true"
/>
<ехатр1е>Пример: Iisting25.wsf /color:purple</example>
</runtime>
<script language="JScript">
//Выборка коллекции аргументов.
WshArgsObj = WScript.Arguments;
if(WshArgsObj.Named.length == 0)
{
//Вывести на экран информацию об использовании сценария.
Глава 15. Windows Script Host 1358
WshArgsObj.ShowUsage();
}
else
{
WScript.Echo("Bam любимый цвет", WshArgsObj.Named("color"));
}
</script>
Windows
his vc-
:. 3f>,;s ■
Or.r.n.
cz'c,- '- с
Script Host И
Рисунок 15.2. Вывод на экран информации об использовании сценария
WshArguments. Unnamed
WSH 5.6+
Синтаксис
WshArgsObj. Unnamed
Описание
Свойство Unnamed определяет коллекцию WshUnnamed. В этой коллекции
содержатся параметры объекта WshArguments за исключением именованных
параметров. Именованным параметром считается параметр, состоящий из пары
ключ/значение с разделителем-двоеточием (:), причем перед ключом должна
указываться косая черта (/).
Пример
В коде листинга 15.26 создается объект WshArgument с именем WshArgsObj.
После этого для доступа к объекту WshNamed, который используется для вывода на
экран значений неименованных параметров, используется свойство Unnamed. Так,
например, если приведенный сценарий запускается в режиме командной строки:
cscript.exe Iisting24.wsf/со1ог:зеленый синий красный
на экран будут выведены параметры синий и красный.
Листинг 15.26. Пример использования свойства Unnamed для
вывода на экран значений неименованных параметров
<job>
<script language="JScript">
//Выборка коллекции аргументов.
WshArgsObj = WScript.Arguments;
//Выбрать коллекцию неименованных аргументов.
1 359 Часть III. Справочник по JavaScript
WshllnnamedArgsObj = WshArgsObj. Unnamed
if(WshUnnamedArgsObj. length)
{
WScript.Echo("HeMMeHOBaHHbie аргументы:");
//Цикл по всем неименованным аргументам.
for(i=0; i< WshUnnamedArgsObj.Length; i
{
WScript.Echo(i + "= " + WshUnnamedArgsObj. Item(i));
}
}
else
{
WScript.Echo("HenMeHOBaHHbie аргументы отсутствуют");
}
</script>
WshArguments.WshNamed
WSH 5.6+
Синтаксис
Нет.
Описание
Объект WshNamed является дочерним объектом объекта WshArguments.
Поскольку непосредственный доступ к этому объекту невозможен с применением
синтаксиса WshArguments.WshNamed, более подробная информация по данному
объекту будет приведена в описании объекта WshNamed.
WshArguments.Wshllnnamed
WSH 5.6+
Синтаксис
Нет.
Описание
Объект WshUnnamed является дочерним объектом объекта WshArguments.
Поскольку непосредственный доступ к этому объекту нельзя получить с помощью
синтаксиса WshArguments.WshUnnamed, более подробная информация по данному
объекту будет приведена в описании объекта WshUnnamed.
WshController
WSH 5.6+
Синтаксис
WshControllerObj' = WScript.CreateObjectfWScript.Controller")
Глава 15. Windows Script Host 1360
Описание
Объект WshController является дочерним объектом объекта WScript. Он позволяет
создавать удаленные сценарии (объекты WshRemote) с помощью метода
CreateScript(). Для создания объекта WshController необходимо использовать
метод CreateScript() объекта WScript.
Примечание
В операционных системах Windows 9x объект WshController недоступен.
Пример
Код в листинге 15.27 реализует пример использования метода CreateObject() для
создания объекта WshController - дочернего объекта WScript. После этого
созданный объект WshController используется для создания и запуска на
выполнение удаленного сценария.
Листинг 15.27. Пример создания и использования
объекта WshController
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\windows\myscript.wsf);
// Запустить на выполнение сценарий.
remoteScript. Execute();
</script>
WshController.CreateScript()
WSH 5.6+
Синтаксис
WshControllerObj.Crea\eScript(commandLine, machine)
Описание
Метод CreateScript() создает объект WshRemote, который позволяет сценарии на
одном компьютере дистанционно запускать на другом компьютере. Полный путь
удаленного сценария, а также все параметры командной строки передаются в
аргументе commandLine. Файл сценария может находиться на другом компьютере.
Если запускаемый сценарий находится на удаленном компьютере, имя удаленного
компьютера должно передаваться в параметре machine с учетом соглашения об
универсальном именовании (Universal Naming Convention, LJNC). Аргумент machine
необязателен, поэтому, если его опустить, сценарий буде запущен с локального
компьютера.
Предупреждение
Метод CreateScriptf) подготавливает сценарий к запуску на уделенном компьютере и
устанавливает соединение с уделенным компьютером, но запуск сценария
происходит только при вызове метода ExecuteQ объекта WshRemote.
1 361 Часть III. Справочник по JavaScript
Примечание
Метод CreateScriptQ недоступен в операционных системах Windows 9x.
Пример
Код в листинге 15.28 с помощью метода CreateObject() создает объект
WshController с именем WshCtrlObj. Удаленный сценарий, который находится в
файле "C:\scripts\myScript.wsf', создается с помощью метода CreateScript(). После
этого удаленный сценарий myRemoteScript запускается с помощью метода
Execute().
Листинг 15.28. Пример использования метода CreateObject() для
создания уделенного сценария
<job>
<script language="JScript">
//Создать объект Controller.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
//Создать уделенный сценарий
myRemoteScript = WshCtrlObj. CreateScript("c:\\scripts\\myScript.wsf");
//Запустить на выполнение удаленный сценарий.
myRemoteScript. Execute();
</script>
WshController. WshRemote
WSH 5.6+
Синтаксис
Нет.
Описание
Объект WshRemote является дочерним объектом объекта WshController. Поскольку
непосредственный доступ к этому объекту невозможен с помощью синтаксиса
WshController.WshRemote, более подробная информация по данному объекту
приведена в описании объекта WshRemote.
WshEnvironment
WSH 2.0+
Синтаксис
WshEnvObj(cmpora)
Описание
Объект WshEnvironment предоставляет доступ ко всему набору переменных
окружения. Доступ к этому объекту Environment осуществляется с помощью
свойства Environment объекта WshShell. В зависимости от содержимого свойства
Environment, объект WshEnvironment может содержать значения "User", "System",
"Volatile" или "Process". Более подробная информация по созданию объекта
WshEnvironment приведена в описании свойства WshShell.Environment далее в
этой главе.
Глава 15. Windows Script Host 1362
Свойства и методы объекта WshEnvironment перечислены в табл. 15.3. Помимо
методов и свойств, приведенных в таблице, доступ к переменным окружения можно
получить с помощью объекта WshEnvironment путем указания имени переменной
окружения в скобках после имени объекта WshEnvironment.
Таблица 15.3. Свойства и методы объекта WshEnvironment
Тип
Свойства
Метод
Элемент
Length
Count()
ltem()
RemoveQ
Описание
Содержит количество переменных окружения.
Возвращает количество переменных окружения.
Предоставляет доступ к определенной переменной
окружения.
Удаляет переменную окружения.
В табл. 15.4 приводится перечень некоторых переменных окружения, доступных в
операционной системе Windows, с коротким описанием. Кроме того, в таблице
указана доступность каждой переменой в зависимости от значения свойства
Environment (P=Process, S=System, U=User). Для значения "Volatile" не
поддерживается ни одна из приведенных в таблице переменных.
Таблица 15.4. Переменные
Имя
NUMBER_OF_PROCESSORS
PROCESSOR_ARCHITECTURE
PROCESSORJDENTIFIER
PROCESSORJ.EVEL
PROCESSOR_REVISION
OS
COMSPEC
HOMEDRIVE
HOMEPATH
PATH
PATHEXT
PROMPT
SYSTEMDRIVE
SYSTEMROOT
WINDIR
TEMP
TMP
P
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
s
X
X
X
X
X
X
X
X
X
X
X
и
X
X
X
окружения Windows
Описание
Количество процессоров в данном
компьютере.
Тип процессора компьютера
пользователя.
Идентификатор процессора
компьютера пользователя.
Уровень процессора компьютера
пользователя.
Версия процессора компьютера
пользователя.
Операционная система на
компьютере пользователя.
Исполняемый файл командной
строки (как правило, cmd.exe).
Первичный локальный диск.
Путь к каталогу пользователя по
умолчанию.
Путь
Расширения исполняемых файлов.
Вид командной строки.
Локальный диск, на котором
находится системный каталог.
Системный каталог. То же, что и
WINDIR.
Системный каталог. То же, что и
SYSTEMROOT.
Каталог временных файлов.
Каталог временных файлов.
1 363 Часть III. Справочник по JavaScript
Пример
Код в листинге 15.29 реализует пример создания объекта WshEnvironment для
доступа ко всем переменным окружения "Process". Новый объект WshEnvObj
используется для вывода на экран значения переменной "WINDIR". После запуска
приведенного сценария на экране отображается путь к системному каталогу.
Листинг 15.29. Вывод на экран пути к системному каталогу с
помощью объекта WshEnvironment
<job>
<script language="JScript">
//Создать объект Shell.
var WshShellObj = WScript.CreateObject("WScript.Shell");
//Создать объект WshEnvironment.
var WshEnvObj = WshShellObj.Environment("Process");
//Отображение на экране пути к системному каталогу.
WScript.Echo("CncTeMHbin каталог=", WshEnvObj("WINDIR"));
</script>
WshEnvironment.Count()
WSH 2.0+
Синтаксис
WshEnvObj. Count()
Описание
Метод Count() возвращает количество переменных окружения объекта
WshEnvironment. В зависимости от значения свойства Environment при создании
объекта WshEnvironment, метод будет возвращать различные значения. Более
подробная информация по свойству Environment приведена в описании свойства
WshShell.Environment в этой главе.
Пример
Код в листинге 15.30 реализует пример использования метода Count() для вывода на
экран количества переменных окружения "Process" объекта WshEnvironment.
Листинг 15.30. Вывод на экран количества переменных окружения с
помощью метода Count()
<job>
<script language="JScript">
//Создать объект Shell
var WshShellObj = WScript.CreateObject("WScript.Shell");
//Создать объект WshEnvironment.
var WshEnvObj = WshShellObj.Environment("Process");
//Отображение на экране количества переменных окружения в данном объекте.
WScript.Echo("Count=", WshEnvObj.CountO);
</script>
Глава 15. Windows Script Host 1364
WshEnvironment.ltem()
WSH 2.0+
Синтаксис
WshEnvObj. Item(cmpora)
Описание
Метод Item() используется для доступа к значению определенной переменой
окружения объекта WshEnvironment. Имя переменной окружения задается
параметром строка.
Пример
Код в листинге 15.31 реализует пример создания объекта WshEnvironment,
обеспечивающего доступ ко всем переменным окружения "Process". Новый объект
WshEnvObj и его Item() метод используются для вывода на экран значения
переменной "WINDIR". После запуска приведенного сценария на экран выводится
путь к системному каталогу.
Листинг 15.31. Вывод на экран пути к системному каталогу с
помощью метода ltem()
<job>
<script language="JScript">
//Создать объект Shell.
var WshShellObj = WScript.CreateObject("WScript.Shell");
//Создать объект WshEnvironment.
var WshEnvObj = WshShellObj.Environment("Process");
//Вывести на экран путь к системному каталогу.
WScript.Echo("CMCTeMHbiii каталог=", WshEnvObj.ltem("WINDIR"));
</script>
WshEnvironment.length
WSH 2.0+
Синтаксис
WshEnvObj. length
Описание
Свойство length определяет количество переменных окружения объекта
WshEnvironment. В зависимости от значения свойства Environment при создании
объекта WshEnvironment, свойство будет возвращать различные значения. Более
подробная информация по свойству Environment приведена в описании свойства
WshShell.Environment далее в этой главе.
Пример
Код в листинге 15.32 реализует пример использования свойства length для вывода на
экран всех переменных окружения "Process" объекта WshEnvironment.
1 365 Часть III. Справочник по JavaScript
Листинг 15.32. Вывод на экран количества переменных окружения с
помощью свойства length
<job>
<script language="JScript">
//Создать объект Shell.
var WshShellObj = WScript.CreateObject("WScript.Shell");
//Создать объект WshEnvironment.
var WshEnvObj = WshShellObj. Environment("Process");
//Вывести на экран количество переменных окружения в данном объекте.
WScript.Echo("Length=", WshEnvObj.length);
</script>
WshEnvironment.Remove()
WSH 2.0+
Синтаксис
WshEnvObj.Remove(envVai)
Описание
Метод Remove() позволяет удалять переменные окружения, просто указав в качестве
аргумента метода имя переменной. Переменные окружения, удаляемые с помощью
этого метода, удаляются только для текущего сеанса.
Примечание
Чтобы удалить переменную окружения, необходимо, чтобы она существовала в
объекте WshEnvironment. Состав переменных окружения в объекте
WshEnvironment зависит от значения свойства Environment в момент создания
объекта WshEnvironment.
Пример
В коде из листинга 15.33 проверяется, существует ли переменная окружения
WINDIR. Если указанная переменная окружения существует, ее значение
записывается в переменную. После чего переменная окружения удаляется с
помощью метода Remove(). И, наконец, при удачном удалении переменной на экран
выводится соответствующее сообщение.
Листинг 15.33. Пример удаления переменной окружения с помощью
метода Remove()
<job>
<script language="JScript">
//Создать объект Shell.
var WshShellObj = WScript.CreateObject("WScript.Shell");
//Создать объект WshEnvironment.
var WshEnvObj = WshShellObj.Environment("Process");
if(WshEnvObj.ltem("WINDIR"))
{
//Вывести на экран значение переменной окружения WINDIR.
WScript.Echo("WINDIR=", WshEnvObj.ltem("WINDIR"));
//Удалить переменную окружения.
Глава 15. Windows Script Host 1366
WshEnvObj.Remove("WINDIR");
//Удаление прошло успешно?
if(!WshEnvObj.ltem("WINDIR"))
{
\Л/5спр1Еспо("Переменная окружения WINDIR успешно удалена!");
}
else
{
WScript.Echo("nepeMeHHafl окружения WINDIR не была удалена!");
}
}
else
{
WScript.Echo("Пepeмeннaя окружения WINDIR не существует, поэтому ее нельзя
удалить!");
}
</script>
WshNamed
WSH 5.6+
Синтаксис
WshNamed
Описание
Объект WshNamed обеспечивает доступ к коллекции аргументов, возвращаемым
свойством WshArguments.Named. Свойства и методы объекта WshNamed
перечислены в табл. 15.5.
Таблица 15.5. Свойства и методы объекта WshNamed
Тип
Свойства
Методы
Элемент
Item
Length
Count()
ExistsQ
Описание
Выбирает элементы.
Количество элементов в коллекции Arguments.
Количество ключей в объекте WshNamed или Wshllnnamed.
Указывает, существует ли значение ключа.
Пример
В коде из листинга 15.34 свойство Arguments используется для выборки коллекции
переданных сценарию аргументов и присваивает ее новому объекту с именем
WshNamed. После этого в цикле осуществляется вывод аргументов на экран.
Предположим, что имя файла сценария myScript.wsf и сценарий выполняется в
режиме командной строки:
cscript myScript.wsf "Где Тилли" "Собака на улице"
После выполнения приведенного сценария на экран будет выведены два аргумента:
"Где Тилли" и "Собака на улице".
Листинг 15.34. Пример использования объекта WshNamed
<job>
1 367 Часть III. Справочник по JavaScript
<script language="JScript">
// Создать объект WshNamed.
WshNamed = WScript.Arguments;
// Цикл по всем аргументам с выводом их на экран.
for(i=0; i<WshNamed.Count(); i++){
WScript.Echo(Ha4eHMe аргумента:" + WshNamed.Item(i)'
}
</script>
WshNamed.Count()
WSH 5.6+
Синтаксис
l/l/s/i/\/amed.Count()
Описание
Метод Count() объекта WshNamed возвращает целое число, которое соответствует
количеству ключей.
Пример
В коде из листинга 15.35 свойство Arguments используется для выборки коллекции
переданных сценарию аргументов и присвоения полученной коллекции новому
объекту с именем WshNamed. Количество аргументов отображается на экран.
Предположим, что имя файла сценария myScript.wsf и сценарий был запущен на
выполнение в командной строке DOS:
cscript myScript.wsf "Что Вы делаете?" "Читаю книгу!"
После выполнения сценария на экране отображается количество аргументов B).
Листинг 15.35. Определения количества аргументов с помощью
метода Count
<job>
<script language="JScript">
// Создать объект WshNamed.
WshNamed = WScript.Arguments;
// Вывести на экран количество аргументов.
WScript.Echo("KcmH4ecTBO аргументов:" + WshNamed.Count());
</script>
WshNamed.Exists()
WSH 5.6+
Синтаксис
WshNamed. ExistsCHa4eHne)
Описание
Метод Exists() используется для определения того, существует ли в объекте
WshNamed конкретное значение. Возвращается булево значение true или false.
Глава 15. Windows Script Host 1368
Пример
В коде из листинга 15.36 свойство Arguments используется для выборки коллекции
переданных сценарию аргументов и присвоения полученной коллекции новому
объекту с именем WshNamed. После этого проверяется, существует ли в списке
аргументов значение "с". Предположим, что имя файла сценария myScript.wsf и
сценарий был запущен на выполнение в командной строке DOS:
cscript myScript.wsf/с "Где документ"
После выполнения сценария на экране будет выведено сообщение о том, что ключ
найден.
Листинг 15.36. Пример использования метода Exists() объекта
WshNamed
<job>
<script language="JScript">
// Создать объект WshNamed.
WshNamed = WScript.Arguments.Named;
// Если ключ /с существует, вывести на экран
// соответствующее сообщение.
if(WshNamed.ExistsfC"))
{
WScript.Echo("KnKL найден");
}
</script>
WshNamed.Item
WSH 5.6+
Синтаксис
WshNamed. Иет(ключ)
Описание
Свойство Item используется для получения доступа к элементам объекта
WshNamed.
Пример
В коде из листинга 15.37 свойство Arguments используется для выборки коллекции
переданных сценарию аргументов и присвоения полученной коллекции новому
объекту с именем WshNamed. После этого выполняется цикл, в котором все
аргументы выводятся на экран. Предположим, что имя файла сценария myScript.wsf
и сценарий был запущен на выполнение в командной строке DOS:
cscript myScript.wsf "Где ребенок?" "Он катается на велосипеде"
После выполнения сценария на экране будут выведены оба аргумента: "Где
ребенок?" "Он катается на велосипеде".
Листинг 15.37. Пример использования свойства Items
<job>
<script language="JScript">
1 369 Часть III. Справочник по JavaScript
// Создать объект WshNamed.
WshNamed = WScript.Arguments;
// Цикл по всем аргументам с выводом их на экран.
for(i=0; i<WshNamed.Count(); i++){
WScript.Есгю("Аргумент:" + WshNamed.Item(i));
}
</script>
WshNamed.length
WSH 5.6+
Синтаксис
l/l/sftOfo/ecf.length
Описание
Свойство length возвращает количество параметров командной строки данного
сценария. Это свойство, которое доступно только для чтения, фактически
представляет собой количество элементов в коллекции аргументов.
Пример
В коде из листинга 15.38 свойство Arguments используется для извлечения
коллекции переданных сценарию аргументов и присвоения полученной коллекции
новому объекту с именем WshNamed. После этого свойство length используется для
вывода на экран количества аргументов. Предположим, что имя файла сценария
myScript.wsf и сценарий был запущен с помощью следующей командной строки
DOS:
cscript myScript.wsf "Анжела" "Пит"
После выполнения сценария на экране будет выведено количество аргументов.
Листинг 15.38. Отображение на экране количества аргументов с
помощью свойства length
<job>
<script language="JScript">
// Создать объект WshNamed.
WshNamed = WScript.Arguments;
WScript.Ес1то("Количество аргументов:" + WshNamed.Length );
</script>
Wsh Network
WSH 2.0+
Синтаксис
Wsh Network
Глава 15. Windows Script Host 1370
Описание
Объект WshNetwork обеспечивает доступ в сеть Microsoft Windows Network. Сюда
входят все сетевые элементы, например, диски и принтеры. Свойства и методы
объекта WshNetwork перечислены в табл. 15.6.
Таблица 15.6. Свойства и методы объекта WshNetwork
Тип
Свойства
Методы
Элемент
ComputerName
UserDomain
UserName
AddPrinterConnection()
AddWindowsPrinterConnection()
EnumNetworkDrivesO
EnumPrinterConnection()
MapNetworkDrive()
RemoveNetworkDrive()
RemovePrinterConnection()
SetDefaultPrinterQ
Описание
Имя Windows-компьютера.
Домен пользователя локального
компьютера.
Имя, зарегистрированное в Windows.
Подключает сетевой принтер.
Добавляет соединение с принтером.
Определяет все сетевые диски.
Определяет все сетевые принтеры.
Подключает сетевой диск.
Отключает сетевой диск.
Отключает сетевой принтер.
Устанавливает принтер, заданный по
умолчанию.
Пример
В коде из листинга 15.39 для вывода на экран содержимого свойства UserName
объекта WshNetwork используется метод Echo() объекта WScript.
Листинг 15.39. Пример использования объекта WshNetwork
<job>
<script language="JScript">
// Создать новый объект WshNetwork.
va r WshNetwork = new ActiveXObject("Wscript.Network");
// Вывести на экран имя пользователя.
WScript.Ес1по("Имя пользователя данного компьютера: ".WshNetwork.UserName);
</script>
WshNetwork.AddPrinterConnection()
WSH 2.0+
Синтаксис
WshNetwork.AddPrinterConnection(/7ora/7bHoe_u/w«, удаленное_имя, updateProfile,
пользовательское_имя, пароль)
Описание
Метод AddPrinterConnection() используется для подключения к указанному
компьютеру удаленного принтера. В качестве первого параметра должно
указываться локальное имя принтера, локальное_имя. В качестве второго параметра
должно указываться удаленное имя принтера, удаленное_имя. Параметр
updateProfile представляет собой булево значение, которое указывает, должно ли
1 371 Часть III. Справочник по JavaScript
сохраняться назначение в профиле пользователя (по умолчанию используется
значение false). При установке принтеров, которые требуют аутентификации
доступа, необходимо указывать параметры имя пользователя и пароль. Параметры
updateProfile, имя пользователя и пароль являются необязательными параметрами.
Пример
Код в листинге 15.40 реализует пример назначения удаленного принтера локальному
компьютеру.
Листинг 15.40. Пример использования метода AddPrinterConnection()
для назначения удаленного принтера
<job>
<script language="JScript">
// Создать новый объект WshNetwork.
var Wsh Network = new ActiveXObject("Wscript.Network");
// Описать подключаемый принтер.
var printer = "Wprinters\DefaultPrinter";
var localName = "myPrinter";
// Установить принтер в сети.
WshNetwork.AddPrinterConnection(localName, printer);
</script>
WshNetwork.AddWindowsPrinterConnection()
WSH 2.0+
Синтаксис
l/l/s/7Ob/ecf.AddWindowsPrinterConnection(nymb_npuHmepa, имя_драпвера,
порт_принтера)
Описание
Метод AddWindowsPrinterConnection() используется для добавления в среде
Windows соединений принтеров. Параметр путь_принтера определяет путь к
принтеру и является обязательным параметром. Параметр имя_драйвера определяет
имя используемого драйвера и игнорируется в среде Windows NT/2000. Параметр
порт_принтера указывает порт, к которому необходимо подключить принтер,
является необязательным параметром и игнорируется в среде Windows NT/2000. По
умолчанию значение параметра равно LPT1.
Пример
Код в листинге 15.41 реализует пример установки в текущей среде Windows
принтера Epson Stylus 850.
Листинг 15.41. Пример использования метода
AddWindowsPrinterConnection
<job>
<script language="JScript">
// Создать объект WshNetwork.
var WshNetwork = new ActiveXObjectfWscript.Network");
// Описать устанавливаемый принтер.
Глава 15. Windows Script Host 1372
var printerPath = "WprintersVDefaultPrinter";
var driver = "Epson Stylus 850";
// Установить новый сетевой принтер.
WshNetwork.AddWindowsPrinterConnection(printerPath, driver);
</script>
WshNetwork.ComputerName
WSH 2.0+
Синтаксис
H/sft/vefwor/c. ComputerName
Описание
Свойство ComputerName возвращает имя компьютера в строковом представлении.
Пример
Код в листинге 15.42 реализует пример использования свойства ComputerName для
определения текущего имени компьютера.
Листинг 15.42. Пример использования свойства ComputerName
<job>
<script language="JScript">
// Создать объект WshNetwork.
var WshNetwork = new ActiveXObjectfWscript.Network");
// Вывести на экран имя компьютера.
WScript.Echo("l/lMfl этого компьютера:" + WshNetwork.ComputerName);
</script>
WshNetwork.EnumNetworkDrives()
WSH 2.0+
Синтаксис
WshNetwork. EnumNetworkDrives()
Описание
Метод EnumNetworkDrives() используется для определения текущих
подключенных сетевых дисков.
Пример
Код в листинге 15.43 используется для определения подключенных сетевых дисков.
При этом для вывода информации на экране используется цикл for.
Листинг 15.43. Пример использования метода EnumNetworkDrives()
для определения подключенных сетевых дисков
<job>
<script language="JScript">
// Создать объект WshNetwork.
var WshNetwork = new ActiveXObjectfWscript.Network");
1 373 Часть III. Справочник по JavaScript
var myDrives = WshNetwork.EnumNetworkDrives();
// Цикл по всем сетевым дискам с выводом на экран номера каждого диска.
for (i=0; i<myDrives.Count(); i++){
WScript.Echo("HoMep диска " + i + " -" + myDrives.ltem(i+1));
}
</script>
WshNetwork.EnumPrinterConnectionO
WSH 2.0+
Синтаксис
l/Ksft/Vefwor/c.EnumPrinterConnection()
Описание
Метод EnumPrinterConnection() используется для определения текущих
подключенных сетевых принтеров.
Пример
Код в листинге 15.44 выводит на экране список подключенных сетевых принтеров.
Листинг 15.44. Пример использования метода
EnumPrinterConnection() для определения подключенных сетевых
принтеров
<job>
<script language="JScript">
// Создать объект WshNetwork.
var Wsh Network = new ActiveXObject("Wscript.Network");
var myPrinters = WshNetwork.EnumPrinterConnections();
// Цикл по всем принтерам с выводом каждого принтера на экране.
for (i=0; i<myPrinters.Count(); i+=){
WScript.Echo("ripHHTep " + myPrinters.Item(i) + " -" + myPrinters.ltem(i+1));
}
</script>
WshNetwork.MapNetworkDrive()
WSH 2.0+
Синтаксис
l/l/sft/Veft/rar/c.MapNetworkDriveFyKea_di/c/fa, имя_диска, updateProfile,
имя_пользователя, пароль)
Описание
Метод MapNetworkDrive() используется для подключения сетевого диска к
локальному компьютеру. В качестве аргументов методу передается два
обязательных параметра: букеа_диска и имя_диска. Параметр букеа_диска
определяет имя, которое получит сетевой диск при подключении к локальному
компьютеру, а имя_диска — имя самого сетевого диска. Параметр updateProfile
представляет собой булево значение, которое указывает, должно ли подключение
Глава 15. Windows Script Host 1374
диска сохранятся в профиле пользователя (по умолчанию используется значение
false). Для подключений, которые требуют аутентификации, должны указываться
параметры имяпользоеателя и пароль.
Пример
Код в листинге 15.45 реализует пример подключения сетевого диска "everyone" к
локальному компьютеру под именем "Т".
Листинг 15.45. Пример использования метода MapNetworkDrive() для
подключения сетевого диска
<job>
<script language="JScript">
// Создать объект WshNetwork.
var WshNetwork = new ActiveXObject("Wscript.Network");
// Подключить сетевой диск.
WshNetwork.MapNetworkDrive("T:", "\\some_network\everyone");
</script>
WshNetwork.RemoveNetworkDrive()
WSH 2.0+
Синтаксис
WshNetwork.RemoveNetworkDrive(u/wH_6uc/fa, bForce, bUpdateProfile)
Описание
Метод объекта RemoveNetworkDrive() используется для отключения текущего
сетевого диска от локального компьютера. Обязательный параметр, имя диска,
должен содержать строку, соответствующую локальному или удаленному имени
отключаемого диска. Параметр bForce представляет собой булево значение (по
умолчанию false), которое, если равно true, указывает на необходимость
отключения диска независимо от того, используется он или нет. Параметр
bUpdateProfile представляет собой булево значение (по умолчанию false), которое,
если равно true, указывает на то, что следует отключить диск в профиле
пользователя. Параметры bForce и bUpdateProfile являются необязательными
параметрами.
Пример
Код в листинге 15.46 реализует пример подключения сетевого диска, а затем его
отключения с помощью метода RemoveNetworkDrive.
Листинг 15.46. Пример использования метода RemoveNetworkDrive()
для отключения сетевого диска
<job>
<script language="JScript">
// Создать объект WshNetwork.
var WshNetwork = new ActiveXObject("Wscript.Network");
// Подключить сетевой диск.
WshNetwork.MapNetworkDrive("T:", "\\some_network\everyone");
// Отключить сетевой диск.
1 375 Часть III. Справочник по JavaScript
WshNetwork.RemoveNetworkDrive("T");
</script>
WshNetwork.RemovePrinterConnection()
WSH 2.0+
Синтаксис
WshNetwork.RemovePrinterConnection(npi/Hmep, bForce, bilpdateProfile)
Описание
Метод RemovePrinterConnection() используется для удаления из локального
компьютера указанного соединения принтера. Имя удаляемого принтера задается
параметром принтер. Параметр bForce представляет собой булево значение (по
умолчанию false), которое, если равно true, указывает на необходимость
отключения принтера независимо от того, используется он или нет. Параметр
bUpdateProflle представляет собой булево значение (по умолчанию false), которое,
если равно true, указывает отключить принтер в профиле пользователя. Параметры
bForce и bUpdateProflle являются необязательными параметрами.
Пример
Код в листинге 15.47 выполняет удаление принтера, подключенного к порту LPT1
локального компьютера.
Листинг 15.47. Пример удаления сетевого принтера с помощью
метода RemovePrinterConnection()
<job>
<script language="JScript">
// Создать новый объект WshNetwork.
var WshNetwork = new ActiveXObject("Wscript.Network");
// Отключить принтер, подключенный к порту LPT1
WshNetwork. RemovePrinterConnection("LPT1:");
</script>
WshNetwork.SetDefaultPrinter()
WSH 2.0+
Синтаксис
H/s/j/\/ehvor/<.setDefaultPrinter(t7MH_npt7Hmepa)
Описание
Метод setDefaultPrinter() используется для установки принтера, заданного
параметром имя_принтера, в качестве принтера, заданного по умолчанию.
Пример
В листинге 15.48 в качестве принтера, заданного по умолчанию, устанавливается
принтер "blueroom".
Глава 15. Windows Script Host 1376
Листинг 15.48. Пример использования метода setDefaultPrinter() для
установки принтера, заданного по умолчанию
<job>
<script language="JScript">
// Создать объект WshNetwork.
var Wsh Network = new ActiveXObject("Wscript.Network");
// Установить принтер, заданный по умолчанию.
WshNetwork. SetDefaultPrinter("\\domainname\blueroom");
</script>
WshNetwork.UserDomain
WSH 2.0+
Синтаксис
WshObject. UserDomain
Описание
Свойство UserDomain используется для определения доменного имени пользователя
в строковом представлении.
Пример
Код в листинге 15.49 реализует пример определения доменного имени пользователя.
Листинг 15.49. Пример использования свойства UserDomain для
определения доменного имени пользователя
<job>
<script language="JScript">
// Создать новый объект WshNetwork.
var WshNetwork = new ActiveXObject("Wscript.Network");
// Вывести на экран доменное имя.
WScript.Echo("floMeHHoe имя пользователя:" + WshNetwork.UserDomain);
</script>
WshNetwork.UserName
WSH 2.0+
Синтаксис
WshObject. UserName
Описание
Свойство UserName используется для определения имени пользователя в строковом
представлении.
Пример
Код в листинге 15.50 реализует пример использования свойства UserName для
определения имени пользователя.
1 377 Часть III. Справочник по JavaScript
Листинг 15.50. Пример использования свойства UserName для
определения имени пользователя
<job>
<script language="JScript">
// Создать объект WshNetwork.
var Wsh Network = new ActiveXObject("Wscript.Network");
// Вывести на экран имя пользователя.
WScript.EchofMMfl пользователя:" + WshNetwork.UserName);
</script>
WshRemote
WSH 5.6+
Синтаксис
WshRemote
Описание
Объект WshRemote предоставляет доступ к процессу удаленного сценария. Объект
создается с помощью метода CreateScript(). Свойства и методы объекта WshRemote
перечислены в табл. 15.7.
Таблица 15.7. Свойства и методы объекта WshRemote
Тип
Свойства
Методы
События
Элемент
Error
Status
Execute()
TerminateO
End
Error
Start
Описание
Возвращает объект WshRemoteError.
Возвращает информацию о состоянии сценария.
Запускает на выполнение удаленный сценарий.
Прекращает выполнения удаленного сценария.
Сигнализирует удаленному сценарию о прекращении
выполнения.
Сигнализирует удаленному сценарию о прекращении
выполнения при возникновении ошибки.
Сигнализирует удаленному сценарию о начале
выполнения.
Пример
Код в листинге 15.51 реализует пример создания объекта WshRemote с помощью
объекта WshController. После этого удаленный сценарий hello.wsf запускается на
выполнение с помощью метода Execute.
Примечание
Объект WshController недоступен в операционных системах Windows 9x.
Листинг 15.51. Пример использования объекта WshRemote
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
Глава 15. Windows Script Host 1378
// Запустить сценарий на выполнение.
remoteScript.Execute();
</script>
WSH 5.6+
Wsh Remote. End
Синтаксис
H/s/?f?emofe.End
Описание
Событие End сигнализирует удаленному сценарию о завершении выполнения.
Пример
Код в листинге 15.52 запускает на выполнение удаленный сценарий hello.wsf. По
завершению выполнения этого сценария на экран выводится сообщение о том, что
выполнение сценария завершено.
Листинг 15.52. Пример использования события End объекта
Wsh Remote
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить на выполнение сценарий.
remoteScript. Execute();
// При возникновении события End вывести на экран сообщение о завершении
выполнения.
if(remoteScript.End){
WScript.Echo("BbinonHeHne сценария завершено");
}
</script>
WshRemote.Error (Event)
WSH 5.6+
Синтаксис
WshObject. Error
Описание
Событие Error сигнализирует механизму сценариев о завершении выполнения
удаленного сценария вследствие возникновения ошибки.
1 379 Часть III. Справочник по JavaScript
Пример
Код в листинге 15.53 запускает на выполнение удаленный сценарий hello.wsf. При
возникновении ошибки на экран выводится сообщение о том, что выполнение
сценария завершено вследствие возникновения ошибки.
Листинг 15.53. Пример использования события Error для проверки
наличия ошибок при выполнении удаленного сценария
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
// При возникновении события Error вывести на экран сообщение об ошибке.
if(remoteScript. Error){
WScript.Echo("BbinonHeHne сценария завершилось вследствие возникновения
ошибки");
}
</script>
WshRemote.Error (Property)
WSH 5.6+
Синтаксис
WshRemote.Error
Описание
Свойство Error используется для получения информации об ошибке, которая
вызвала преждевременное прекращение выполнения удаленного сценария. Свойство
Error возвращает объект WshRemoteError.
Пример
В коде из листинга 15.54 при возникновении ошибки в удаленном сценарии функция
showErr выводит на экран описание ошибки.
Листинг 15.54. Пример использования свойства Error для вывода на
экран информации об ошибке
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
// Функция обработки ошибок в удаленном сценарии.
function showErr(){
Глава 15. Windows Script Host 1380
var myError = remoteScript.Error;
WScript.Echo("Bo3HMKna ошибка WshRemote.Error:" + myError.Description);
WScript.Quit(-i);
</script>
WshRemote.Execute()
WSH 5.6+
Синтаксис
WshRemote.ExecuteQ
Описание
Метод Execute() используется для запуска на выполнение удаленного сценария.
Этот метод отличается от метода WScript.Exec().
Пример
Код в листинге 15.55 реализует пример использования метода Execute() для запуска
удаленного сценария hello.wsf.
Листинг 15.55. Пример запуска на выполнение удаленного сценария
с помощью метода Execute
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
</script>
WshRemote.WshRemoteError
WSH 5.6+
Синтаксис
И/sftRemofe. WshRemoteError
Описание
Объект WshRemoteError является дочерним объектом для объекта WshRemote.
Поскольку непосредственный доступ к этому объекту невозможен с помощью
синтаксиса WshRemote.WshRemoteError, более подробная информация по данному
объекту приведена в описании объекта WshRemoteError.
WshRemote.Start
WSH 5.6+
1 381 Часть III. Справочник по JavaScript
Синтаксис
WshRemote.Staft
Описание
Событие Start сигнализирует механизму сценариев о том, что следует начать
выполнение удаленного сценария. Это событие возникает при вызове метода
Execute.
Пример
Код в листинге 15.56 реализует пример использования события Start для указания
момента начала выполнения сценария.
Листинг 15.56. Пример использования события Start объекта
Wsh Remote
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить на выполнение сценарий.
remoteScript. Execute();
// При возникновении события Start на экран вывести сообщение.
if(remoteScript.Start){
WScript.Echo(anyineH удаленный сценарий");
}
</script>
WshRemote.Status
WSH 5.6+
Синтаксис
l/l/s/jf?emote.Status
Описание
Свойство Status используется для получения информации о сценарии, запущенного
с помощью метода Exec. Свойство status используется только при запуске сценария
в асинхронном режиме. Свойство возвращает одно из двух значений. Если
возвращается значение WshRunning (эквивалентно значению 0), сценарий
выполняется, если возвращается значение WshFinished (эквивалентно значению 1),
сценарий завершил выполнение.
Пример
Код в листинге 15.57 реализует пример использования свойства Status для
определения того, завершилось ли выполнение сценария.
Листинг 15.57. Пример использования свойства Status для
определения состояния сценария
<job>
Глава 15. Windows Script Host 1382
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
// Определить значение свойства Status. В зависимости от полученного
//значения, вывести на экран соответствующее сообщение,
if (remoteScript.Status == 0){
\Л/Эспр1.Есг1о("Сценарий выполняется");
}
if (remoteScript.Status == 1){
WScript.Echo ("Выполнение сценария завершено");
}
</script>
WshRemote.Terminate()
WSH 5.6+
Синтаксис
H/s/?/?emofe.Terminate()
Описание
Метод Terminate() используется для завершения выполнения удаленного сценария.
Метод не возвращает значений.
Пример
В коде из листинга 15.58 метод Terminate() используется для завершения
выполнения сценария hello.wsf.
Листинг 15.58. Пример использования метода Terminate() для
завершения выполнения удаленного сценария
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf");
// Запустить сценарий на выполнение.
remoteScript. Execute();
//Завершить выполнение сценария.
remoteScript.TerminateO;
</script>
WshRemoteError
WSH 5.6+
1 383 Часть III. Справочник по JavaScript
Синтаксис
WshRemoteError
Описание
Объект WshRemoteError используется для получения информации об ошибке при
завершении выполнения удаленного сценария
возвращается свойством Error объекта
WshRemoteError перечислены в табл. 15.8.
вследствие ошибки. Этот объект
Wsh Remote. Свойства объекта
Таблица 15.8. Свойства объекта WshRemoteError
Тип
Свойства
Элемент
Character
Description
Line
Number
Source
SourceText
Описание
Символ в строке кода, который содержит ошибку.
Описание ошибки.
Строка кода, в которой произошла ошибка.
Номер ошибки.
СОМ-объект, который вызвал появление ошибки.
Строка исходного кода, которая вызвала ошибку.
Пример
Код в листинге 15.59 реализует пример создания объекта WshRemoteError с
именем myError.
Листинг 15.59. Пример создания объекта WshRemoteError
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
function showErr(){
// Создать объект WshRemoteError.
var myError = remoteScript.Error;
</script>
WshRemoteError.Character
WSH 5.6+
Синтаксис
WshRemoteError. Character
Описание
Свойство Character возвращает длинное целое число со знаком, указывающее
позицию символа в строке кода, в которой произошла ошибка.
Глава 15. Windows Script Host 1384
Пример
Код в листинге 15.60 реализует пример использования свойства Character для
определения позиции символа, в которой произошла ошибка.
Листинг 15.60. Пример использования свойства Character для
вывода на экран позиции символа строки, в которой произошла
ошибка
<job>
<script language="JScript">
// Объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий.
remoteScript. Execute();
//Функция обработки ошибок удаленного сценария. При возникновении ошибки
// на экран выводится позиция символа в строке, которая вызвала ошибку.
function showErr(){
var myError = remoteScript.Error;
WScript.Echo("YqaneHHafl ошибка в позиции:" + myError.Character);
WScript.Quit(-i);
}
</script>
WshRemoteError.Description
WSH 5.6+
Синтаксис
WshRemoteError. Description
Описание
Свойство Description возвращает строку, содержащую краткое описание возникшей
ошибки.
Пример
Код в листинге 15.61 реализует пример использования свойства Description для
вывода на экран описания ошибки.
Листинг 15.61. Пример использования свойства Description для
вывода на экран описания ошибки
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
//Функция обработки ошибок удаленного сценария. При возникновении
1 385 Часть III. Справочник по JavaScript
// ошибки на экран выводится описание ошибки,
function showErr(){
var myError = remoteScript.Error;
WScript.Echo("OnHcaHMe удаленной ошибки :" + myError.Description);
WScript.Quit(-l);
}
</script>
WshRemoteError.Line
WSH 5.6+
Синтаксис
WshRemoteError. Line
Описание
Свойство Line возвращает длинное целое число без знака, указывающее номер
строки, в которой произошла ошибка.
Пример
Код в листинге 15.62 реализует пример использования свойства Line объекта
WshRemoteError для вывода на экран номера строки кода, в которой произошла
ошибка.
Листинг 15.62. Пример использования свойства Line для вывода на
экран номера строки кода, в которой произошла ошибка
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
//Функция обработки ошибок удаленного сценария. При возникновении ошибки
// на экран выводится номер строки, в которой произошла ошибка.
function showErr(){
var myError = remoteScript.Error;
WScript-EchoCYqaneHHafl ошибка в строке:" + myError.Line);
WScript.Quit(-i);
}
</script>
WshRemoteError.Number
WSH 5.6+
Синтаксис
WshRemoteError. Number
Глава 15. Windows Script Host 1386
Описание
Свойство Number возвращает длинное целое число без знака, указывающее номер
возникшей ошибки.
Пример
Код в листинге 15.63 реализует пример использования свойства Number объекта
WshRemoteError для вывода на экран номера возникшей ошибки.
Листинг 15.63. Пример использования свойства Number для вывода
на экран номера удаленной ошибки
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий.
remoteScript. Execute();
//Функция обработки ошибок удаленного сценария. При возникновении
// ошибки на экран выводится номер возникшей ошибки.
function showErr(){
var myError = remoteScript.Error;
WScript.Echo("HoMep удаленной ошибки:" + myError.Number);
WScript.Quit(-i);
}
</script>
WshRemote Error. Source
WSH 5.6+
Синтаксис
WshRemoteError. Sou rce
Описание
Свойство Source возвращает строку, представляющую собой СОМ-объект, который
вызвал ошибку.
Пример
Код в листинге 15.64 реализует пример использования свойства Source объекта
WshRemoteError для определения СОМ-объекта, вызвавшего ошибку удаленного
сценария.
Листинг 15.64. Пример использования свойства Source объекта
WshRemoteError для определения СОМ-объекта, вызвавшего ошибку
сценария
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
1 387 Часть III. Справочник по JavaScript
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий.
remoteScript. Execute();
//Функция обработки ошибок удаленного сценария. При возникновении
// ошибки на экран выводится источник ошибки.
function showErr(){
var myError = remoteScript.Error;
WScript.Echo("yflaneHHyio ошибку вызвал объект:" + myError.Source);
WScript.Quit(-i);
}
</script>
WshRemoteError.SourceText
WSH 5.6+
Синтаксис
WshRemoteError. Sou rceText
Описание
Свойство SourceText возвращает строку, содержащую строку кода, в которой
произошла ошибка.
Пример
Код в листинге 15.65 реализует пример использования свойства SourceText объекта
WshRemoteError для вывода на экран текста строки кода, в которой произошла
ошибка.
Листинг 15.65. Пример использования свойства SourceText для
вывода на экран текста строки кода, в которой произошла ошибка
<job>
<script language="JScript">
// Создать объект WshController.
WshCtrlObj = WScript.CreateObject("WScript.Controller");
// Создать объект WshRemote.
remoteScript = WshCtrlObj.CreateScript("c:\My Documents\hello.wsf);
// Запустить сценарий на выполнение.
remoteScript. Execute();
//Функция обработки ошибок удаленного сценария. При возникновении
// ошибки на экран выводится строка кода, в которой произошла ошибка.
function showErr(){
var myError = remoteScript.Error;
WScript.Echo("Удaлeннaя ошибка возникла в строке:" + myError.SourceText);
WScript.Quit(-i);
}
</script>
WshScriptExec
WSH 5.6+
Глава 15. Windows Script Host 1388
Синтаксис
WshScriptExec
Описание
Объект WshScriptExec предназначен для определения статуса и предоставления
доступа к строкам stdln, stdOut и stdErr для объекта, возвращаемого методом
WshShell.Exec(). Свойства и методы объекта WshScriptExec перечислены в табл.
15.9.
Таблица 15.9. Свойства и методы объекта WshScriptExec
Тип
Свойства
Методы
Элемент
Status
StdErr
Stdln
StdOut
TerminateQ
Описание
Статус сценария, запущенного на выполнение с помощью
метода Exec.
Стандартный поток ошибок сценария.
Стандартный входной поток сценария.
Стандартный выходной поток сценария.
Завершает выполнение сценария, запущенного с
помощью метода Exec.
Пример
Код в листинге 15.66 реализует пример создания нового объекта WshScriptExec.
Листинг 15.66. Пример создания нового объекта WshScriptExec
<job>
<script language="JScript">
var WshShell = new ActiveXObject("WScript.Shell");
//Создать объект WshScriptExec.
WshScriptExec = WshShell.Exec("cscript c:\my documents\hello.wsf);
</script>
WshScriptExec.Status
WSH 5.6+
Синтаксис
WshScriptExec.Status
Описание
Свойство Status предоставляет доступ к данным о состоянии сценариев,
запущенных с помощью метода Exec. Свойство Status используется только для
сценариев, выполняющихся в асинхронном режиме. Свойство возвращает одно из
двух значений. Если возвращается значение WshRunning (эквивалентно значению
0), сценарий выполняется, если возвращается значение WshFinished (эквивалентно
значению 1), сценарий завершил выполнение.
Пример
Код в листинге 15.67 реализует пример использования свойства Status для
определения, завершилось ли выполнение сценария. В зависимости от
возвращаемого кода состояния, на экран выводится соответствующее сообщение.
1 389 Часть III. Справочник по JavaScript
Листинг 15.67. Пример использования свойства Status для
определения состояния сценария
<job>
<script language="JScript">
var WshShell = new ActiveXObject("WScript.Shell");
//Создать объект WshScriptExec.
WshScriptExec = WshShell.Exec("cscript c:\my documents\hello.wsf");
// Определить состояние сценария. В зависимости от возвращаемого значения,
// на экран выводится соответствующее сообщение,
if (WshScriptExec.Status == 0){
WScript.Echo("CL(eHapMi/i выполняется");
}
if (WshScriptExec.Status == 1){
WScript.Echo ("Выполнение сценария завершилось");
}
</script>
WshScriptExec.StdErr
WSH 5.6+
Синтаксис
WshScriptExec.SidErr
Описание
Свойство StdErr предоставляет доступ к выходному потоку stderr объекта Exec.
При этом не требуется, чтобы объект Exec запускал сценарий на выполнение.
Предупреждение
Доступ к свойству StdErr можно получить только при запуске в консольном режиме (с
помощью CScript.exe). Попытка его вызова в оконном режиме (с помощью
WScript.exe) приведет к ошибке.
Пример
В коде из листинга 15.68 поток ошибок с помощью свойства StdErr присваивается
переменной standardError. После этого с помощью стандартного метода write() в
стандартный поток ошибок записывается строка. Чтобы этот приведенный сценарий
работал его необходимо запускать в консольном режиме (CScript.exe). Если не
перенаправить стандартный выходящий поток ошибок, строка отобразится в
консоли.
Листинг 15.68. Пример использования свойства StdErr объекта
WshScriptExec
<job>
<script language="JScript">
var WshShell = new ActiveXObject("WScript.Shell");
//Создать объект WshScriptExec.
WshScriptExec = WshShell.Exec("cscript c:\my documents\hello.wsf");
// Присвоить стандартный поток ошибок переменной.
standardError = WshScriptExec.StdErr;
Глава 15. Windows Script Host 1390
// Записать текст в поток stdErr.
standardError.write(Ta строка текста была записана в стандартный выходной поток
ошибок");
</script>
WshScriptExec.Stdln
WSH 5.6+
Синтаксис
WshScriptExec. Std I n
Описание
Свойство Stdln предоставляет доступ к входному потоку stdin объекта Exec,
предназначенному только для чтения.
Предупреждение
Доступ к свойству Stdln можно получить только при запуске в консольном режиме (с
помощью CScript.exe). Попытка его вызова в оконном режиме (с помощью
WScript.exe) приведет к ошибке.
Пример
В коде из листинга 15.69 стандартный входящий поток с помощью свойства Stdln
присваивается переменной standardlnput. После этого пользователю предлагается
ввести текст. Текст считывается с помощью метода Read(), и первые 10 введенных
пользователем символов записываются в переменную str и выводятся на консоль.
Листинг 15.69. Пример использования свойства Stdln объекта
WshScriptExec
<job>
<script language="JScript">
var WshShell = new ActiveXObject("WScript.Shell");
//Создать объект WshScriptExec.
WshScriptExec = WshShell.Exec("cscript c:\my documents\hello.wsf");
// Присвоить стандартный входной поток переменной
standardlnput = WshScriptExec.Stdln;
WScript.Echo("Пoжaлyйcтa, введите произвольный текст:");
// Считать введенный текст в Stdln
str = standardlnput. readAO);
// Вывести на экран текст, считанный из Stdln
WScript.EchofBbi ввели:",str);
</script>
WshScriptExec.StdOut
WSH 5.6+
Синтаксис
WshScriptExec.StdOut
1 391 Часть III. Справочник по JavaScript
Описание
Свойство StdOut предоставляет доступ к выходному потоку stdin объекта Exec.
Предупреждение
Доступ к свойству StdOut можно получить только при запуске в консольном режиме (с
помощью CScript.exe). Попытка его вызова в оконном режиме (с помощью
WScript.exe) приведет к ошибке.
Пример
В коде из листинга 15.70 стандартный выходящий поток с помощью свойства
StdOut присваивается переменной standardOutput. После этого с помощью метода
write() строка передается в стандартный выходной поток. Чтобы этот сценарий был
работоспособным, его необходимо запускать в консольном режиме (с помощью
CScript.exe). Если не перенаправлять стандартный выходной поток, строка
отобразится в консоли.
Листинг 15.70. Пример использования свойства StdOut объекта
WshScriptExec
<job>
<script language="JScript">
var WshShell = new ActiveXObject("WScript.Shell");
//Создать объект WshScriptExec.
WshScriptExec = WshShell.Exec("cscript c:\my documents\hello.wsf");
// Присвоить переменной стандартный выходной поток.
standardOutput = WshScriptExec.StdOut;
// Записать текст в поток StdOut.
standardOutput.write(Ta строка была записана в стандартный выходной поток");
</script>
WshScriptExec.Terminate()
WSH 5.6+
Синтаксис
WshScriptExec.Term'mateQ
Описание
Метод Terminate() используется для прекращения выполнения процесса,
запущенного с помощью метода Exec.
Пример
Код в листинге 15.71 реализует пример завершения выполнения сценария hello.wsf с
помощью метода Terminate.
Листинг 15.71. Пример завершения выполнения сценария с
помощью метода Terminate
<job>
<script language="JScript">
var WshShell = new ActiveXObject("WScript.Shell");
//Создать объект WshScriptExec.
Глава 15. Windows Script Host 1392
aScript = WshShell.Exec("cscript c:\my documents\hello.wsf);
//Завершить выполнение сценария.
aScript.Terminate();
</script>
WshShell
WSH 2.0+
Синтаксис
WshShell
Описание
Объект WshShell используется для создания новых процессов, ярлыков и
обеспечения доступа к переменным окружения. Свойства и методы объекта
WshShell перечислены в табл. 15.10.
Таблица 15.10. Свойства и методы объекта WshShell
Тип
Свойство
Метод
Элемент
CurrentDirectory
Environment
SpecialFolders
WshShortcut
WshUrlShortcut
WshEnvironment
WshSpecialFolders
AppActivateO
CreateShortcut()
ExecO
ExpandEnvironmentStrings()
LogEvent()
Popup()
RegDelete()
RegRead()
RegWriteO
Run()
SendKeysQ
Описание
Возвращает строку, содержащую
полностью определенный путь к
рабочему каталогу.
Возвращает объект WshEnvironment.
Возвращает объект SpecialFolders.
Создает дочерний объект.
Создает дочерний объект.
Создает дочерний объект.
Создает дочерний объект.
Активизирует окно приложения.
Создает новый или открывает
существующий ярлык.
Запускает приложение в дочерней
командной оболочке.
Возвращает расширенное значение
переменной окружения.
Вносит в файл журнала запись о событии.
Выводит текст во всплывающем окне.
Удаляет из реестра ключ.
Возвращает значение ключа реестра.
Создает новый или изменяет старый ключ
реестра.
Запускает программу в новом процессе.
Посылает коды нажатых клавиш в
активное окно.
Пример
Код в листинге 15.72 приведен пример создания нового экземпляра объекта
WshShell.
1 393 Часть III. Справочник по JavaScript
Листинг 15.72. Пример использования объекта WshShell
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
</script>
WshShell.AppActivate()
WSH 2.0+
Синтаксис
l/l/sftS/7e//.AppActivate(app)
Описание
Метод AppActivate() объекта WshShell активизирует указанное окно приложения.
Имя приложения (которое может быть заголовком окна или идентификатором
приложения) задается параметром арр. Метод возвращает булево значение, которое
указывает об успешности выполнения метода.
Пример
В коде из листинга 15.73 метод AppActivate() объекта WshShell используется для
активизации окна приложения Notepad (Блокнот). В приведенном примере
предполагается, что приложение Notepad во время выполнения сценария уже
запущено.
Листинг 15.73. Пример активизации окна приложения с помощью
метода AppActivate()
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Активизировать окно Notepad.
WshShellObj.AppActivate("Notepad");
</script>
WshShell.CreateShortcutO
WSH 2.0+
Синтаксис
H/s/jS/je//.CreateShortcut(sfr)
Описание
Метод CreateShortcut() объекта WshShell используется для создания нового или
открытия существующего ярлыка. В качестве единственного аргумента методу
передается параметр str, содержащий имя ярлыка.
Глава 15. Windows Script Host 1394
Пример
В коде из листинга 15.74 метод CreateShortcut() используется для создания на
рабочем столе ярлыка Web-сайта www.bestbookbuys.com.
Листинг 15.74. Пример создания ярлыка на рабочем столе с
помощью метода CreateShortcut()
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// В качестве каталога указать рабочий стол.
myDesktop = WshShellObj.SpecialFolders("Pa6o4MM стол");
// Создать ярлык Web-сайта bestbookbuys.com.
var urIShortcut = WshShellObj.CreateShortcut(myDesktop + "Wbestbookbuys.url");
urlShortcut.TargetPath = "http://www.bestbookbuys.com";
urlShortcut.Save();
</script>
WshShell.CurrentDirectory
WSH 5.6+
Синтаксис
l/l/s/)Sfte//.CurrentDirectory
Описание
Свойство CurrentDirectory возвращает строку, содержащую полный путь к
текущему каталогу активного процесса. Это не каталог, в котором находится WSH-
сценарий, а каталог, в котором запущен активный процесс.
Пример
В коде из листинга 15.75 на экран выводится текущий каталог, из которого запущен
код примера.
Листинг 15.75. Вывод на экран текущего каталога с помощью
свойства CurrentDirectory
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Определить текущий каталог.
WScript.Echo(WshShellObj.CurrentDirectory);
</script>
WshShell.Environment
WSH 2.0+
Синтаксис
l/l/sftSfte//.Environment(sfr)
1 395 Часть III. Справочник по JavaScript
Описание
Свойство Environment содержит объект WshEnvironment, который представляет
собой коллекцию переменных окружения. В качестве необязательного аргумента
может задаваться параметр str, указывающий место расположения переменной
окружения. Если параметр str не указан, свойство Environment может возвращать
различные типы в зависимости от операционной системы. Для Windows 95/98/Ме
параметр str может содержать только значение "PROCESS", в Windows NT/2000
допускается использовать значение "System".
Пример
В коде из листинга 15.76 свойство Environment используется для определения
значения переменной окружения CLASSPATH и вывода его на экран.
Листинг 15.76. Пример использования свойства Environment для
определения значения переменной окружения CLASSPATH
<job>
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать объект WshEnvironment.
var WshEnv = WshShellObj. Environment("PROCESS");
// Определить значение переменой окружения classpath.
WScript.Echo(WshEnv("CLASSPATH"));
</script>
WshShell.Exec()
WSH 5.6+
Синтаксис
WshShell. Exec(cmd)
Описание
Метод Ехес() объекта WshShell используется для запуска приложения в дочерней
командной оболочке. В качестве единственного аргумента метод использует
параметр стй, который содержит команду запуска приложения. Это должна быть та
же строка, что при запуске приложения из командной строки. Метод возвращает
объект WshScriptExec, предоставляющий доступ к потокам Stdln, StdOut и StdErr.
Пример
Код в листинге 15.77 реализует пример использования метода Ехес() для запуска в
дочерней командной оболочке сценария hello.wsf.
Листинг 15.77. Пример использования метода Ехес() объекта
WshShell
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Запустить в дочерней командной оболочке сценарий hello.wsf.
Глава 15. Windows Script Host 1396
WshShellObj.Exec("cscript hello.wsf);
</script>
WshShell.ExpandEnvironmentStrings()
WSH 2.0+
Синтаксис
l/l/sftSfte//.ExpandEnvironmentStrings(var)
Описание
Метод ExpandEnvironmentStrings() используется для определения расширенного
значения переменной окружения. В качестве единственного аргумента метод
принимает параметр var, значение которого должно быть заключено между
символами %.
Пример
Код в листинге 15.78 реализует пример использования метода
ExpandEnvironmentStringsO для определения расширенного значения переменной
окружения PATH.
Листинг 15.78. Пример использования метода
ExpandEnvironmentStringsO
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Вывести на экран расширенное значение переменной окружения PATH.
WScript.Echo( WshShellObj.ExpandEnvironmentStrings("%path%"));
</script>
WshShell.LogEvent()
WSH 2.0+
Синтаксис
WshShell.1.одЕчеп1(тип_события, logStr, [strTargef\)
Описание
Метод LogEvent() используется для внесения в файл журнала новой записи. При
вызове метода необходимо указать параметры тип_события и logStr. Параметр
logStr содержит строковое значение, указывающее текст записи файла журнала.
Возможные значения типов событий перечислены в табл. 15.11. Кроме обязательных
параметров, метод может принимать необязательный параметр strTarget, который
содержит строковое значение, указывающее имя компьютерной системы, где будет
храниться событие. Этот необязательный параметр действителен только для
операционных систем Windows NT/2000.
1 397 Часть III. Справочник по JavaScript
Таблица 15.11. Типы событий
Значение
0
1
2
4
8
16
Описание
SUCCESS
ERROR
WARNING
INFORMATION
AUDIT SUCCESS
AUDIT FAILURE
Пример
Код в листинге 15.79 реализует пример использования метода LogEvent() объекта
WshShell для записи в журнал успешного события. При выполнении приведенный
код в операционных системах Windows 9.x записывает в файл WSH.log успешное
событие. Кроме того, в Windows NT/2000 соответствующие сообщения
записываются в журнал событий Windows NT.
Листинг 15.79. Запись события в журнал с помощью метода
LogEvent()
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Записать успешное событие.
myFolder = WshShellObj.LogEvent@, "Приложение запущено успешно");
</script>
WshShell.Popup()
WSH 2.0+
Синтаксис
WshShell.Рорир(текст, [задержка], [заголовок], [тип])
Описание
Метод Рорир() используется для вывода текста во всплывающем диалоговом окне.
Параметр текст должен содержать текст, который будет выводиться в диалоговом
окне. Необязательный параметр задержка указывает продолжительность (в
секундах) показа окна. Необязательный параметр заголовок содержит заголовок
диалогового окна. Необязательный числовой параметр тип указывает тип кнопок и
пиктограмм диалогового окна. Возможные типы кнопок перечислены в табл. 15.12, а
возможные типы пиктограмм - В табл. 15.13. Значения можно использовать в
различных комбинациях.
Таблица 15.12. Типы кнопок диалогового окна
Значение
0
1
2
Описание
Кнопка ОК.
Кнопки ОК и Cancel.
Кнопки Abort, Retry и Ignore.
Глава 15. Windows Script Host 1398
3
4
5
Кнопки Yes, No и Cancel.
Кнопки Yes и No.
Кнопки Retry и Cancel.
Таблица 15.13. Типы пиктограмм диалогового окна
Значение
16
32
64
128
Описание
Пиктограмма "Знак стоп".
Пиктограмма "Вопросительный знак".
Пиктограмма "Восклицательный знак".
Пиктограмма "Информация".
Пример
Код в листинге 15.80 реализует пример создания диалогового окна с произвольным
текстом, заголовком окна и заданной комбинацией кнопок, которое выводится на
экран с задержкой в 15 секунд.
Листинг 15.80. Пример использования метода Рорир() объекта
WshShell
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать диалоговое окно.
WshShellObj.Рорир("Произвольный текст", 15, "Мое диалоговое окно", 3+32);
</script>
WshShell.RegDeleteQ
WSH 2.0+
Синтаксис
WshShell. Reg Ое\е1е(ключ)
Описание
Метод RegDelete() используется для удаления из реестра Windows ключа или одного
из его значений. В качестве аргумента метод использует обязательный параметр
ключ. Для задания имени ключа после параметра ключ указывается обратная косая
черта. Не используйте обратную косую черту для указания значения. Допускается
использовать сокращенные версии корневых ключей. Перечень этих сокращенных
версий приведен В табл. 15.14.
Таблица 15.14. Сокращения корневых ключей
Значение
иски
HKLM
HKCR
HKEY USERS
HKEY CURRENT CONFIG
Описание
HKEY CURRENT USER
HKEY LOCAL MACHINE
HKEY CLASSES ROOT
HKEY USERS
HKEY CURRENT CONFIG
1 399 Часть III. Справочник по JavaScript
Предупреждение
Внесение изменений в реестр Windows может привести к повреждению операционной
системы. Поэтому при работе с реестром следует соблюдать особую осторожность.
Перед внесением каких бы то ни было изменений рекомендуется создать резервную
копию реестра.
Пример
Код в листинге 15.81 реализует пример использования метода RegDelete() для
удаления из реестра записи, соответствующей Netscape.
Листинг 15.81. Пример использования метода RegDelete()
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Удалить значение ключа Netscape.
WshShellObj. RegDelete("HKLM\\Software\\Netscape\\");
</script>
WshShell.RegRead()
WSH 2.0+
Синтаксис
WshShell. RegRead(/OT/04)
Описание
Метод RegRead() используется для считывания из реестра значения ключа или
имени значения. Параметр ключ указывает ключ, который необходимо считать. Для
задания имени ключа используется параметр ключ с конечной обратной косой
чертой. Если обратная косая черта отсутствует, будет использоваться имя значения.
Пример
Код в листинге 15.82 реализует пример использования метода RegRead() для
определения значения указанного ключа реестра.
Листинг 15.82. Пример использования метода RegRead() для
считывания ключа реестра
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Считать значение ключа Netscape.
var value = WshShellObj.RegRead("HKLM\\Software\\Netscape\\Netscape
6\\CurrentVersion");
WScript.Echo(value);
</script>
Глава 15. Windows Script Host 1400
WshShelLRegWriteQ
WSH 2.0+
Синтаксис
WshShell'.RegWrite(/OT/04, значение, [тип])
Описание
Метод RegWrite() используется для создания нового ключа, добавления нового
имени значения в существующий ключ или изменения существующего имени
значения. Строковой параметр, ключ, указывает имя добавляемого, создаваемого
или изменяемого ключа, значения или значение. Параметр значение указывает имя
вновь создаваемого ключа, имя добавляемого значения или новое значение, которое
будет присвоено существующему ключу. Необязательный строковой параметр тип
указывает тип данных значения. Возможные типы значений перечислены в табл.
15.15.
Таблица 15.15. Возможные типы значений ключей
Значение
REG SZ
REG DWORD
REG BINARY
REG EXPAND SZ
Описание
Строка
Число
Двоичное значение
Расширяемая строка
Предупреждение
Внесение изменений в реестр Windows может привести к повреждению операционной
системы. Поэтому при работе с реестром следует быть очень осторожным. Перед
внесением изменений рекомендуется создать резервную копию реестра.
Пример
Код в листинге 15.83 реализует пример записи в реестр нового значения
Листинг 15.83. Пример использования метода RegWrite()
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Записать новое значение.
WshShellObj.RegWrite("HKLM\\Software\\Netscape\\", 23, "REG_SZ");
</script>
WshShell.Run()
WSH 2.0+
Синтаксис
WshShell.Run(cmd, [windowStyle], [waitOnReturn])
1401 Часть III. Справочник по JavaScript
Описание
Метод Run() запускает указанную программу в новом процессе. Запускаемая
программа задается параметром and. Кроме того, допускается использовать два
необязательных параметра. Параметр windowStyle представляет собой целое число,
которое определяет вид окна программы. Возможные стили окон перечислены в
табл. 15.16. Параметр waitOnReturn представляет собой булево значение, которое
указывает должен ли сценарий ждать перед выполнением следующий команды.
Таблица 15.16. Возможные стили окон
Стиль
0
1
2
3
4
5
6
7
8
9
10
Описание
Скрывает окно и активизирует другое окно.
Активизирует и выводит окно на экран.
Активизирует окно и выводит его в свернутом виде.
Активизирует окно и выводит его в развернутом виде.
Выводит окно на экран в виде, в котором это окно использовалось
последний раз.
Активизирует окно и выводит его на экран с текущими размерами и в
текущем положении.
Свертывает окно и активизирует следующее окно верхнего уровня.
Выводит окно на экран в свернутом виде.
Выводит окно на экран в текущем виде.
Восстанавливает исходные размеры и положение окна.
Устанавливает стиль окна на основании запустившей приложение
программы.
Пример
Код в листинге 15.84 реализует пример использования метода Run() для запуска
приложения Notepad в свернутом виде.
Листинг 15.84. Пример использования метода Run() объекта
WshShell
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Запустить Notepad в свернутом виде.
WshShellObj. Runfnotepad", 7)
</script>
WshShell.SendKeysQ
WSH 2.0+
Синтаксис
WshShell. Send Keys(ZceySfr)
Описание
Метод SendKeys() используется для передачи активному окну одного или
нескольких нажатий клавиш. Передаваемые нажатия клавиш задаются параметром
Глава 15. Windows Script Host 1402
keyStr. Это метод, как правило, используется для приложений, которые не имеют
интерфейса. При передаче комбинации нажатий клавиш их необходимо
сгруппировать в одной строке. Например, для передачи комбинации нажатий
клавиш х, у и z используется строка xyz.
Существуют отдельные специальные клавиши, которые требуют использования
определенного синтаксиса. При передаче символов +, Л, %, ~, [ и ] они заключаются
в скобки ({ }). Другие коды клавиш, которые не выводят символы, также требуют
использования специального синтаксиса. Подобные коды клавиш перечислены в
табл. 15.17.
Таблица 15.17. Специальные коды клавиш.
Клавиша
BACKSPACE
BREAK
CAPS LOCK
DEL или DELETE
Стрелка вниз
END
ENTER
ESC
HELP
HOME
INS или INSERT
Стрелка влево
NUM LOCK
PAGE DOWN
PAGE UP
PRINT SCREEN
Стрелка вправо
SCROLL LOCK
TAB
Стрелка вверх
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
F13
F14
F15
F16
Синтаксис
{BACKSPACE}, {BS} или {BKSP}
{BREAK}
{CAPSLOCK}
{DELETE} или {DEL}
{DOWN}
{END}
{ENTER}
{ESC}
{HELP}
{HOME}
{INSERT} или {INS}
{LEFT}
{NUMLOCK}
{PGDN}
{PGUP}
{PRTSC}
{RIGHT}
{SCROLLLOCK}
{TAB}
{UP}
{F1}
{F2}
{F3}
{F4}
{F5}
{F6}
{F7}
{F8}
{F9}
{F10}
{F11}
{F12}
{F13}
{F14}
{F15}
{F16}
1403 Часть III. Справочник по JavaScript
Пример
В коде из листинга 15.85 создается объект WshShell. Затем для запуска приложения
Notepad вызывается метод Run(). После запуска приложения оно активизируется с
помощью метода AppActivate(). После активизации приложению передается набор
кодов клавиш.
Листинг 15.85. Пример передачи кодов клавиш приложению Notepad
с помощью метода SendKeys()
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Запустить приложение Notepad.
WshShellObj.Run("Notepad");
// Активизировать приложение Notepad.
WshShellObj.AppActivate("Notepad");
// Передать коды клавиш приложению Notepad.
WshShellObj.SendKeys("MHe нравится JavaScript!");
</script>
WshShell.SpecialFolders
WSH 2.0+
Синтаксис
l/l/sftSfte//.SpecialFolders(namca)
Описание
Свойство SpecialFolders возвращает коллекцию специальных каталогов. В
операционной системе Windows специальные каталоги — это предопределенные
каталоги, являющиеся частью операционной системы. Примерами специальных
каталогов являются каталоги "Рабочий стол", "Избранное" и "Главное меню".
Пример
Код в листинге 15.86 создает объект WshShell. Затем для создания объекта
WshSpecialFolders используется свойство SpecialFolders.
Листинг 15.86. Пример использования свойства SpecialFolders
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать объект SpecialFolders.
myFolder = WshShellObj.SpecialFolders("Pa6o4nii стол");
</script>
WshShell.WshShortcut
WSH 2.0+
Глава 15. Windows Script Host 1404
Синтаксис
WsftSfte//.WshShortcut
Описание
Объект WshShortcut является дочерним объектом объекта WshShell. Поскольку
непосредственный доступ к этому объекту невозможен с помощью синтаксиса
WshShell. WshShortcut, более подробная информация по данному объекту
приведена в описании объекта WshShortcut.
WshShell.WshUrlShortcut
WSH 2.0+
Синтаксис
l/l/s/iS/ie//.WshllrlShortcut
Описание
Объект WshUrlShortcut является дочерним объектом объекта WshShell. Поскольку
непосредственный доступ к этому объекту невозможен с помощью синтаксиса
WshShell.WshUrlShortcut, более подробная информация по данному объекту
приведена в описании объекта WshUrlShortcut.
WshShell.WshEnvironment
WSH 2.0+
Синтаксис
WshShell. WshEnvironment
Описание
Объект WshEnvironment является дочерним объектом объекта WshShell. Поскольку
непосредственный доступ к этому объекту невозможен с помощью синтаксиса
WshShell.WshEnvironment, более подробная информация по данному объекту
приведена в описании объекта WshEnvironment.
WshShell.WshSpecialFolders
WSH 2.0+
Синтаксис
WshShell. WshSpecialFolders
Описание
Объект WshSpecialFolders является дочерним объектом объекта WshShell.
Поскольку непосредственный доступ к этому объекту невозможен с помощью
синтаксиса WshShell.WshSpecialFolders, более подробная информация по данному
объекту приведена в описании объекта WshSpecialFolders.
WshShell.WshScriptExec
WSH 5.6+
1405 Часть III. Справочник по JavaScript
Синтаксис
l/l/sftSfte//.WshScriptExec
Описание
Объект WshScriptExec является дочерним объектом объекта WshShell. Поскольку
непосредственный доступ к этому объекту невозможен с помощью синтаксиса
WshShell.WshScriptExec, более подробная информация по данному объекту
приведена в описании объекта WshScriptExec.
WshShortcut
WSH 2.0+
Синтаксис
WshShortcut
Описание
Объект WshShortcut используется для создания ярлыка объекта. Экземпляры этого
объекта создаются с помощью метода createShortcut объекта WshShell. После
создания объект WshShortcut хранится в памяти и записывается на диск только при
вызове метода Save. Свойства и методы объекта WshShortcut перечислены в табл.
15.18.
Таблица 15.18. Свойства и методы объекта WshShortcut
Тип
Свойство
Метод
Элемент
Arguments
Description
FullName
Hotkey
IconLocation
TargetPath
Window/Style
WorkingDirectory
Save()
Описание
Возвращает указатель на коллекцию
WshArguments.
Содержит описание ярлыка.
Возвращает полный путь к исполняемому файлу или
ярлыку.
"Горячая" клавиша ярлыка.
Расположение пиктограммы ярлыка.
Устанавливает путь к исполняемому файлу ярлыка.
Назначает ярлыку стиль окна.
Назначает ярлыку рабочий каталог.
Записывает ярлык на диск.
Пример
Код в листинге 15.87 реализует пример создания в памяти экземпляра объекта
WshShortcut, назначения ему пути исполняемого файла и записи ярлыка на диск.
Листинг 15.87. Пример создания объекта WshShortcut
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\gopack.url");
urIShortcut.TargetPath = "http://www.gopack.com";
urIShortcut.Save();
Глава 15. Windows Script Host 1406
</script>
WshShortcut.Arguments
WSH 2.0+
Синтаксис
И/sftSftortcuf.Arguments
Описание
Свойство Arguments предоставляет доступ к коллекции аргументов с помощью
объекта WshArguments.
Пример
Код в листинге 15.88 создает новый объект WshShortcut и устанавливает путь,
переданный сценарию в качестве аргумента. Так, если сценарий Hsting88.wsf
запускается в следующей командной строке:
cscript Iisting88.wsf http://www.w3c.org
Приведенный ниже сценарий создает ярлык для указанного URL-адреса и выводит
путь к объекту, для которого создается ярлык.
Листинг 15.88. Пример использования свойства Arguments объекта
WshShortcut
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// С помощью свойства Arguments создать объект WshArguments.
var myArgs = WScript.Arguments;
// Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\myShortcut.url");
urIShortcut.TargetPath = myArgs.item@);
WScript.ЕсГю("Ярлык создан для объекта:" + urIShortcut.TargetPath);
</script>
WshShortcut. Description
WSH 2.0+
Синтаксис
l/l/s/iS/iortcitf.Description
Описание
Свойство Description возвращает строку, содержащую описание ярлыка.
Пример
Код в листинге 15.89 реализует пример создания ярлыка и установки его описания.
При запуске сценария описание ярлыка выводится на экран.
1407 Часть III. Справочник по JavaScript
Листинг 15.89. Пример использования свойства Description
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var myShortcut = WshShellObj.CreateShortcut("c:\\gopack.lnk");
//Установить свойство Description.
myShortcut.Description = "NC State Wolfpack";
WScript.Echo("OnncaHne ярлыка: " + myShortcut.Description);
</script>
WshShortcut.FullName
WSH 2.0+
Синтаксис
l/l/s/jS/Jorfcuf.FullName
Описание
Свойство FullName объекта WshShortcut возвращает строку, содержащую
полностью определенный путь к ярлыку. Это свойство доступно только для чтения.
Пример
Код в листинге 15.90 реализует пример создания ярлыка и вывода на экран его
полностью определенного пути с помощью свойства FullName.
Листинг 15.90. Пример использования свойства FullName объекта
WshShortcut
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var myShortcut = WshShellObj.CreateShortcut("c:\\gopack.lnk");
// Вывести на экран значение свойства FullName.
WScript.Echofr^Hbm путь к ярлыку:" + myShortcut.FullName);
</script>
WshShortcut. Hotkey
WSH 2.0+
Синтаксис
WshShortcut.Hotkey = hotKeyStr
Описание
Свойство HotKey используется для назначения ярлыку комбинации клавиш или
определения назначенной ярлыку комбинации клавиш. Параметр hotKeyStr
Глава 15. Windows Script Host 1408
содержит назначаемую комбинацию клавиш. Комбинация клавиш имеет вид
[keyModifierJKeyName. Возможные значения модификатора keyModifiers: Alt+,
Ctrl+, Shift+, Ext+ (Ext+ означает "клавиша Extended", соответствующая новому типу
клавиши переключения регистра, которая появиться в будущем). Возможные
значения имени клавиши KeyName: все буквенно-цифровые клавиши и
функциональные клавиши F1-F12.
Пример
Код в листинге 15.91 реализует пример создания ярлыка и назначения ярлыку
горячей клавиши.
Листинг 15.91. Пример присвоения объекту WshShortcut горячей
клавиши
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var myShortcut = WshShellObj.CreateShortcut("c:\\gopack.Ink");
myShortcut.HotKey = "Alt+Shift+p";
// Вывести горячую клавишу на экран.
WScript.Echo(Topfl4afl клавиша:" + myShortcut.Hotkey);
</script>
WshShortcut.lconLocation
WSH 2.0+
Синтаксис
И/sftSftorfcuf. IconLocation
И/sftSftorfcuMconLocation = iconLocationStr
Описание
Свойство IconLocation назначает ярлыку пиктограмму или возвращает назначенную
ярлыку пиктограмму. При использовании свойства для назначения пиктограммы
необходимо указывать параметр iconLocationStr. Параметр iconLocationStr должен
содержать строку полностью определенного пути к файлу пиктограммы и индекс
пиктограммы в коллекции пиктограмм файла.
Пример
Код в листинге 15.92 реализует пример создания ярлыка и назначения ему
пиктограммы.
Листинг 15.92. Пример использования свойства IconLocation
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var myShortcut = WshShellObj.CreateShortcut("c:\\gopack.lnk");
1409 Часть III. Справочник по JavaScript
myShortcut.lconLocation = "iexplorer.exe,0";
// Вывести на экран значение свойства IconLocation ярлыка.
WScript.Echo("Pacnono>KeHHe пиктограммы:" + myShortcut.lconLocation);
</script>
WshShortcut.Save()
WSH 2.0+
Синтаксис
WshShortcut.SaveQ
Описание
Метод Save() объекта WshShortcut используется для записи ярлыка на диск. Без
использования этого метода ярлык хранится только в памяти.
Пример
Код в листинге 15.93 реализует пример создания ярлыка на Web-сайт gopack.com и
записи его на диск с помощью метода Save().
Листинг 15.93. Запись ярлыка на диск с помощью метода Save()
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\gopack.uri");
urIShortcut. TargetPath = "http://www.gopack.com";
// Записать ярлык на диск.
urIShortcut.SaveO;
</script>
WshShortcut. TargetPath
WSH 2.0+
Синтаксис
WshShortcut. TargetPath
Описание
Свойство TargetPath используется для назначения пути к исполняемому файлу, на
который указывает ярлык. Это свойство может использоваться для задания пути к
исполняемому файлу ярлыка.
Пример
Код в листинге 15.94 реализует пример использования свойства TargetPath для
установки URL для объекта urIShortcut. Затем с помощью того же свойства
TargetPath путь отображается на экране.
Глава 15. Windows Script Host 1410
Листинг 15.94. Пример использования свойства TargetPath
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\gopack.url");
// Установить свойство TargetPath.
urIShortcut.TargetPath = "http://www.gopack.com";
// Вывести на экран значение свойства TargetPath объекта urIShortcut.
WScript.EchofnyTb к объекту ярлыка:" + urIShortcut.TargetPath);
</script>
WshShortcut.WindowStyle
WSH 2.0+
Синтаксис
l/l/sftSftorfcuf. WindowStyle
l/l/sftSftorfcuf. WindowStyle = styleValue
Описание
Свойство WindowStyle определяет стиль окна ярлыка. Это свойство можно
использовать для задания стиля окна. При задании стиля необходимо указывать
параметр styleValue. Возможные значения параметра styleValue перечислены в табл.
15.19.
Таблица 15.19. Стили окон
Значение
1
3
7
Описание
Активизирует и выводит окно на экран.
Активизирует окно и выводит его в развернутом виде.
Свертывает окно и активизирует следующее окно верхнего уровня.
Пример
Код в листинге 15.95 реализует пример создания нового ярлыка и установки стиля
его окна.
Листинг 15.95. Пример использования свойства WindowStyle
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создание ярлыка.
var myShortcut = WshShellObj.CreateShortcut("c:\\gopack.Ink");
// Установить стиль окна.
myShortcut.WindowStyle= 3;
</script>
1411 Часть III. Справочник по JavaScript
WshShortcut. WorkingDirectory
WSH 2.0+
Синтаксис
WshShortcut. WorkingDirectory
Описание
Свойство WorkingDirectory определяет рабочий каталог ярлыка. Это свойство
можно использовать для задания рабочего каталога ярлыка.
Пример
Код в листинге 15.96 реализует пример создания ярлыка и задания его рабочего
каталога с помощью свойства WorkingDirectory.
Листинг 15.96. Пример использования свойства WorkingDirectory
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var myShortcut = WshShellObj.CreateShortcut("c:\\gopack.lnk");
// Установить свойство WorkingDirectory.
myShortcut.WorkingDirectory = "c:\\My Documents";
// Вывести на экран значение свойства WorkingDirectory.
WScript.Echo("Pa6o4HH каталог:" + myShortcut.WorkingDirectory);
</script>
WshSpecialFolders
WSH 2.0+
Синтаксис
WshSpecialFolders
Описание
Объект WshSpecialFolders возвращает коллекцию специальных каталогов. Эта
коллекция используется для определения путей к таким специальным каталогам, как
Рабочий стол, Главное меню и Мои документы. Типы специальных каталогов и
соответствующие им операционные системы перечислены в табл. 15.20. Свойства и
методы объекта WshSpecialFolders перечислены в табл. 15.21.
Таблица 15.20. Типы специальных каталогов
Имя каталога
AIIUsersDesktop
AIIUsersStartMenu
AllUsersPrograms
AllUsersStartup
Рабочий стол (Desktop)
Избранное (Favorites)
Версия Windows
Windows 2000
Windows 2000
Windows 2000
Windows 2000
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Глава 15. Windows Script Host 1412
Fonts
Мои документы (My Documents)
NetHood
PrintHood
Programs
Recent
SendTo
Главное меню (Start Menu)
StartupB
Templates
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Windows 95/98, Windows 2000
Windows 2000
Windows 2000
Таблица 15.21. Свойства и методы объекта WshSpecialFolders
Тип
Свойство
Метод
Элемент
Item
length
CountQ
Описание
Выбирает из коллекции определенный элемент.
Возвращает количество элементов в коллекции (то же, что
и метод CountO).
Возвращает количество элементов в коллекции (то же, что
и свойство length).
Пример
Код в листинге 15.97 реализует пример создания нового объекта WshSpecialFolders
для специального каталога Рабочий стол.
Листинг 15.97. Пример создания объекта WshSpecialFolders
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать объект SpecialFolders.
myFolder = WshShellObj.8реаа1РоИегэ("Рабочий стол");
</script>
WshSpecialFolders.Count
WSH 2.0+
Синтаксис
WshSpecialFolders.Count
Описание
Метод Count возвращает количество нумерованных элементов коллекции
WshSpecialFolders. Этот метод выполняет ту же функцию, что и свойство length.
Пример
Код в листинге 15.98 реализует пример создания нового объекта WshSpecialFolders
и вывода на экран количества элементов в коллекции специальных каталогов.
Листинг 15.98. Пример использования метода Count объекта
WshSpecialFolders
<job>
1413 Часть III. Справочник по JavaScript
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать объект SpecialFolders.
WshSpecialFolders = WshShellObj.SpecialFolders("Pa6o4HU стол");
// Вывести на экран количество элементов в коллекции
// специальных каталогов с помощью метода Count.
WScript.Echo("Konn4ecTBO элементов в коллекции специальных каталогов:" +
WshSpecialFolders.Count);
</script>
WshSpecialFolders.Item
WSH 2.0+
Синтаксис
WshSpecialFolders. \1ет(индекс)
Описание
Свойство Item извлекает из коллекции WshSpecialFolders определенный элемент.
Элемент, который необходимо извлечь, задается параметром индекс.
Пример
В коде из листинга 15.99 свойство Item используется для выполнения цикла по
коллекции специальных каталогов и выборки элементов коллекции.
Листинг 15.99. Пример использования свойства Item объекта
WshSpecialFolders
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать объект SpecialFolders.
WshSpecialFolders = WshShellObj.SpecialFolders("Pa6o4nn стол");
for(i=0; i< WshSpecialFolders.length; i+
// Вывести на экран все элементы коллекции специальных каталогов.
WScript.Echo(i + "= " + WshSpecialFolders.Item(i));
}
</script>
WshSpecialFolders.length
WSH 2.0+
Синтаксис
WshSpecialFolders. length
Глава 15. Windows Script Host 1414
Описание
Свойство length возвращает количество нумерованных элементов коллекции
WshSpecialFolders. Этот метод выполняет ту же функцию, что и метод Count().
Пример
Код в листинге 15.100 реализует пример создания нового объекта
WshSpecialFolders и вывода на экран количества элементов в коллекции
специальных каталогов с помощью свойства length.
Листинг 15.100. Пример использования свойства length объекта
WshSpecialFolders
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать объект SpecialFolders.
WshSpecialFolders = WshShellObj.SpecialFolders("Pa6o4Mii стол");
// Вывести на экран количество элементов в коллекции
// специальных каталогов с помощью свойства length.
WScript.Echo("Konn4ecTBo элементов в коллекции специальных каталогов:" +
WshSpecialFolders.length );
</script>
WshUnnamed
WSH 5.6+
Синтаксис
WshUnnamed
Описание
Объект WshUnnamed предоставляет доступ к доступной только для чтения
коллекции неименованных аргументов. Объект WshUnnamed возвращается
свойством Unnamed объекта WshArguments. Именованным параметром считается
параметр, состоящий из пары ключ/значение, в которой ключи и значение
разделяются двоеточием (:), а перед ключом указывается косая черта (/). Свойства и
методы объекта WshUnnamed перечислены в табл. 15.22.
Таблица 15.22. Свойства и методы объекта WshUnnamed
Тип
Свойство
Метод
Элемент
Item
length
CountQ
Описание
Предоставляет доступ к элементам коллекции WshUnnamed.
Возвращает количество параметров командной строки.
Возвращает количество ключей объекта WshUnnamed.
Пример
Код в листинге 15.101 реализует пример создания объекта WshArgument с именем
WshArgsObj. Затем для вывода на экран неименованных параметров (если такие
параметры существуют) используется свойство Unnamed. Например, предположим,
что сценарий HstinglOl.wsf запущен на выполнение с помощью следующей строки:
1415 Часть III. Справочник по JavaScript
cscript listing101.wsf /со1ог:зеленый синий красный
В результате выполнения сценария на экран будет выведены неименованные
параметры синий и красный.
Листинг 15.101. Вывод на экран неименованных аргументов
<job>
<script language="JScript">
// Получить коллекцию всех аргументов.
WshArgsObj = WScript.Arguments;
// Получить коллекцию неименованных аргументов.
WshllnnamedArgsObj = WshArgsObj.Unnamed
if(WshUnnamedArgsObj. length)
{
WScript.Echo("HenMeHOBaHHbie аргументы:");
// Выполнить цикл по всем элементам коллекции неименованных аргументов.
for(i=0; i< WshUnnamedArgsObj.Length; i
{
WScript.Echo(i + "= " + WshUnnamedArgsObj. Item(i));
}
}
else
{
WScript.EchofHeHMeHOBaHHbie аргументы отсутствуют");
}
</script>
WshUnnamed.Count()
WSH 5.6+
Синтаксис
Wsh Unnamed. Cou nt()
Описание
Метод Count() возвращает количество объектов WshUnnamed в коллекции.
Пример
Код в листинге 15.102 создает объект WshArgument с именем WshArgsObj. Затем
для вывода на экран неименованных параметров (если такие параметры существуют)
используется свойство Unnamed. Например, предположим, что сценарий
HstinglO2.wsf запущен с помощью следующей строки:
cscript listing 1O2.wsf/со!ог:зеленый синий красный желтый
В результате выполнения приведенного ниже сценария на экран будет выведено
количество неименованных параметров, 3.
Листинг 15.102. Определение количества именованных параметров
с помощью метода Count()
<job>
<script language="JScript">
Глава 15. Windows Script Host 1416
// Получить коллекцию всех аргументов.
WshArgsObj = WScript.Arguments;
// Получить коллекцию неименованных аргументов.
WshllnnamedArgsObj = WshArgsObj.Unnamed
if(WshUnnamedArgsObj. length)
{
// Вывести на экран количество неименованных аргументов.
WScript.Echo("KonH4ecTBO элементов в коллекции WshUnnamed:" +
WshllnnamedArgsObj. Count);
}
else
{
WScript.EchofHenMeHOBaHHbie аргументы отсутствуют");
}
</script>
WshUnnamed.ltem
WSH 5.6+
Синтаксис
WshUnnamed. Item
Описание
Свойство Item предоставляет доступ ко всем элементам коллекции WshUnnamed.
Пример
В коде из листинга 15.103 создает объект WshArgument с именем WshArgsObj.
Затем для вывода на экран неименованных параметров (если такие параметры
существуют) используется свойство Unnamed. Например, предположим, что
сценарий HstinglO3.wsf запущен с помощью следующей строки:
cscript listing 1O3.wsf/со1ог:зеленый синий красный желтый оранжевый
В результате выполнения приведенного ниже сценария на экран будет выведены все
неименованные аргументы.
Листинг 15.103. Вывод на экран всех неименованных аргументов
<job>
<script language="JScript">
// Получить коллекцию всех аргументов.
WshArgsObj = WScript.Arguments;
// Получить коллекцию неименованных аргументов.
WshllnnamedArgsObj = WshArgsObj.Unnamed
if(WshUnnamedArgsObj. length)
{
WScript.Echo("HenMeHOBaHHbie аргументы:");
// Цикл по всем элементам коллекции неименованных параметров.
for(i=0; i< WshUnnamedArgsObj.length;
{
WScript.Echo(i + "= " + WshUnnamedArgsObj. Item(i));
1417 Часть III. Справочник по JavaScript
</script>
Wsh Unnamed, length
WSH 5.6+
Синтаксис
l/l/sftL/nnamed.length
Описание
Свойство length возвращает количество аргументов, переданных сценарию в
командной строке. Это свойство выполняет функцию, аналогичную функции метода
Count.
Пример
Код в листинге 15.104 создает объект Wsh Argument с именем WshArgsObj. Затем
для вывода на экран неименованных параметров (если такие параметры существуют)
используется свойство Unnamed. Например, предположим, что сценарий
HstinglO4.wsf запущен с помощью следующей строки:
cscript listing 1O4.wsf/со1ог:зеленый синий красный желтый
В результате выполнения приведенного ниже сценария на экран будет выведено
количество неименованных параметров, 3.
Листинг 15.104. Пример использования свойства length
<job>
<script language="JScript">
// Получить коллекцию всех аргументов.
WshArgsObj = WScript.Arguments;
// Получить коллекцию неименованных аргументов.
WshUnnamedArgsObj = WshArgsObj.Unnamed
// Определить количество элементов в коллекции Wshllnnamed.
if(WshUnnamedArgsObj. length)
{
// Для вывода на экран количества неименованных параметров использовать
свойство length.
WScript.Echo("KonH4ecTBo неименованных параметров:" +
WshUnnamedArgsObj.length);
}
else
{
WScript.Echo("HeMMeHOBaHHbie параметры отсутствуют");
}
</script>
WshUrlShortcut
WSH 2.0+
Глава 15. Windows Script Host 1418
Синтаксис
WshUrlShortcut
Описание
Объект WshUrlShortcut создает ярлык для ресурса Internet. Экземпляры объекта
WshUrlShortcut создаются с помощью метода createShortcut объекта WshShell.
После создания объект WshUrlShortcut хранится в памяти и записывается на диск
только при вызове метода Save. Свойства и методы объекта WshUrlShortcut
перечислены в табл. 15.23.
Таблица 15.23. Свойства и методы объекта WshUrlShortcut
Тип
Свойство
Метод
Элемент
FullName
TargetPath
Save()
Описание
Возвращает полный путь к исполняемому файлу или
ярлыку.
Устанавливает путь к исполняемому файлу ярлыка.
Записывает ярлык на диск.
Пример
Код в листинге 15.105 реализует пример создания нового объекта WshUrlShortcut.
В памяти создается ярлык на Web-сайт www.borders.com.
Листинг 15.105. Пример создания нового объекта WshUrlShortcut
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
//Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\borders.url");
urIShortcut.TargetPath = "http://www.borders.com";
</script>
WshUrlShortcut.FullName
WSH 2.0+
Синтаксис
И/sftlWSftoAfcuf.FullName
Описание
Свойство FullName возвращает строку, содержащую полностью определенный путь
к объекту WshUrlShortcut.
Пример
Код в листинге 15.106 реализует пример вывода на экран значения свойства
FullName.
Листинг 15.106. Пример использования свойства FullName
<job>
<script language="JScript">
1419 Часть III. Справочник по JavaScript
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\borders.url");
urIShortcut.TargetPath = "http://www.borders.com";
// Вывести на экран значение свойства FullName объекта WshUrlShortcut.
WScript.Echo(Ha4eHne свойства FullName:" + urIShortcut.FullName);
</script>
WshUrlShortcut.SaveO
WSH 2.0+
Синтаксис
WshUrlShortcut.SaveO
Описание
Метод Save() объекта WshUrlShortcut используется для записи ярлыка на диск. Без
использования этого метода ярлык хранится только в памяти.
Пример
Код в листинге 15.107 реализует пример использования метода Save() для записи
ярлыка на диск
Листинг 15.107. Пример использования метода Save() объекта
WshUrlShortcut
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\bmw.url");
urIShortcut.TargetPath = "http://www.bmwusa.com";
// Записать ярлык на диск.
urlShortcut.Save();
</script>
WshUrlShortcutTargetPath
WSH 2.0+
Синтаксис
WshUrlShortcut.TargetPath
Описание
Свойство TargetPath используется для назначения пути к исполняемому файлу, на
который указывает ярлык.
Глава 15. Windows Script Host 1420
Пример
Код в листинге 15.108 реализует пример создания объекта WshUrlShortcut и
установку свойства TargetPath.
Листинг 15.108. Пример использования свойства TargetPath
<job>
<script language="JScript">
// Создать объект WshShell.
WshShellObj = WScript.CreateObject("WScript.Shell");
// Создать ярлык.
var urIShortcut = WshShellObj.CreateShortcut("c:\\vatech.url");
urIShortcut.TargetPath = "http://www.vt.edu";
// Вывести на экран значения свойства TargetPath.
WScript.Echo(Ha4eHHfl свойства TargetPath:" + urIShortcut.TargetPath);
</script>
Pure
JavaScript
Second Edition
R. Allen Wyke
Jason D. Gilliam
Charlton Ting
Sean Michaels
sAms
201 West 103rd Steet, Indianapolis, Indiana 46290
JavaScript
Справочник
Второе издание
Аллен Вайк и др.
|: торгово-нздательскии дом
DiaSoft
ББК 32.973.2
УДК 681.3.06@75)
В 85
Вайк Аллен н др.
В 85 JavaScript. Справочник: Пер. с англ./Аллен Вайк и др, - СПб: ООО
«ДиаСофтЮП», 2002. - 896 с.
ISBN 5-93772-031-8
Книга JavaScript. Справочник представляет собой исключительно полный справочник по
объектам, методам, атрибутам, высокоуровневым функциям языка написания сценариев
JavaScript версий от 1.1 и старше, причем как для клиентской, так и для серверной сторон.
Приводятся все особенности различных реализаций JavaScript (в том числе и небезызвестная
реализация JScript от компании Microsoft). Удобство использования, быстрота нахождения тре-
требуемой информации, изобилие исчерпывающих примеров, адекватность, точность и полнота —
вот лишь немногие достоинства этого поистине бесценного справочного пособия.
Коды всех примеров, рассмотренных в книге, проверены на практике как авторами ори-
оригинального издания, так и командой по подготовке русскоязычной редакции книги.
Книга будет полезной (впрочем, даже и незаменимой) как для начинающих разработчиков
Web-приложений, так и для профессионалов, опыт работы которых восходит к тем временам,
когда Web был еще неизвестен, a Internet был доступен исключительно для "посвященных".
ББК 32.973.2
Authorized translation from the English language edition, entitled Pure JavaScript, 2nd Edition by Gilliam, Jason
d., Wyke, R. Allen; Ting, Charlton; Michaels, Sean, published hy Pearson Education, Inc. publishing as Sams,
Copyright © 2002
Alt rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic
or mechanical, including photocopying, recording or by any information storage retrieval system, without permission
from Pearson Education, Tnc.
Russian language edition published by DiaSoft Publishing
Copyright © 2002
Лицензия предоставлена издательством Sams.
Все права зарезервировали, включая право Иа полное или частичное воспроизведение в какой бы то ни было
форме.
ISBN 5-93772-031-S (рус.) © Перевод на русский язык. ООО «ДиаСофтЮП», 2002
ISBN 0-672-32141-6 (англ.) © Sams, 2002
© Оформление. ООО «ДиаСофтЮП», 2002
Гигиеническое заключение № 77.99.6.953.П.438.2.99
от 04.02.1999
От авторов скана.
Выражаем особую благодарность комраду Drow за
то, что отсканировал и разместил в Internet материал
данной книги.
Мы полностью переделали и переоформили скан
Drow, для более удобного и приятного использования.
Надеемся, что наше творение принесёт вам пользу.
И если вам понравилась эта книга и у вас есть
возможность, приобретите бумажный вариант©
Newclear и GorDAn
Научное издание
Вайк Аллеи и др.
JavaScript Справочник
Заведующий редакцией С.Н.Козлов
Научные редакторы Ю.КАртеменко, А.П. Сергеев
Верстка Т.КАртеменко
Главный дизайнер О. А. Шадрин
Н/К
«ДиаСофтЮП», 196105, Санкт-Петербург, пр. Ю.Гагарина, д. 1, ком. 108.
Лицензии №000328 от 9 декабря 1999 г.
А*Н0 в набор 10.04.2002. Подписано в печать 23.05.2002. Формат 70x100/16.
УМага типографская. Гарнитура Тайме. Печать офсетная. Печ.л. 56.
Тираж 3000 экз. Заказ № 733
Отпечатано с готовых диаяозитивов
в ФГУП ордена Трудового Красного Знамени «Техническая книга»
Министерства Российской Федерации по делам печати,
телерадиовещания и средств массовых коммуникаций
198005, Санкт-Петербург, Измайловский пр., 29.