Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #231 (permalink)  
Старый 06.10.2009, 15:04
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вот я повесил обработчик события на document. Внутри обработчика ошибка, но я о ней не узнаю, т.к. она подавляется.
Ответить с цитированием
  #232 (permalink)  
Старый 06.10.2009, 15:07
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

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

Даже если исключение происходит не в обработчике - оно ловится в try и добавляется в errors. Т.е. ошибку мы поймаем в любом случае.
Сообщение от Kolyaj
т.к. она подавляется.
Она не подавляется... интерпретатор сам останавливает выполнение функции... А узнать об ошибке можно из errors.
Ответить с цитированием
  #233 (permalink)  
Старый 06.10.2009, 15:09
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а как ты узнаешь, что ошибка попала в errors? setTimeout или событие?
Ответить с цитированием
  #234 (permalink)  
Старый 06.10.2009, 15:13
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
а как ты узнаешь, что ошибка попала в errors? setTimeout или событие?
Это можно узнать из следующего обработчика из списка, еси оно вызывается, а так же из всплывающих событий, т.е. объект event там тот же (event.errors).
Добавил run в код библиотеки, чтобы можно было потестить на форуме.
Ответить с цитированием
  #235 (permalink)  
Старый 06.10.2009, 15:14
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

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

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

Последний раз редактировалось e1f, 06.10.2009 в 15:16.
Ответить с цитированием
  #236 (permalink)  
Старый 06.10.2009, 15:16
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от e1f
Да, хорошо бы API вида
Аха, это мысль!
Именно такого вида?!
А если в onerror ошибка?
Ответить с цитированием
  #237 (permalink)  
Старый 06.10.2009, 15:19
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от B~Vladi Посмотреть сообщение
А если в onerror ошибка?
А если в коде самого фреймворка ошибка?
Частично может помочь window.onerror
Ответить с цитированием
  #238 (permalink)  
Старый 06.10.2009, 15:26
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от e1f
А если в коде самого фреймворка ошибка?
jQuery и тот нередко падает от кривых параметров
Ответить с цитированием
  #239 (permalink)  
Старый 06.10.2009, 15:34
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

B~Vladi,
бывает, чего греха таить
Ответить с цитированием
  #240 (permalink)  
Старый 06.10.2009, 15:49
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

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

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

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

Последний раз редактировалось B~Vladi, 06.10.2009 в 16:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск