Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает обработчик в консоли (https://javascript.ru/forum/dom-window/86092-ne-rabotaet-obrabotchik-v-konsoli.html)

firep91613 15.09.2024 10:04

Не работает обработчик в консоли
 
Есть страница, открываю консоль и вставляю код:
document.body.addEventListener('mousemove', function(e) {
    console.log('bla-bla-bla');
});

Но никакой реакции не происходит. В консоль ничего не выводится. Как так? Другие скрипты работают, там анимации всякие. Первый раз такое вижу.

Aetae 15.09.2024 17:08

Вот тебе варианты когда такое возможно:
1. всё дерьмо лежит вне body(это не валидно, но осуществимо)
2. body периодически целикиком перезаписывается(например через outerHTML) и старые слушатели на старом body больше не актальны.(встречал и на крупных сайтах)
3. console.log подменён сайтом и вообще не работает(встречается повсеместно, можно достать себе log из фрейма, если очень хочется).
4. addEventListener подменён сайтом.

voraa 15.09.2024 18:33

Как вариант, скрипт находится в head до body.
<head>
<script>
document.body.addEventListener('mousemove', function(e) {
    console.log('bla-bla-bla');
});
</script>
</head>
<body>
....
</body>

document.body в этом случае будет null.
Проверьте ошибки в консоле.

firep91613 15.09.2024 22:19

Aetae, а какие еще есть варианты? Просто все в body, в Event Listeners в инструментах разработчика обработчик стоит, console.log - native code, addEventListener - тоже.

voraa, я скрипт в консоль вставляю, сайт не мой. Просто хотел посмотреть как там у них работает. А там даже обработчик не хочет работать.

MallSerg 15.09.2024 22:59

Цитата:

А там даже обработчик не хочет работать.
Место для удара головой ....

Практически наверняка обработчик работает так и должен работать но при этом все работает не так как ты ожидаешь следовательно тебе стоит разобрать логику своих суждений приводящих к категоричному утверждению "обработчик не хочет работать" и найти в ней ошибку.

С большой долей вероятности при "всплытии события" вызывается обработчик останавливающий дальнейшее всплытие.

Проверить это можно с помощью отладчика браузера
например в хроме можно выбрать "точки останова прослушивателя событий" и выбрать точку останова на событии "mousemove".

Aetae 15.09.2024 23:03

MallSerg, точняк, про возможность, что кто-то остановит всплытие я и не подумал.

firep91613, попробуй так, авось перехватишь на погружении:
document.body.addEventListener('mousemove', function(e) {
    console.log('bla-bla-bla');
}, true);

firep91613 16.09.2024 19:34

Да, так работает. Спасибо вам.


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