UNPKG

@alicloud/dom-event-hijacker

Version:
28 lines (27 loc) 870 B
import { DATA_CLICK_HIJACK_IGNORE } from '../const'; /** * 处理一个 hijacker 对象 */ export default function handleClickHijacker(el, e, hijacker) { if (el.hasAttribute(DATA_CLICK_HIJACK_IGNORE)) { return false; } var condition = hijacker.condition, callback = hijacker.callback, shouldPreventDefault = hijacker.shouldPreventDefault, shouldStopPropagation = hijacker.shouldStopPropagation; var result = condition(el); if (!result) { return false; } callback === null || callback === void 0 ? void 0 : callback(el, result); if (typeof shouldPreventDefault === 'boolean' ? shouldPreventDefault : el.tagName === 'A') { // 不传 shouldPreventDefault,则默认仅对链接阻止默认行为 e.preventDefault(); } if (shouldStopPropagation) { // 默认不阻止冒泡 e.stopPropagation(); } return true; }