ph-utils 0.12.3 → 0.12.5
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 +4 -3
- package/lib/dom.js +14 -6
- package/package.json +1 -1
package/lib/dom.d.ts
CHANGED
@@ -73,7 +73,7 @@ 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
|
76
|
+
export declare function on(element: HTMLElement | ShadowRoot | Document, listener: string, fn: EventListener, option?: boolean | (AddEventListenerOptions & {
|
77
77
|
eventFlag?: string;
|
78
78
|
})): void;
|
79
79
|
/**
|
@@ -82,7 +82,7 @@ export declare function on<T extends Event>(element: HTMLElement, listener: stri
|
|
82
82
|
* @param listener - 事件名称。
|
83
83
|
* @param fn - 要移除的事件监听器函数。
|
84
84
|
*/
|
85
|
-
export declare function off(el: HTMLElement | Document, listener: string, fn: EventListener, option?: boolean | EventListenerOptions): void;
|
85
|
+
export declare function off(el: HTMLElement | ShadowRoot | Document, listener: string, fn: EventListener, option?: boolean | EventListenerOptions): void;
|
86
86
|
/**
|
87
87
|
* 判断事件是否应该继续传递。
|
88
88
|
* 从事件目标开始向上遍历DOM树,检查每个节点上是否存在指定的属性。
|
@@ -92,9 +92,10 @@ export declare function off(el: HTMLElement | Document, listener: string, fn: Ev
|
|
92
92
|
*
|
93
93
|
* @param e - 触发的事件对象
|
94
94
|
* @param eventFlag - 需要检查的属性名
|
95
|
+
* @param endRoot - 可选,如果传递该参数,则表示停止遍历的节点,如果未传递,则表示遍历到文档根节点为止
|
95
96
|
* @returns 包含三个元素的数组:[是否继续传递事件, 属性值, 当前检查的DOM节点]
|
96
97
|
*/
|
97
|
-
export declare function shouldEventNext(e: Event, eventFlag: string
|
98
|
+
export declare function shouldEventNext(e: Event, eventFlag: string, endRoot?: HTMLElement | ShadowRoot): [boolean, string, HTMLElement];
|
98
99
|
/**
|
99
100
|
* 设置或获取节点的 innerHTML 属性
|
100
101
|
* @param element
|
package/lib/dom.js
CHANGED
@@ -125,7 +125,9 @@ export function toggleClass(el, clazz) {
|
|
125
125
|
*/
|
126
126
|
export function on(element, listener, fn, option) {
|
127
127
|
if (typeof option === "object" && option.eventFlag) {
|
128
|
-
element.setAttribute
|
128
|
+
if (element.setAttribute) {
|
129
|
+
element.setAttribute(option.eventFlag, "__stop__");
|
130
|
+
}
|
129
131
|
}
|
130
132
|
element.addEventListener(listener, fn, option);
|
131
133
|
}
|
@@ -147,20 +149,26 @@ export function off(el, listener, fn, option) {
|
|
147
149
|
*
|
148
150
|
* @param e - 触发的事件对象
|
149
151
|
* @param eventFlag - 需要检查的属性名
|
152
|
+
* @param endRoot - 可选,如果传递该参数,则表示停止遍历的节点,如果未传递,则表示遍历到文档根节点为止
|
150
153
|
* @returns 包含三个元素的数组:[是否继续传递事件, 属性值, 当前检查的DOM节点]
|
151
154
|
*/
|
152
|
-
export function shouldEventNext(e, eventFlag) {
|
155
|
+
export function shouldEventNext(e, eventFlag, endRoot) {
|
153
156
|
let target = e.target;
|
154
157
|
let flag = "";
|
155
158
|
do {
|
156
|
-
|
159
|
+
if ((endRoot && endRoot.isSameNode(target)) || target.tagName === "BODY") {
|
160
|
+
break;
|
161
|
+
}
|
162
|
+
if (target.getAttribute) {
|
163
|
+
flag = target.getAttribute(eventFlag) || "";
|
164
|
+
}
|
157
165
|
if (flag === "") {
|
158
166
|
target = target.parentNode;
|
159
|
-
if (!target)
|
160
|
-
break;
|
161
167
|
}
|
168
|
+
if (!target)
|
169
|
+
break;
|
162
170
|
} while (flag === "");
|
163
|
-
return [flag !== "__stop__", flag, target];
|
171
|
+
return [flag !== "__stop__" && flag !== "", flag, target];
|
164
172
|
}
|
165
173
|
/**
|
166
174
|
* 设置或获取节点的 innerHTML 属性
|