Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Очередность обработки событий (https://javascript.ru/forum/events/81222-ocherednost-obrabotki-sobytijj.html)

Agapkin 22.10.2020 21:24

Очередность обработки событий
 
Вложений: 1
У элемента есть 2 обработчика на одно событие.
Один обработчик в системных файлах cms-ки, который трогать нельзя.
Второй обработчик мой.
см вложение

Задача отменить/заменить первый на второй.
Какие есть варианты в javascript??
Может как то переопределить функцию?
или
Есть ли какая то последовательность выполнения обработчиков?

Сейчас сделал так, в своем обработчике:
this.inputSearch.addEventListener('blur', function (event) {
                        event.stopImmediatePropagation();
                    });

но в списке консоли хрома он второй и не уверен, правильно ли.
Подскажите плз.

рони 22.10.2020 21:40

Agapkin,
создайте копию элемента с нужным функционалом и замените оригинал на копию.

Agapkin 22.10.2020 22:41

Цитата:

Сообщение от рони (Сообщение 530033)
Agapkin,
создайте копию элемента с нужным функционалом и замените оригинал на копию.

слишком дорого.

в рамках того что есть, можно ли что то сделать?
И можно ли оставить тот вариант, где:
event.stopImmediatePropagation();

По крайней мере он работает!
Вот только нет у меня уверенности в том что он будет работать всегда и везде, т.к. я не программист :)

Есть ли у кого нибудь ответ на вопрос:
Есть ли какая то последовательность выполнения обработчиков?
Я так понимаю должны сработать в том порядке как на вложении из первого сообщения.

voraa 23.10.2020 10:16

Цитата:

Сообщение от Agapkin
По крайней мере он работает!
Вот только нет у меня уверенности в том что он будет работать всегда и везде, т.к. я не программист

Есть ли у кого нибудь ответ на вопрос:
Есть ли какая то последовательность выполнения обработчиков?
Я так понимаю должны сработать в том порядке как на вложении из первого сообщения.

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

Agapkin 23.10.2020 13:48

Цитата:

Сообщение от voraa (Сообщение 530036)
Печаль в том, что в стандартах это не определено.
Поэтому каждый браузер имеет права реализовывать это как ему хочется. Чаще всего, действительно, в порядке их присоединения.

И об этом сказано на https://developer.mozilla.org/ru/doc...atePropagation
Цитата:

Если несколько слушателей прикреплены к одному и тому же элементу с одинаковым типом события, тогда они будут вызваны в порядке своего добавления. Если один из этих слушателей вызовет event.stopImmediatePropagation() тогда события оставшихся слушателей вызваны не будут.
Но парадокс в том что работает!!, в разных браузерах на разных устройствах, при том что мой слушатель прикручен вторым(судя по скрину). Напомню что задача была заглушить действия первого.

SuperZen 23.10.2020 14:09

если все делать через ###, то через ### и получится )

как идея: https://jsfiddle.net/tomas1000r/RDW7F/


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