vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
43 lines (38 loc) • 1.44 kB
JavaScript
import XEUtils from 'xe-utils/ctor'
import DomTools from './dom'
// 监听全局事件
const browse = DomTools.browse
const wheelName = browse.firefox ? 'DOMMouseScroll' : 'mousewheel'
const eventStore = []
export const GlobalEvent = {
on (comp, type, cb) {
if (cb) {
eventStore.push({ comp, type, cb })
}
},
off (comp, type) {
XEUtils.remove(eventStore, item => item.comp === comp && item.type === type)
},
trigger (evnt) {
const isWheel = evnt.type === wheelName
eventStore.forEach(({ comp, type, cb }) => {
if (type === evnt.type || (isWheel && type === 'mousewheel')) {
cb.call(comp, evnt)
}
})
}
}
if (browse.isDoc) {
if (!browse.msie) {
document.addEventListener('copy', GlobalEvent.trigger, false)
document.addEventListener('cut', GlobalEvent.trigger, false)
document.addEventListener('paste', GlobalEvent.trigger, false)
}
document.addEventListener('keydown', GlobalEvent.trigger, false)
document.addEventListener('contextmenu', GlobalEvent.trigger, false)
window.addEventListener('mousedown', GlobalEvent.trigger, false)
window.addEventListener('blur', GlobalEvent.trigger, false)
window.addEventListener('resize', GlobalEvent.trigger, false)
window.addEventListener(wheelName, XEUtils.throttle(GlobalEvent.trigger, 100, { leading: true, trailing: false }), false)
}
export default GlobalEvent