Самое чистое (и правильное) решение для кросс-потоковых проблем UI - использовать SynchronizationContext, см. Синхронизация вызовов с пользовательским интерфейсом в статье с несколькими потоками , это очень хорошо объясняет.
за комментарий li357, добавив e.persist()
прямо перед оператором console.log(e)
в исходном сообщении, это показывает в отладчике. Вы можете видеть, что собственные свойства события javascript включают в себя target
, element
и определенные option
из реакции