Браузер не сообщает об ошибке
Здравствуйте!
У меня почему-то не выскакивает сообщение об ошибке. В коде: 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, время: 03:31. |