ph-utils 0.12.2 → 0.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dom.d.ts +3 -5
- package/lib/dom.js +18 -16
- package/package.json +1 -1
package/lib/dom.d.ts
CHANGED
@@ -73,18 +73,16 @@ export declare function toggleClass(el: HTMLElement, clazz: string): void;
|
|
73
73
|
* @param {function} event 事件处理函数
|
74
74
|
* @param {boolean} onceOrConfig 是否是只运行一次的处理函数或者配置,其中 eventFlag 为 string,如果配置该项,则表明为委托事件
|
75
75
|
*/
|
76
|
-
export declare function on
|
77
|
-
once?: boolean;
|
76
|
+
export declare function on(element: HTMLElement | ShadowRoot | Document, listener: string, fn: EventListener, option?: boolean | (AddEventListenerOptions & {
|
78
77
|
eventFlag?: string;
|
79
|
-
|
80
|
-
}): void;
|
78
|
+
})): void;
|
81
79
|
/**
|
82
80
|
* 移除指定元素的事件监听器。
|
83
81
|
* @param el - 要移除监听器的 HTML 元素。
|
84
82
|
* @param listener - 事件名称。
|
85
83
|
* @param fn - 要移除的事件监听器函数。
|
86
84
|
*/
|
87
|
-
export declare function off(el: HTMLElement, listener: string, fn: EventListener): void;
|
85
|
+
export declare function off(el: HTMLElement | ShadowRoot | Document, listener: string, fn: EventListener, option?: boolean | EventListenerOptions): void;
|
88
86
|
/**
|
89
87
|
* 判断事件是否应该继续传递。
|
90
88
|
* 从事件目标开始向上遍历DOM树,检查每个节点上是否存在指定的属性。
|
package/lib/dom.js
CHANGED
@@ -123,18 +123,13 @@ export function toggleClass(el, clazz) {
|
|
123
123
|
* @param {function} event 事件处理函数
|
124
124
|
* @param {boolean} onceOrConfig 是否是只运行一次的处理函数或者配置,其中 eventFlag 为 string,如果配置该项,则表明为委托事件
|
125
125
|
*/
|
126
|
-
export function on(element, listener, fn,
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
else {
|
132
|
-
eventExtra = once;
|
133
|
-
}
|
134
|
-
if (eventExtra.eventFlag != null) {
|
135
|
-
element.setAttribute(eventExtra.eventFlag, "__stop__");
|
126
|
+
export function on(element, listener, fn, option) {
|
127
|
+
if (typeof option === "object" && option.eventFlag) {
|
128
|
+
if (element.setAttribute) {
|
129
|
+
element.setAttribute(option.eventFlag, "__stop__");
|
130
|
+
}
|
136
131
|
}
|
137
|
-
element.addEventListener(listener, fn,
|
132
|
+
element.addEventListener(listener, fn, option);
|
138
133
|
}
|
139
134
|
/**
|
140
135
|
* 移除指定元素的事件监听器。
|
@@ -142,8 +137,8 @@ export function on(element, listener, fn, once = false) {
|
|
142
137
|
* @param listener - 事件名称。
|
143
138
|
* @param fn - 要移除的事件监听器函数。
|
144
139
|
*/
|
145
|
-
export function off(el, listener, fn) {
|
146
|
-
el.removeEventListener(listener, fn);
|
140
|
+
export function off(el, listener, fn, option) {
|
141
|
+
el.removeEventListener(listener, fn, option);
|
147
142
|
}
|
148
143
|
/**
|
149
144
|
* 判断事件是否应该继续传递。
|
@@ -160,9 +155,16 @@ export function shouldEventNext(e, eventFlag) {
|
|
160
155
|
let target = e.target;
|
161
156
|
let flag = "";
|
162
157
|
do {
|
163
|
-
|
164
|
-
|
165
|
-
|
158
|
+
try {
|
159
|
+
flag = target.getAttribute(eventFlag) || "";
|
160
|
+
if (flag === "") {
|
161
|
+
target = target.parentNode;
|
162
|
+
if (!target)
|
163
|
+
break;
|
164
|
+
}
|
165
|
+
}
|
166
|
+
catch (_error) {
|
167
|
+
break;
|
166
168
|
}
|
167
169
|
} while (flag === "");
|
168
170
|
return [flag !== "__stop__", flag, target];
|