onerror страница на MSDN указывает, что onerror обработчик может быть присоединен к элементу сценария и что это "Стреляет, когда ошибка происходит во время загрузки объекта"..
В целях модульных тестов я пытаюсь заставить этот onerror обработчик стрелять, но не мог найти подходящий пример.
Следующий код инициировал ошибку в Firefox, но никакое предупреждение не отображено в Internet Explorer
Кто-либо знает значение для script.src, который запустил бы обработчик, присоединенный к script.onerror?
]Я нашел это []похороненное в документации MSDN[]:[
] [] [] []Обратите внимание, что в документации по ошибке сказано, что это работает и для элементов; ошибка будет исправлена в документации Семинара для финального релиза Internet Explorer 5 в марте. [
] [
]Следующее, что я подумал, может помочь - это событие onreadystatechange:[
] [<script src="http://www.google.com/NOTFOUND.js" onreadystatechange="alert(this.readyState)">
]
[]Это событие запускается для меня дважды, один раз с "загрузкой" и снова с "загруженным", действителен ли скрипт или нет. В другой документации, которую я нашел, сказано, что иногда оно запускает полное событие, и не совсем понятно, когда оно должно запускаться. Так что, похоже, что это не сработает.[
] []Так что я думаю, что вы остались с хакерским решением проверки, что переменная, которую сценарий должен объявить, действительно существует. В HTML:[
] [<script src="http://yourdomain.com/declare_foo.js"></script>
<script>if (typeof foo == "undefined") {alert ('error loading script');}</script>
]
[]А потом, конечно же, в declare_foo.js, у вас будет[
] [var foo = 'Script loaded successfully';
] Просто сделав немного чтения на этом, похоже, что онратор также может быть прикреплен к окну объекта. См.:
http://www.javascriptkit.com/javatutors/error.shtml
Согласно этой странице, вы можете передать аргументы MSG, URL и линенатера:
window.onerror=function(msg, url, linenumber){
alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber)
return true
}
Не уверены в поддержке браузера для этого , но спасибо за то, что привлечь его к моему вниманию!
Обновление: не делал ничего в Safari 4 (кроме регистрации ошибки в Firebug в соответствии с обычными), но показывает оповещение в Firefox 3.6 Beta 5. Испытание по ошибкам http: // www .javascriptkit.com / javatutors / errortest2.htm
Обновление 2: Сделано тест со следующим:
index.html:
<html>
<head>
<script type="text/javascript">
window.onerror=function(msg, url, linenumber){
alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber)
return true
}
</script>
<script type="text/javascript" src="js.js"></script>
</head>
<body>
</body>
</html>
js.js: (глупое имя, я знаю!)
document.write('hi there'
Результат в FF 3.6 бета 5: