28.07.2012, 02:38
|
Интересующийся
|
|
Регистрация: 28.07.2012
Сообщений: 23
|
|
Вопрос по отладке. Как отловить событие?
Мне тут на скелет надо вёрстку натягивать, а с js какие-то замуты) Подскажите чем отловить события - я хочу чтобы мне ту часть кода нашло, которая выполняется при наведении курсора например. Если атрибут onMouseOver не выставлен, то становится проблемно шариться по всем подключенным скриптам и искать обработчки события. В лисе установил firebug - потыкался, потыкался, нашёл как запускать сценарий сначала, а то что мне нужно не нашёл.
Подскажите, пожалуйста, может ли firebug мне помочь или что-то другое поставить?
|
|
28.07.2012, 10:27
|
|
Профессор
|
|
Регистрация: 21.04.2012
Сообщений: 951
|
|
MakTpaxep,
события отлавливаются обработчиками к примеру:
document.onkeydown = function (){//обработчик события keydown
alert("Вы нажали на клавишу");
}
Последний раз редактировалось Dim@, 28.07.2012 в 10:30.
|
|
28.07.2012, 10:57
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Я думаю ему наобоорот надо найти навешаные события.)
Простейший ванриант тупо переопределелить метод addEventListener.
__________________
29375, 35
|
|
28.07.2012, 13:55
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Если все события отслеживать через body, то найдёте
посмотрите эту тему
на что навешать обработчик события
|
|
28.07.2012, 14:02
|
|
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
Сообщение от bes
|
Если все события отслеживать через body, то найдёте
|
не все
вполне возможно на каком то элементе стоит event.stopPropagation() и до body событие не дойдет
|
|
28.07.2012, 14:14
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от 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>
На чужом коде ваша правда
Последний раз редактировалось bes, 28.07.2012 в 14:33.
|
|
29.07.2012, 16:37
|
Интересующийся
|
|
Регистрация: 28.07.2012
Сообщений: 23
|
|
Сообщение от Aetae
|
Я думаю ему наобоорот надо найти навешаные события.)
|
Именно) Мне нужен инструмент, который показывает какой код выполняется в обработчике события. Должно же быть такое в каком-нибудь js дебагере.
Сообщение от Aetae
|
Простейший ванриант тупо переопределелить метод addEventListener.
|
Не совсем понял=( Можно простой примерчик?
bes, я понял вашу идею - можно все события перехватывать через body. Правильно?
|
|
29.07.2012, 18:38
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от MakTpaxep
|
bes, я понял вашу идею - можно все события перехватывать через body. Правильно?
|
только от элементов, на которых не запрещено всплытие (как отметил vadim5june)
|
|
29.07.2012, 18:53
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
В хроме: наводите мышь на элемент - из контекстного меню "Просмотр кода элемента" (или F12, вкладка Elements, находите нужный элемент) - в правой части смотрите подпункт Properties, раскрываете первый подпункт в этой части и смотрите значение атрибута (например, onclick), там либо null (не назначено), либо просто function () (значит, где-то в коде задан обработчик, нажимаете правую кнопку, там один пункт show function definition, кидает на объявление этой функции), код в атрибуте элемента видно по самому элементу.
Последний раз редактировалось bes, 29.07.2012 в 19:02.
|
|
30.07.2012, 03:58
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
__________________
29375, 35
|
|
|
|