Я пишу драйвер событий для проекта, над которым я работаю, и я использую стандартную систему событий браузера в качестве модели, что заставило меня посмотреть его более подробно. Я тестирую вещи на Edge и Firefox.document.documentElement.addEventListener("click", () =>
{
console.log("Handler 1");
document.documentElement.addEventListener("click", () => console.log("Handler 2"));
return;
});
< /code>
Когда элемент документа нажимается в первый раз, вывод в консоли: < /p>
Handler 1
< /code>
Из этого может показаться, что, хотя конечный результат - два события, связанные по порядку (обработчик 1 и обработчик 2), обработчик, добавленный в другой обработчик событий, не добавляется к в настоящее время обработанной очереди.const handler2 = () => console.log("Handler 2");
document.documentElement.addEventListener("click", () =>
{
console.log("Handler 1");
document.documentElement.removeEventListener("click", handler2);
return;
});
document.documentElement.addEventListener("click", handler2);
< /code>
Когда элемент документа нажимается, вывод в консоли также: < /p>
Handler 1
< /code>
Во втором случае два обработчика изначально связаны в порядке, и я бы предположил, что очередь событий содержит оба, когда обработчик 1 изначально запускается, но удаление обработчика событий достаточно, чтобы также удалить его из обработанного в настоящее время. Я не понимаю, почему удаление слушателя повлияет на очередь событий. Если браузер не обновляет очередь при добавлении события по соображениям производительности, то, конечно же, эти причины также применяются при удалении. Я также подумал, что логическая вещь состоит в том, чтобы две операции ведут себя последовательно.
Подробнее здесь: https://stackoverflow.com/questions/796 ... rently-fro
Почему добавление обработчика событий во время обработчика, кажется, работает иначе, от его удаления? ⇐ Javascript
Форум по Javascript
1748788983
Anonymous
Я пишу драйвер событий для проекта, над которым я работаю, и я использую стандартную систему событий браузера в качестве модели, что заставило меня посмотреть его более подробно. Я тестирую вещи на Edge и Firefox.document.documentElement.addEventListener("click", () =>
{
console.log("Handler 1");
document.documentElement.addEventListener("click", () => console.log("Handler 2"));
return;
});
< /code>
Когда элемент документа нажимается в первый раз, вывод в консоли: < /p>
Handler 1
< /code>
Из этого может показаться, что, хотя конечный результат - два события, связанные по порядку (обработчик 1 и обработчик 2), обработчик, добавленный в другой обработчик событий, не добавляется к в настоящее время обработанной очереди.const handler2 = () => console.log("Handler 2");
document.documentElement.addEventListener("click", () =>
{
console.log("Handler 1");
document.documentElement.removeEventListener("click", handler2);
return;
});
document.documentElement.addEventListener("click", handler2);
< /code>
Когда элемент документа нажимается, вывод в консоли также: < /p>
Handler 1
< /code>
Во втором случае два обработчика изначально связаны в порядке, и я бы предположил, что очередь событий содержит оба, когда обработчик 1 изначально запускается, но удаление обработчика событий достаточно, чтобы также удалить его из обработанного в настоящее время. Я не понимаю, почему удаление слушателя повлияет на очередь событий. Если браузер не обновляет очередь при добавлении события по соображениям производительности, то, конечно же, эти причины также применяются при удалении. Я также подумал, что логическая вещь состоит в том, чтобы две операции ведут себя последовательно.
Подробнее здесь: [url]https://stackoverflow.com/questions/79647545/why-does-adding-an-event-handler-during-a-handler-appear-to-work-differently-fro[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия