@writ/utils
Version:
My tool kit
57 lines (52 loc) • 1.73 kB
JavaScript
export default {
/**
* @function addEventListener 添加句柄
* @param {object} element DOM元素引用
* @param {string} type 事件名称
* @param {function} handler 事件处理函数
* @param {boolean} options.capture
* @param {boolean} options.passive
**/
addEventListener(element, type, handler, { capture = false, passive = false }) {
if ('function' === typeof element.addEventListener) {
element.addEventListener(type, handler, { passive: passive, capture: capture });
}
},
/**
* @function removeEventListener 删除句柄
* @param {object} element DOM元素引用
* @param {string} type 事件名称
* @param {function} handler 事件处理函数的名称
* @param {boolean} options.capture
* @param {boolean} options.passive
* @description 匿名的事件处理函数不能删除
**/
removeEventListener(element, type, handler, { capture = false, passive = false }) {
if ('function' === typeof element.removeEventListener) {
element.removeEventListener(type, handler, { passive: passive, capture: capture });
}
},
/**
* @function dispatchEvent 触发事件
* @param {object} element DOM元素
* @param {string} type 触发的事件类型
* @param {callback} callback 触发的之后的
* dispatchEvent 别名 fakedEventModel
**/
emitEventListener(element, type, faked) {
if ('function' !== document.createEvent) {
return {};
}
const evt = document.createEvent('HTMLEvents');
evt.initEvent(type, true, true);
if (faked) {
evt.target = element;
evt.srcElement = element;
evt.emited = true;
return evt;
} else {
evt.emited = element.dispatchEvent(evt);
}
return evt;
}
}