Чтение онлайн

ЖАНРЫ

JavaScript. Подробное руководство, 6-е издание
Шрифт:

– ->

<form>

<fieldset id="fields"></fieldset> <!-- Тело, заполняемое сценарием ниже -->

<div style="text-align:center"> <!-- Кнопки закрытия диалога -->

<button onclick="okay">Okay</button> <!— Устанавливает возвращаемое -->

<!-- значение и закрывает диалог —>

<button onclick="cancel">Cancel</button> <!--
Закрывает диалог, -->

<!— не возвращая ничего —>

</div>

<script>

// Создает разметку HTML тела диалога и отображает ее в элементе fieldset

var args = dialogArguments;

var text = "<legend>" + args[0] + "</legend>";

for(var і = 1; і < args.length; i++)

text += "<label>" + args[i] +
":
<input id='f" + і + "' ></label><br>";

document.getElementById("fields").innerHTML = text:

// Закрывает диалог без установки возвращаемого значения

function cancel { window. close; }

// Читает значения полей ввода и устанавливает возвращаемое значение,

// затем закрывает диалог

function okay {

window.returnValue = []; // Возвращаемый массив

for(var і = 1; і < args.length; і++) // Значения элементов из полей ввода

window.returnValue[i-1] = document.getElementById("f" + і).value;

window.close; // Закрыть диалог. Это заставит showModalDialog вернуть управление.

}

</script>

</form>

14.6. Обработка ошибок

Свойство

onerror
объекта
Window
– это обработчик событий, который вызывается во всех случаях, когда необработанное исключение достигло вершины стека вызовов и когда броузер готов отобразить сообщение об ошибке в консоли JavaScript. Если присвоить этому свойству функцию, функция будет вызываться всякий раз, когда в окне будет возникать ошибка выполнения программного кода JavaScript: присваиваемая функция станет обработчиком ошибок для окна.

Исторически сложилось так, что обработчику события

опеrror
объекта
Window
передается три строковых аргумента, а не единственный объект события, как в других обработчиках. (Другие объекты в клиентском JavaScript
также имеют обработчики
onerror
, обрабатывающие различные ошибочные ситуации, но все они являются обычными обработчиками событий, которым передается единственный объект события.) Первый аргумент обработчика
window.опеrror
– это сообщение, описывающее произошедшую ошибку. Второй аргумент - это строка, содержащая URL-адрес документа с JavaScript-кодом, приведшим к ошибке. Третий аргумент - это номер строки в документе, где произошла ошибка.

Помимо этих трех аргументов важную роль играет значение, возвращаемое обработчиком

опеrror
. Если обработчик
опеrror
возвращает
true
, это говорит броузеру о том, что ошибка обработана и никаких дальнейших действий не требуется; другими словами, броузер не должен выводить собственное сообщение об ошибке. К сожалению, по историческим причинам в Firefox обработчик ошибок должен возвращать true, чтобы сообщить о том, что ошибка обработана.

Обработчик

оnеrror
является пережитком первых лет развития JavaScript, когда в базовом языке отсутствовала инструкция
try/catch
обработки исключений. В современном программном коде этот обработчик используется редко. Однако на время разработки вы можете определить свой обработчик ошибок, как показано ниже, который будет уведомлять вас о всех происходящих ошибках:

// Вывести сообщение об ошибке в виде диалога, но не более 3 раз

window.опеrror = function(msg, url, line) {

if (опеrror.num++ < опеrror.max) {

alert("ОШИБКА: " + msg + "\n" + url + + line):

return true;

}

}

опеrror.max = 3;

опеrror.num = 0;

14.7. Элементы документа как свойства окна

Если для именования элемента в HTML-документе используется атрибут

id
и если объект
Window
еще не имеет свойства, имя которого совпадает со значением этого атрибута, объект Window получает неперечислимое свойство с именем, соответствующим значению атрибута
id
, значением которого становится объект
HTMLElement
, представляющий этот элемент документа.

Как вы уже знаете, объект

Window
играет роль глобального объекта, находящегося на вершине цепочки областей видимости в клиентском JavaScript. Таким образом, вышесказанное означает, что атрибуты
id
в HTML-документах становятся глобальными переменными, доступными сценариям. Если, например, документ включает элемент
<button id='okay”/>,
на него можно сослаться с помощью глобальной переменной
okay
.

Поделиться с друзьями: