Что с пассивной подпиской на события?

354
16 января 2017, 22:19

Обнаружил интересную фичу - подписку на события с указанием passsive: true, что должно позволить браузеру оптимизировать стандратные действия, т. к. мы таким образом обещаем не отменять их.

С точки зрения логики это дополнительная плюшка, которая не должна ничего портить в случае, если браузер её не поддерживает. Но есть одно жирное НО.

В классическом варианте подписка осуществлялась одним из этих способов:

target.addEventListener(type, listener);
target.addEventListener(type, listener, useCapture);

Теперь же надо в третий параметр запихнуть объект:

target.addEventListener(type, listener, {useCapture, passive, once});

Тут есть ещё и once, у которого поддержка ещё хуже.

Какие проблемы могут возникнуть, если передать объект в качестве последнего параметра, когда браузер не поддерживает passive?

Следующий код в IE11 выдаёт 1, т. е. capturing, а в хроме 3 - bubbling. Логично ли рассчитывать, что объект будет рассматриваться как true, что означает, что если я подписываюсь на capturing-стадию и не использую once, то всё будет работать одинаково?

Или есть другие варианты, например исключение?

https://jsfiddle.net/5o88hq7u/1/

document.querySelector('div').addEventListener( 
  'click', 
  function(e) { alert(e.eventPhase) }, 
  { passive: true } 
);
<div><button>Click me</button></div>

READ ALSO
Расшифровка javascript

Расшифровка javascript

Как расшифровать

438
Как передать код html из php в js

Как передать код html из php в js

Есть код, он из селекта отправляет текст в js, из js в php для обработки и из php обратно в jsКак мне вывести в form-control текст, полученный из php

381
Отмена события щелчком мыши

Отмена события щелчком мыши

При наведении указателя мыши объект появляется, при отведении указателя мыши объект удаляетсяПрименил функцию off чтобы, при нажатии объект...

362
Тестирование nodejs (express) приложения

Тестирование nodejs (express) приложения

Хочу спросить ваше мнение, у меня есть 2 сущности: Роуты

296