Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Идея сайта... Стоит двигацца дальше?! (https://javascript.ru/forum/project/3686-ideya-sajjta-stoit-dvigacca-dalshe.html)

Kolyaj 06.10.2009 15:04

Вот я повесил обработчик события на document. Внутри обработчика ошибка, но я о ней не узнаю, т.к. она подавляется.

B~Vladi 06.10.2009 15:07

Такой пример:
Event.Add(ele,'click',caller);
function caller(){
error();
}
function error(){
document.createElement();
}

Даже если исключение происходит не в обработчике - оно ловится в try и добавляется в errors. Т.е. ошибку мы поймаем в любом случае.
Цитата:

Сообщение от Kolyaj
т.к. она подавляется.

Она не подавляется... интерпретатор сам останавливает выполнение функции... А узнать об ошибке можно из errors.

x-yuri 06.10.2009 15:09

а как ты узнаешь, что ошибка попала в errors? setTimeout или событие?

B~Vladi 06.10.2009 15:13

Цитата:

Сообщение от x-yuri
а как ты узнаешь, что ошибка попала в errors? setTimeout или событие?

Это можно узнать из следующего обработчика из списка, еси оно вызывается, а так же из всплывающих событий, т.е. объект event там тот же (event.errors).
Добавил run в код библиотеки, чтобы можно было потестить на форуме.

e1f 06.10.2009 15:14

x-yuri,
Да, хорошо бы API вида
Event.Add(ele, type, {
    callback: fnc,
    onerror: function() {
        //do something...
    }
});

B~Vladi,
а если нет уже ни всплытия, ни другого обработчика?
Event.Add(document, 'click', function(){}) //это первый и последний бинд клика на документ, и в нем мб ошибка

B~Vladi 06.10.2009 15:16

Цитата:

Сообщение от e1f
Да, хорошо бы API вида

Аха, это мысль!
Именно такого вида?!
А если в onerror ошибка?:D

e1f 06.10.2009 15:19

Цитата:

Сообщение от B~Vladi (Сообщение 31880)
А если в onerror ошибка?:D

А если в коде самого фреймворка ошибка? ;)
Частично может помочь window.onerror

B~Vladi 06.10.2009 15:26

Цитата:

Сообщение от e1f
А если в коде самого фреймворка ошибка?

jQuery и тот нередко падает от кривых параметров;)

e1f 06.10.2009 15:34

B~Vladi,
бывает, чего греха таить :)

B~Vladi 06.10.2009 15:49

Добавил предложенное API. Теперь можно передавать обработчики как простой функцией, так и:
{handler:fnc,onerror:fnc}

Если же onerror небыло передано и возникла ошибка, она добавится в массив errors объекта event. Так пойдёт?!
При удалении тоже можно передавать как объект, так и функцию:)

Давайте ещё предложения!:)


Часовой пояс GMT +3, время: 09:57.