Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по отладке. Как отловить событие? (https://javascript.ru/forum/misc/30220-vopros-po-otladke-kak-otlovit-sobytie.html)

MakTpaxep 28.07.2012 02:38

Вопрос по отладке. Как отловить событие?
 
Мне тут на скелет надо вёрстку натягивать, а с js какие-то замуты) Подскажите чем отловить события - я хочу чтобы мне ту часть кода нашло, которая выполняется при наведении курсора например. Если атрибут onMouseOver не выставлен, то становится проблемно шариться по всем подключенным скриптам и искать обработчки события. В лисе установил firebug - потыкался, потыкался, нашёл как запускать сценарий сначала, а то что мне нужно не нашёл.
Подскажите, пожалуйста, может ли firebug мне помочь или что-то другое поставить?

Dim@ 28.07.2012 10:27

MakTpaxep,
:blink: события отлавливаются обработчиками к примеру:
document.onkeydown = function (){//обработчик события keydown
 alert("Вы нажали на клавишу");
}

Aetae 28.07.2012 10:57

Я думаю ему наобоорот надо найти навешаные события.)
Простейший ванриант тупо переопределелить метод addEventListener.

bes 28.07.2012 13:55

Если все события отслеживать через body, то найдёте
посмотрите эту тему
http://javascript.ru/forum/misc/2994...tml#post189927

vadim5june 28.07.2012 14:02

Цитата:

Сообщение от bes (Сообщение 192367)
Если все события отслеживать через body, то найдёте

не все
вполне возможно на каком то элементе стоит event.stopPropagation() и до body событие не дойдет

bes 28.07.2012 14:14

Цитата:

Сообщение от vadim5june
не все
вполне возможно на каком то элементе стоит event.stopPropagation() и до body событие не дойдет

Если всё сделано через body, то stopPrpopagation() не нужна, body ловит ото всех и в зависимости от того, кто участвует в событии, выполняются необходимые действия.

<body>

<style>
	div {
		cursor: pointer;
	}
	.red {
		background: red;
	}
	.green {
		background: green;
	}
	.blue {
		background: blue;
	}
</style>

<div id="div1" class="red">click</div>
<div id="div2" class="green">click</div>
<div id="div3" class="blue">click</div>

<script>
document.body.onclick = function (e) {
	e = e || event;
	var target = e.target || e.srcElement;
	alert('tag = ' + target.tagName + '; id = ' + target.id +'; class = ' + target.className)
}
</script>


На чужом коде ваша правда

MakTpaxep 29.07.2012 16:37

Цитата:

Сообщение от Aetae
Я думаю ему наобоорот надо найти навешаные события.)

Именно) Мне нужен инструмент, который показывает какой код выполняется в обработчике события. Должно же быть такое в каком-нибудь js дебагере.
Цитата:

Сообщение от Aetae
Простейший ванриант тупо переопределелить метод addEventListener.

Не совсем понял=( Можно простой примерчик?
bes, я понял вашу идею - можно все события перехватывать через body. Правильно?

bes 29.07.2012 18:38

Цитата:

Сообщение от MakTpaxep
bes, я понял вашу идею - можно все события перехватывать через body. Правильно?

только от элементов, на которых не запрещено всплытие (как отметил vadim5june)

bes 29.07.2012 18:53

В хроме: наводите мышь на элемент - из контекстного меню "Просмотр кода элемента" (или F12, вкладка Elements, находите нужный элемент) - в правой части смотрите подпункт Properties, раскрываете первый подпункт в этой части и смотрите значение атрибута (например, onclick), там либо null (не назначено), либо просто function () (значит, где-то в коде задан обработчик, нажимаете правую кнопку, там один пункт show function definition, кидает на объявление этой функции), код в атрибуте элемента видно по самому элементу.

Aetae 30.07.2012 03:58

https://getfirebug.com/wiki/index.ph...sions#Eventbug


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