Браузер не сообщает об ошибке
Здравствуйте!
У меня почему-то не выскакивает сообщение об ошибке. В коде:
getWallTexture: function(name) {
$.each(self.option("walltextures"), function(i, texture) {
if (texture.name == name) result = texture;
});
return result;
}
Перед 2-й строкой не хватает строки: var self = this; И по идее должна быть ошибка: Вызов функции option у неопреденного объекта self Но ошибка не выскакивает. Подскажите, кто знает, почему браузер не сообщает об ошибке? В консоли пусто. На этом месте выполнение программы завершается, но сообщений никаких не выдается. |
|
Вот оказывается где собака зарыта! Спасибо)
Осталось выяснить почему на этом self завершается выполнение программы. |
С переменной self было понятно. А вот что происходит с моей тогда переменной?
Теперь проблема на строке, где первый раз встречается tabname, которая не была определена до этого момента. Но она уж точно моя собственная)
updateControl_WardrobeBodyParams_MaterialBody: function(data) {
. . .
self.ribbon.addGroup(tabname, "WardrobeBody_MaterialBody", "Материал корпуса");
self.ribbon.addControl(tabname, "WardrobeBody_MaterialBody", params);
},
Опять, на 3 строке выполнение кода останавливается и никаких сообщений об ошибке. |
Я поставил строку
console.log(tabname); перед 3-й строкой. И тоже ничего не выводится. Ни ошибки, ни undefined, и завершается выполнение кода. |
А в чем вы ошибки смотрите? Вообще там должно появится "ReferenceError: tabname is not defined"
|
Я смотрю в браузерах Chrome и в Opera (в их консолях и встроенных средствах отладки).
Цитата:
|
Может у вас в "инструментах разработчка" не та вкладка открыта? Убедитесь что console или на настройки вывода в консоль посмотрите
и попробуйте
window.onerror = function () {
alert(arguments);
}
Если не срабатывает, то, настройте правильно дебаггер или переустановите или вирусы проверьте, что может быть-то? |
Может в try-catch завернуто?
|
Вот кусочек кода с ошибкой.
var params = { dsp: {
title: "ДСП",
images: {}
}};
$.each(data, function(id, item) {
params.images[id] = {
title: item.title,
src: item.url
};
});
По идее на 7-й строке должна выскакивать ошибка, так как массива params.images не существует и обращение params.images[id] = ... недопустимо. То есть там, допущена ошибка, надо написать params.dsp.images[id] = И вот броузер, на 7-й строке останавливается, а ошибку не выдает. А должен. То есть, где-то далеко отсюда я что-то такое страшное написал. Но вот что? |
Цитата:
Цитата:
console.log("undefined");
console.log(tralala);
Первая строка отработала. В консоли появилось сообщение. А вторая молчит и на ней завершается выполнение. |
Ну попробуйте сами в консоли бросьте исключение, что будет? попробуйте код заверните в try, будет ли catch
|
Цитата:
|
Да, буду пробовать в общем. Спасибо!
Чуть позже отпишусь, если появятся новые детали этого дела или все-таки найду источник проблемы. |
у меня регистрируется функция window.MyFlashOnReady(), которую вызывает некая флешка, когда она готова к работе. И вот именно после вызова этой функции начинается такая бодяга, которую я выше описал.
То есть если я убираю эту функцию, то все работает как обычно. Может флешка как-то влиять на работу JavaScript? |
Ну тогда странно, а попробуйте другой браузер-другой дебаггер, FF+FB например во всех броузерах аналогичная ситуация. |
Цитата:
try {
console.log("undefined1");
console.log(tralala);
console.log("undefined2");
} catch(e) {
alert(e.message);
}
Алерт-окошко выскакивает. Сообщает что траляля не определен. То есть это сработало. Но в консоли высвечивается только undefined1. Текст undefined2 уже не высвечивается. И текст об ошибке тоже не высвечивается. Теперь убираю и оставляю это:
console.log("undefined1");
console.log(tralala);
console.log("undefined2");
Высвечивается только undefined1. И что это может быть такое? |
Ну так наверно проблема во флэшке, в чем же еще, раз после нее такое
|
кстати, а не может это быть багом ExternalInterface?
|
В общем выяснил. После первого вызова JS-функции изнутри флешки при помощи ExternalInterface все ошибки маскируются и в консоли не показываются. Печально.
Можно отлавливать их отдельно через try конечно. Но вывод уже будет не через консоль, ибо все методы вывода в консоль заблокированы. То есть выводить придется либо алертом либо где-то на странице в специальном месте. |
Нашел не очень хорошее решение, так как оно не учитывает причину проблемы.
Продолжение темы тут (так как исходная тема с ней не совсем совпадает): http://javascript.ru/forum/showthrea...175#post156175 |
| Часовой пояс GMT +3, время: 00:23. |