UNPKG

@alicloud/dom-event-hijacker

Version:
33 lines (32 loc) 961 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = handleClickHijacker; var _const = require("../const"); /** * 处理一个 hijacker 对象 */ function handleClickHijacker(el, e, hijacker) { if (el.hasAttribute(_const.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; }