2.5.3
https://jsbin.com/jafufah/1/edit?html , js, консоль, вывод
Только в Chrome (61.0.3163) и иногда в Safari (11.0.1).
event.target
а затем на значение null для того же свойства.В Firefox, Edge и IE11 event.target
никогда не будет null
.
event.target
равно null
если событие сохраняется в переменной до следующего тика .
Я не уверен, является ли это ошибкой в Vue.js или в Chrome, но я подумал, что больше взглядов на этот вопрос поможет прояснить ситуацию.
Впервые я увидел это в приложении nuxt.js, но его легко воспроизвести только в vue.js, так что я думаю, это либо в ядре vue, либо в Chrome (blink / webkit).
Я проделал то же самое с обработчиком загрузки <object>
и этого никогда не происходило - это зависит от элемента <img>
или размера загружаемого файла.
это не ошибка: у вас нет гарантии, что событие будет действительным в асинхронном обратном вызове после его использования. Итак, в основном вам нужно сохранить все, что вам нужно, в вашем случае target
, и напрямую использовать это вместо переменной события.
@posva У вас есть документация по этому
Я не смог его найти 🙁
Но вы можете увидеть это здесь, без Vue: https://jsbin.com/danuxohoga/1/edit?html , js, console, output
Я искал где-то, где есть какая-либо документация о продолжительности жизни событий DOM, но ничего не нашел. Ваш jsbin будет примером короны для тысяч, на который можно ссылаться из SO;)
Серьезно, последний раз у меня была эта проблема в гибридной виртуальной машине под названием Titanium, где все элементы были сопоставлены с частями Java или Object-C, и они исчезали, если виртуальная машина сочла их неиспользуемыми. Никогда не думал, что увижу это в браузере. Но сегодня был день! : тада: 💩