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

<b>  &lt;button onclick=&quot;okay()&quot;&gt;Okay&lt;/button&gt; &lt;!— Устанавливает возвращаемое --&gt;</b>

<b>                                         &lt;!-- значение и закрывает диалог —&gt;</b>

<b>  &lt;button onclick=&quot;cancel()&quot;&gt;Cancel&lt;/button&gt; &lt;!-- Закрывает диалог, --&gt;</b>

<b>                                             &lt;!— не возвращая ничего —&gt;</b>

<b>&lt;/div&gt;</b>

<b>&lt;script&gt;</b>

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

<b>  var args = dialogArguments;</b>

<b>  var text = &quot;&lt;legend&gt;&quot; + args[0] + &quot;&lt;/legend&gt;&quot;;</b>

<b>  for(var і = 1; і &lt; args.length; i++)</b>

<b>    text += &quot;&lt;label&gt;&quot; + args[i] + </b>
<b>&quot;:</b>
<b>&lt;input id='f&quot; + і + &quot;' &gt;&lt;/label&gt;&lt;br&gt;&quot;;</b>

<b>  document.getElementById(&quot;fields&quot;).innerHTML = text:</b>

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

<b>  function cancel() { window. close(); }</b>

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

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

<b>  function okay() {</b>

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

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

<b>      window.returnValue[i-1] = document.getElementById(&quot;f&quot; + і).value;</b>

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

<b>  }</b>

<b>&lt;/script&gt;</b>

<b>&lt;/form&gt;</b>

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

Свойство

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

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

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

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

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

Обработчик

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

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

<b>window.опеrror = function(msg, url, line) {</b>

<b>  if (опеrror.num++ &lt; опеrror.max) {</b>

<b>    alert(&quot;ОШИБКА: &quot; + msg + &quot;\n&quot; + url + + line):</b>

<b>    return true;</b>

<b>  }</b>

<b>}</b>

<b>опеrror.max = 3;</b>

<b>опеrror.num = 0;</b>

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

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

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

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

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