Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибки в JavaScript и предотвращение вывода

8
08 августа 2011 года
mfender
3.5K / / 15.06.2005
Возьмём конкретную хрестоматийную ситуацию:

 
Код:
addHandler(document, "click", function() {
    document.getElementById("popupmenu_block").style.display = "none";
});


Всё замечательно, но вот если пресловутого div#popupmenu_block в документе нечаяно нет по каким-то причинам (например, сроду не нужен был, а скрипт всё же подключен), в консоли непременно вывалится error
 
Код:
Ошибка: document.getElementById("popupmenu_block") is null


В PHP я подавил бы эту беду «собачкой» (@) и всё.
А есть-ли что-то подобное в JavaScript?
13
08 августа 2011 года
RussianSpy
3.0K / / 04.07.2006
Можно перед присвоением проверять наличие объекта. Так вот сходу за минуту что пришло в голову
 
Код:
var o=document.getElementById("popupmenu_block");
if(o) o.style.display = "none";
277
08 августа 2011 года
arrjj
1.7K / / 26.01.2011
 
Код:
function handleError()
{
return true;
}
window.onerror = handleError;

(Не работает в половине браузеров)
Ну и try/catch
274
08 августа 2011 года
Lone Wolf
1.3K / / 26.11.2006
RussianSpy дело говорит.
а сравнение с ПХП не правильно, так как ЖС гененрит именно ошибку, а не ворнинг, выдачу которых фильтрует @
т.е. если бы было
 
Код:
addHandler(document, "click", function() {
    document.getElementById("popupmenu_block").style.display = "none";
        /*some other important stuff*/
});

то этот stuff не выполнился бы.
23K
08 августа 2011 года
rafaelkyrdan
123 / / 03.05.2011
А чем плоха конструкция ?

try
{
...
}
catch(e)
{
...
}
8
09 августа 2011 года
mfender
3.5K / / 15.06.2005
Вобщем-то, по RussianSpy'ю требуемое налицо - ошибку в консоль не выкидывает. Хотя, у меня в голове не укладывается, по какой логике это происходит: ведь изначально #popupmenu_block всё равно ищется и не находится, посему какой-то warning таки должен иметь место быть. Но ответа на поставленный вопрос нет: чем просто предотвратить вывод ошибок в куда-либо?

P.S. Чёрт, этот JavaScript такой странный… Могли бы уж творцы за столько-то лет подшлифовать его как-то, напичкать традиционным для всех функционалом. Например ту же сортировку чисел методом .sort() сделать по-человечески как у всех.
13
09 августа 2011 года
RussianSpy
3.0K / / 04.07.2006
Ну а что тут странного? Происходит запрос к встроенной функции getElementById, которая если не нашла в дереве DOM такого объекта возвращает null. Следующее за этим условие проверяет результат поиска объекта - если возвращен null - условие не выполняется, если возвращен объект - выполняется. JavaScript так себя странно порой ведет, потому что иногда свойства объектов пересчитываются (а порой и создаются) в момент обращения к ним. Просто дело привычки.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог