Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Браузер не сообщает об ошибке (https://javascript.ru/forum/misc/25493-brauzer-ne-soobshhaet-ob-oshibke.html)

khusamov 07.02.2012 12:09

Браузер не сообщает об ошибке
 
Здравствуйте!

У меня почему-то не выскакивает сообщение об ошибке.

В коде:
getWallTexture: function(name) {
	$.each(self.option("walltextures"), function(i, texture) {
		if (texture.name == name) result = texture;
	});
	return result;
}

Перед 2-й строкой не хватает строки:
var self = this;

И по идее должна быть ошибка:
Вызов функции option у неопреденного объекта self

Но ошибка не выскакивает.

Подскажите, кто знает, почему браузер не сообщает об ошибке?

В консоли пусто. На этом месте выполнение программы завершается, но сообщений никаких не выдается.

Octane 07.02.2012 12:14

https://developer.mozilla.org/en/DOM/window.self

khusamov 07.02.2012 13:00

Вот оказывается где собака зарыта! Спасибо)

Осталось выяснить почему на этом self завершается выполнение программы.

khusamov 07.02.2012 14:05

С переменной self было понятно. А вот что происходит с моей тогда переменной?
Теперь проблема на строке, где первый раз встречается tabname, которая не была определена до этого момента.
Но она уж точно моя собственная)


updateControl_WardrobeBodyParams_MaterialBody: function(data) {
	. . .
	self.ribbon.addGroup(tabname, "WardrobeBody_MaterialBody", "Материал корпуса");
	self.ribbon.addControl(tabname, "WardrobeBody_MaterialBody", params);
},


Опять, на 3 строке выполнение кода останавливается и никаких сообщений об ошибке.

khusamov 07.02.2012 14:06

Я поставил строку
console.log(tabname);

перед 3-й строкой. И тоже ничего не выводится. Ни ошибки, ни undefined, и завершается выполнение кода.

Octane 07.02.2012 14:09

А в чем вы ошибки смотрите? Вообще там должно появится "ReferenceError: tabname is not defined"

khusamov 07.02.2012 14:17

Я смотрю в браузерах Chrome и в Opera (в их консолях и встроенных средствах отладки).

Цитата:

Вообще там должно появится "ReferenceError: tabname is not defined"
Собственно у меня проблема в том, что такие ошибки перестали выводиться. А без них отлаживать код стало гораздо сложнее. Ощущение, что-то где-то глобальную ошибку допустил.

poorking 07.02.2012 14:21

Может у вас в "инструментах разработчка" не та вкладка открыта? Убедитесь что console или на настройки вывода в консоль посмотрите

и попробуйте

window.onerror = function () {
    alert(arguments);
}


Если не срабатывает, то, настройте правильно дебаггер или переустановите или вирусы проверьте, что может быть-то?

Octane 07.02.2012 14:22

Может в try-catch завернуто?

khusamov 07.02.2012 14:28

Вот кусочек кода с ошибкой.


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-й строке останавливается, а ошибку не выдает. А должен.

То есть, где-то далеко отсюда я что-то такое страшное написал. Но вот что?

khusamov 07.02.2012 14:31

Цитата:

Может в try-catch завернуто?
Я уже все эти конструкции отключил. Так как они вообще мешают отладке. Разве что в production версии можно оставить.

Цитата:

Может у вас в "инструментах разработчка" не та вкладка открыта?
У меня открыта в хроме вкладка Console. А в опере вкладка Ошибки. И я специально даже вот что вписал:

console.log("undefined");
console.log(tralala);


Первая строка отработала. В консоли появилось сообщение. А вторая молчит и на ней завершается выполнение.

poorking 07.02.2012 14:31

Ну попробуйте сами в консоли бросьте исключение, что будет? попробуйте код заверните в try, будет ли catch

poorking 07.02.2012 14:33

Цитата:

Сообщение от khusamov
Первая строка отработала. В консоли появилось сообщение. А вторая молчит и на ней завершается выполнение.

Ну тогда странно, а попробуйте другой браузер-другой дебаггер, FF+FB например

khusamov 07.02.2012 14:44

Да, буду пробовать в общем. Спасибо!
Чуть позже отпишусь, если появятся новые детали этого дела или все-таки найду источник проблемы.

khusamov 08.02.2012 09:46

у меня регистрируется функция window.MyFlashOnReady(), которую вызывает некая флешка, когда она готова к работе. И вот именно после вызова этой функции начинается такая бодяга, которую я выше описал.

То есть если я убираю эту функцию, то все работает как обычно.

Может флешка как-то влиять на работу JavaScript?

khusamov 08.02.2012 09:58

Ну тогда странно, а попробуйте другой браузер-другой дебаггер, FF+FB например


во всех броузерах аналогичная ситуация.

khusamov 08.02.2012 10:03

Цитата:

попробуйте код заверните в try, будет ли catch
Я завернул в try. Получилось вот что:

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.

И что это может быть такое?

poorking 08.02.2012 10:09

Ну так наверно проблема во флэшке, в чем же еще, раз после нее такое

khusamov 08.02.2012 12:59

кстати, а не может это быть багом ExternalInterface?

khusamov 08.02.2012 18:56

В общем выяснил. После первого вызова JS-функции изнутри флешки при помощи ExternalInterface все ошибки маскируются и в консоли не показываются. Печально.

Можно отлавливать их отдельно через try конечно. Но вывод уже будет не через консоль, ибо все методы вывода в консоль заблокированы. То есть выводить придется либо алертом либо где-то на странице в специальном месте.

khusamov 09.02.2012 17:09

Нашел не очень хорошее решение, так как оно не учитывает причину проблемы.

Продолжение темы тут (так как исходная тема с ней не совсем совпадает):
http://javascript.ru/forum/showthrea...175#post156175


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