Мне было любопытно узнать, какие браузеры API обработки событий имеют и как я могу использовать их в некоторой логике JavaScript, которая вообще не имеет отношения к DOM, поэтому я дал Event
попытку.API обработки событий в браузере, кроме DOM?
По-видимому, Event
и CustomEvent
предназначены для использования только с DOM, и я не вижу никакого другого API, так что я в конечном итоге создать «манекен» <div>
элемента в качестве обработчика события (EventTarget) для того, чтобы общаться между двумя частями кода, что-то вроде:
// shared file
export
let eventHandler = document.createElement('div')
// ... some other file
import {eventHandler} from './sharedFile'
eventHandler.addEventListener('foobar', function(event) {
console.log('foobar event fired!')
})
// ... some other file
import {eventHandler} from './sharedFile'
console.log('About to trigger "foobar" event.')
eventHandler.dispatchEvent(new Event('foobar'))
Это работает, но как вы можете видеть, я создал <div>
элемент, который я не собираюсь использовать в DOM на всех, и использовать его только как механизм обработки событий.
Похоже на отходы для создания элемента DOM, который я не буду использовать в качестве элемента DOM. Есть ли другой способ сделать это с помощью собственных API-интерфейсов браузера, или нам нужно создать собственную (или использовать) библиотеку событий, чтобы избежать создания фиктивного элемента?
Это то, что я думал, что мы должны реализовать его сами. Как вы показали, это легко сделать. Мне любопытно узнать, почему W3C соединит API-интерфейс браузера с DOM вместо того, чтобы сделать его более полезным и универсальным для случаев использования, отличных от DOM. – trusktr