由于 addEventListener 的 options 的兼容性问题, 可以自己创建一个 once 监听器.
https://stackoverflow.com/questions/3393686/only-fire-an-event-once
addEventListenerOnce(target, type, listener) {
target.addEventListener(type, function fn(event) {
target.removeEventListener(fn)
listener(event)
})
}