Шрифт:
<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;