我很想知道什么样的事件处理API浏览器,以及如何在一些根本不处理DOM的JavaScript逻辑中使用它们,所以我试了Event
显然,Event
和CustomEvent
只能用于DOM,而且我没有看到任何其他API,因此我最终创建了一个&#34; dummy&#34 ; <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'))
这很有效,但正如您所看到的,我已经创建了一个{I}根本不会在DOM中使用的<div>
元素,并且仅将其用作事件处理机制
创建一个我不会用作DOM元素的DOM元素似乎是浪费。有没有其他方法可以使用本机浏览器API,或者我们是否必须创建自己的(或使用)事件库以避免创建虚拟元素?
答案 0 :(得分:0)
您可以使用javascript对象和函数来创建自己的事件总线,而无需使用DOM。
基本思想是你可以定义一个API来注册回调和调度事件,如下所示:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if switchText.on{
return true
}else{
return false
}
}