Как инициировать script.onerror в Internet Explorer?

onerror страница на MSDN указывает, что onerror обработчик может быть присоединен к элементу сценария и что это "Стреляет, когда ошибка происходит во время загрузки объекта"..

В целях модульных тестов я пытаюсь заставить этот onerror обработчик стрелять, но не мог найти подходящий пример.

Следующий код инициировал ошибку в Firefox, но никакое предупреждение не отображено в Internet Explorer


Кто-либо знает значение для script.src, который запустил бы обработчик, присоединенный к script.onerror?

5
задан Eric Bréchemier 8 January 2010 в 13:34
поделиться

2 ответа

[

]Я нашел это []похороненное в документации 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';
]
8
ответ дан 14 December 2019 в 04:38
поделиться

Просто сделав немного чтения на этом, похоже, что онратор также может быть прикреплен к окну объекта. См.:

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:

Result

0
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: