@whitesev/domutils 1.6.8 → 1.7.1
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/dist/index.amd.js +1962 -1062
- package/dist/index.amd.js.map +1 -1
- package/dist/index.amd.min.js +2 -0
- package/dist/index.amd.min.js.map +1 -0
- package/dist/index.cjs.js +1962 -1062
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +2 -0
- package/dist/index.cjs.min.js.map +1 -0
- package/dist/index.esm.js +1962 -1062
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +2 -0
- package/dist/index.esm.min.js.map +1 -0
- package/dist/index.iife.js +1962 -1062
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +2 -0
- package/dist/index.iife.min.js.map +1 -0
- package/dist/index.system.js +1962 -1062
- package/dist/index.system.js.map +1 -1
- package/dist/index.system.min.js +2 -0
- package/dist/index.system.min.js.map +1 -0
- package/dist/index.umd.js +1962 -1062
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +2 -0
- package/dist/index.umd.min.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/src/{DOMUtilsCommonUtils.d.ts → CommonUtils.d.ts} +20 -8
- package/dist/types/src/ElementAnimate.d.ts +89 -0
- package/dist/types/src/{DOMUtilsEvent.d.ts → ElementEvent.d.ts} +27 -92
- package/dist/types/src/ElementHandler.d.ts +17 -0
- package/dist/types/src/ElementSelector.d.ts +96 -0
- package/dist/types/src/ElementWait.d.ts +278 -0
- package/dist/types/src/GlobalData.d.ts +4 -0
- package/dist/types/src/{DOMUtilsOriginPrototype.d.ts → OriginPrototype.d.ts} +1 -2
- package/dist/types/src/Utils.d.ts +68 -0
- package/dist/types/src/{DOMUtils.d.ts → index.d.ts} +157 -177
- package/dist/types/src/types/DOMUtilsEvent.d.ts +23 -0
- package/dist/types/src/types/env.d.ts +9 -0
- package/dist/types/src/types/global.d.ts +0 -2
- package/dist/types/src/types/gm.d.ts +0 -4
- package/index.ts +1 -1
- package/package.json +13 -12
- package/src/{DOMUtilsCommonUtils.ts → CommonUtils.ts} +25 -11
- package/src/ElementAnimate.ts +290 -0
- package/src/{DOMUtilsEvent.ts → ElementEvent.ts} +220 -396
- package/src/ElementHandler.ts +43 -0
- package/src/ElementSelector.ts +260 -0
- package/src/ElementWait.ts +699 -0
- package/src/GlobalData.ts +5 -0
- package/src/{DOMUtilsOriginPrototype.ts → OriginPrototype.ts} +1 -3
- package/src/Utils.ts +386 -0
- package/src/{DOMUtils.ts → index.ts} +678 -757
- package/src/types/DOMUtilsEvent.d.ts +23 -0
- package/src/types/env.d.ts +9 -0
- package/src/types/global.d.ts +0 -2
- package/src/types/gm.d.ts +0 -4
- package/dist/types/src/DOMUtilsData.d.ts +0 -5
- package/src/DOMUtilsData.ts +0 -7
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ElementAnimate } from "./ElementAnimate";
|
|
2
|
+
import type { DOMUtils_Event, DOMUtils_EventType, DOMUtilsAddEventListenerResult, DOMUtilsElementEventType, DOMUtilsEventListenerOption, DOMUtilsEventListenerOptionsAttribute } from "./types/DOMUtilsEvent";
|
|
2
3
|
import type { DOMUtilsTargetElementType } from "./types/global";
|
|
3
4
|
import type { WindowApiOption } from "./types/WindowApi";
|
|
4
5
|
import { WindowApi } from "./WindowApi";
|
|
5
|
-
|
|
6
|
+
declare class ElementEvent extends ElementAnimate {
|
|
6
7
|
windowApi: typeof WindowApi.prototype;
|
|
7
8
|
constructor(windowApiOption?: WindowApiOption);
|
|
9
|
+
/** 获取 animationend 在各个浏览器的兼容名 */
|
|
10
|
+
getAnimationEndNameList(): string[];
|
|
11
|
+
/** 获取 transitionend 在各个浏览器的兼容名 */
|
|
12
|
+
getTransitionEndNameList(): string[];
|
|
8
13
|
/**
|
|
9
14
|
* 绑定事件
|
|
10
15
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -23,7 +28,7 @@ export declare class DOMUtilsEvent {
|
|
|
23
28
|
* console.log("事件触发",event)
|
|
24
29
|
* })
|
|
25
30
|
*/
|
|
26
|
-
on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: DOMUtils_Event[T]) => void, option?: DOMUtilsEventListenerOption | boolean):
|
|
31
|
+
on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], callback: (this: HTMLElement, event: DOMUtils_Event[T]) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
|
|
27
32
|
/**
|
|
28
33
|
* 绑定事件
|
|
29
34
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -42,7 +47,7 @@ export declare class DOMUtilsEvent {
|
|
|
42
47
|
* console.log("事件触发",event)
|
|
43
48
|
* })
|
|
44
49
|
*/
|
|
45
|
-
on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: DOMUtilsEventListenerOption | boolean):
|
|
50
|
+
on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], callback: (this: HTMLElement, event: T) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
|
|
46
51
|
/**
|
|
47
52
|
* 绑定事件
|
|
48
53
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -67,7 +72,7 @@ export declare class DOMUtilsEvent {
|
|
|
67
72
|
* console.log("事件触发", event, selectorTarget)
|
|
68
73
|
* })
|
|
69
74
|
*/
|
|
70
|
-
on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean):
|
|
75
|
+
on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: DOMUtils_Event[T], selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
|
|
71
76
|
/**
|
|
72
77
|
* 绑定事件
|
|
73
78
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -92,7 +97,7 @@ export declare class DOMUtilsEvent {
|
|
|
92
97
|
* console.log("事件触发", event, selectorTarget)
|
|
93
98
|
* })
|
|
94
99
|
*/
|
|
95
|
-
on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean):
|
|
100
|
+
on<T extends Event>(element: DOMUtilsElementEventType, eventType: string | string[], selector: string | string[] | undefined | null, callback: (this: HTMLElement, event: T, selectorTarget: HTMLElement) => void, option?: DOMUtilsEventListenerOption | boolean): DOMUtilsAddEventListenerResult;
|
|
96
101
|
/**
|
|
97
102
|
* 取消绑定事件
|
|
98
103
|
* @param element 需要取消绑定的元素|元素数组
|
|
@@ -177,7 +182,7 @@ export declare class DOMUtilsEvent {
|
|
|
177
182
|
* @param element 需要触发的元素|元素数组|window
|
|
178
183
|
* @param eventType 需要触发的事件
|
|
179
184
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
180
|
-
* @param useDispatchToTriggerEvent 是否使用dispatchEvent
|
|
185
|
+
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
|
|
181
186
|
* @example
|
|
182
187
|
* // 触发元素a.xx的click事件
|
|
183
188
|
* DOMUtils.trigger(document.querySelector("a.xx"),"click")
|
|
@@ -186,13 +191,13 @@ export declare class DOMUtilsEvent {
|
|
|
186
191
|
* DOMUtils.trigger(document.querySelector("a.xx"),"click tap hover")
|
|
187
192
|
* DOMUtils.trigger("a.xx",["click","tap","hover"])
|
|
188
193
|
*/
|
|
189
|
-
trigger(element: DOMUtilsTargetElementType | Element | DocumentFragment | any[] | typeof globalThis | Window | Document, eventType: string, details?: object, useDispatchToTriggerEvent?: boolean): void;
|
|
194
|
+
trigger(element: DOMUtilsTargetElementType | Element | DocumentFragment | any[] | typeof globalThis | Window | Document, eventType: string | string[], details?: object, useDispatchToTriggerEvent?: boolean): void;
|
|
190
195
|
/**
|
|
191
196
|
* 主动触发事件
|
|
192
197
|
* @param element 需要触发的元素|元素数组|window
|
|
193
198
|
* @param eventType 需要触发的事件
|
|
194
199
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
195
|
-
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true
|
|
200
|
+
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true,如果为false,则直接调用callback,但是这种会让使用了selectorTarget的没有值
|
|
196
201
|
* @example
|
|
197
202
|
* // 触发元素a.xx的click事件
|
|
198
203
|
* DOMUtils.trigger(document.querySelector("a.xx"),"click")
|
|
@@ -201,7 +206,7 @@ export declare class DOMUtilsEvent {
|
|
|
201
206
|
* DOMUtils.trigger(document.querySelector("a.xx"),"click tap hover")
|
|
202
207
|
* DOMUtils.trigger("a.xx",["click","tap","hover"])
|
|
203
208
|
*/
|
|
204
|
-
trigger(element:
|
|
209
|
+
trigger(element: Element | string | NodeList | any[] | Window | Document, eventType: DOMUtils_EventType | DOMUtils_EventType[], details?: object, useDispatchToTriggerEvent?: boolean): void;
|
|
205
210
|
/**
|
|
206
211
|
* 绑定或触发元素的click事件
|
|
207
212
|
* @param element 目标元素
|
|
@@ -395,91 +400,21 @@ export declare class DOMUtilsEvent {
|
|
|
395
400
|
removeListen(): void;
|
|
396
401
|
};
|
|
397
402
|
/**
|
|
398
|
-
*
|
|
399
|
-
*
|
|
400
|
-
* + :contains([text]) 作用: 找到包含指定文本内容的指定元素
|
|
401
|
-
* + :empty 作用:找到既没有文本内容也没有子元素的指定元素
|
|
402
|
-
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
403
|
-
* @param selector 选择器
|
|
404
|
-
* @param parent 指定父元素
|
|
403
|
+
* 阻止事件传递
|
|
404
|
+
* @param event 要阻止传递的事件
|
|
405
405
|
* @example
|
|
406
|
-
* DOMUtils.
|
|
407
|
-
* > div.xxx
|
|
408
|
-
* @example
|
|
409
|
-
* DOMUtils.selector("div:empty")
|
|
410
|
-
* > div.xxx
|
|
411
|
-
* @example
|
|
412
|
-
* DOMUtils.selector("div:regexp('^xxxx$')")
|
|
413
|
-
* > div.xxx
|
|
406
|
+
* DOMUtils.preventEvent(event);
|
|
414
407
|
*/
|
|
415
|
-
|
|
416
|
-
selector<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E | undefined;
|
|
408
|
+
preventEvent(event: Event): boolean;
|
|
417
409
|
/**
|
|
418
|
-
*
|
|
419
|
-
*
|
|
420
|
-
*
|
|
421
|
-
*
|
|
422
|
-
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
423
|
-
* @param selector 选择器
|
|
424
|
-
* @param parent 指定父元素
|
|
425
|
-
* @example
|
|
426
|
-
* DOMUtils.selectorAll("div:contains('测试')")
|
|
427
|
-
* > [div.xxx]
|
|
428
|
-
* @example
|
|
429
|
-
* DOMUtils.selectorAll("div:empty")
|
|
430
|
-
* > [div.xxx]
|
|
431
|
-
* @example
|
|
432
|
-
* DOMUtils.selectorAll("div:regexp('^xxxx$')")
|
|
433
|
-
* > [div.xxx]
|
|
434
|
-
* @example
|
|
435
|
-
* DOMUtils.selectorAll("div:regexp(/^xxx/ig)")
|
|
436
|
-
* > [div.xxx]
|
|
437
|
-
*/
|
|
438
|
-
selectorAll<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Element | Document | DocumentFragment | ShadowRoot): HTMLElementTagNameMap[K][];
|
|
439
|
-
selectorAll<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E[];
|
|
440
|
-
/**
|
|
441
|
-
* 匹配元素,可使用以下的额外语法
|
|
442
|
-
*
|
|
443
|
-
* + :contains([text]) 作用: 找到包含指定文本内容的指定元素
|
|
444
|
-
* + :empty 作用:找到既没有文本内容也没有子元素的指定元素
|
|
445
|
-
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
446
|
-
* @param $el 元素
|
|
447
|
-
* @param selector 选择器
|
|
448
|
-
* @example
|
|
449
|
-
* DOMUtils.matches("div:contains('测试')")
|
|
450
|
-
* > true
|
|
451
|
-
* @example
|
|
452
|
-
* DOMUtils.matches("div:empty")
|
|
453
|
-
* > true
|
|
454
|
-
* @example
|
|
455
|
-
* DOMUtils.matches("div:regexp('^xxxx$')")
|
|
456
|
-
* > true
|
|
457
|
-
* @example
|
|
458
|
-
* DOMUtils.matches("div:regexp(/^xxx/ig)")
|
|
459
|
-
* > false
|
|
460
|
-
*/
|
|
461
|
-
matches($el: HTMLElement | Element | null | undefined, selector: string): boolean;
|
|
462
|
-
/**
|
|
463
|
-
* 根据选择器获取上层元素,可使用以下的额外语法
|
|
464
|
-
*
|
|
465
|
-
* + :contains([text]) 作用: 找到包含指定文本内容的指定元素
|
|
466
|
-
* + :empty 作用:找到既没有文本内容也没有子元素的指定元素
|
|
467
|
-
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
468
|
-
* @param $el 元素
|
|
469
|
-
* @param selector 选择器
|
|
470
|
-
* @example
|
|
471
|
-
* DOMUtils.closest("div:contains('测试')")
|
|
472
|
-
* > div.xxx
|
|
473
|
-
* @example
|
|
474
|
-
* DOMUtils.closest("div:empty")
|
|
475
|
-
* > div.xxx
|
|
476
|
-
* @example
|
|
477
|
-
* DOMUtils.closest("div:regexp('^xxxx$')")
|
|
478
|
-
* > div.xxxx
|
|
410
|
+
* 通过监听事件来主动阻止事件的传递
|
|
411
|
+
* @param $el 要进行处理的元素
|
|
412
|
+
* @param eventNameList (可选)要阻止的事件名|列表
|
|
413
|
+
* @param capture (可选)是否捕获,默认false
|
|
479
414
|
* @example
|
|
480
|
-
* DOMUtils.
|
|
481
|
-
* > null
|
|
415
|
+
* DOMUtils.preventEvent(document.querySelector("a"),"click")
|
|
482
416
|
*/
|
|
483
|
-
|
|
484
|
-
closest<E extends Element = Element>($el: HTMLElement | Element, selector: string): E | null;
|
|
417
|
+
preventEvent($el: HTMLElement, eventNameList?: string | string[], capture?: boolean): void;
|
|
485
418
|
}
|
|
419
|
+
declare const elementEvent: ElementEvent;
|
|
420
|
+
export { elementEvent, ElementEvent };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ElementEvent } from "./ElementEvent";
|
|
2
|
+
import type { WindowApiOption } from "./types/WindowApi";
|
|
3
|
+
import { WindowApi } from "./WindowApi";
|
|
4
|
+
declare class ElementHandler extends ElementEvent {
|
|
5
|
+
windowApi: typeof WindowApi.prototype;
|
|
6
|
+
constructor(windowApiOption?: WindowApiOption);
|
|
7
|
+
/**
|
|
8
|
+
* 获取元素的选择器字符串
|
|
9
|
+
* @param $el
|
|
10
|
+
* @example
|
|
11
|
+
* DOMUtils.getElementSelector(document.querySelector("a"))
|
|
12
|
+
* > '.....'
|
|
13
|
+
*/
|
|
14
|
+
getElementSelector($el: HTMLElement): string;
|
|
15
|
+
}
|
|
16
|
+
declare const elementHandler: ElementHandler;
|
|
17
|
+
export { elementHandler, ElementHandler };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { WindowApiOption } from "./types/WindowApi";
|
|
2
|
+
import { WindowApi } from "./WindowApi";
|
|
3
|
+
declare class ElementSelector {
|
|
4
|
+
windowApi: typeof WindowApi.prototype;
|
|
5
|
+
constructor(windowApiOption?: WindowApiOption);
|
|
6
|
+
/**
|
|
7
|
+
* 选择器,可使用以下的额外语法
|
|
8
|
+
*
|
|
9
|
+
* + :contains([text]) 作用: 找到包含指定文本内容的指定元素
|
|
10
|
+
* + :empty 作用:找到既没有文本内容也没有子元素的指定元素
|
|
11
|
+
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
12
|
+
* @param selector 选择器
|
|
13
|
+
* @param parent 指定父元素
|
|
14
|
+
* @example
|
|
15
|
+
* DOMUtils.selector("div:contains('测试')")
|
|
16
|
+
* > div.xxx
|
|
17
|
+
* @example
|
|
18
|
+
* DOMUtils.selector("div:empty")
|
|
19
|
+
* > div.xxx
|
|
20
|
+
* @example
|
|
21
|
+
* DOMUtils.selector("div:regexp('^xxxx$')")
|
|
22
|
+
* > div.xxx
|
|
23
|
+
*/
|
|
24
|
+
selector<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Element | Document | DocumentFragment | ShadowRoot): HTMLElementTagNameMap[K] | undefined;
|
|
25
|
+
selector<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* 选择器,可使用以下的额外语法
|
|
28
|
+
*
|
|
29
|
+
* + :contains([text]) 作用: 找到包含指定文本内容的指定元素
|
|
30
|
+
* + :empty 作用:找到既没有文本内容也没有子元素的指定元素
|
|
31
|
+
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
32
|
+
* @param selector 选择器
|
|
33
|
+
* @param parent 指定父元素
|
|
34
|
+
* @example
|
|
35
|
+
* DOMUtils.selectorAll("div:contains('测试')")
|
|
36
|
+
* > [div.xxx]
|
|
37
|
+
* @example
|
|
38
|
+
* DOMUtils.selectorAll("div:empty")
|
|
39
|
+
* > [div.xxx]
|
|
40
|
+
* @example
|
|
41
|
+
* DOMUtils.selectorAll("div:regexp('^xxxx$')")
|
|
42
|
+
* > [div.xxx]
|
|
43
|
+
* @example
|
|
44
|
+
* DOMUtils.selectorAll("div:regexp(/^xxx/ig)")
|
|
45
|
+
* > [div.xxx]
|
|
46
|
+
*/
|
|
47
|
+
selectorAll<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Element | Document | DocumentFragment | ShadowRoot): HTMLElementTagNameMap[K][];
|
|
48
|
+
selectorAll<E extends Element = HTMLElement>(selector: string, parent?: Element | Document | DocumentFragment | ShadowRoot): E[];
|
|
49
|
+
/**
|
|
50
|
+
* 匹配元素,可使用以下的额外语法
|
|
51
|
+
*
|
|
52
|
+
* + :contains([text]) 作用: 找到包含指定文本内容的指定元素
|
|
53
|
+
* + :empty 作用:找到既没有文本内容也没有子元素的指定元素
|
|
54
|
+
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
55
|
+
* @param $el 元素
|
|
56
|
+
* @param selector 选择器
|
|
57
|
+
* @example
|
|
58
|
+
* DOMUtils.matches("div:contains('测试')")
|
|
59
|
+
* > true
|
|
60
|
+
* @example
|
|
61
|
+
* DOMUtils.matches("div:empty")
|
|
62
|
+
* > true
|
|
63
|
+
* @example
|
|
64
|
+
* DOMUtils.matches("div:regexp('^xxxx$')")
|
|
65
|
+
* > true
|
|
66
|
+
* @example
|
|
67
|
+
* DOMUtils.matches("div:regexp(/^xxx/ig)")
|
|
68
|
+
* > false
|
|
69
|
+
*/
|
|
70
|
+
matches($el: HTMLElement | Element | null | undefined, selector: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* 根据选择器获取上层元素,可使用以下的额外语法
|
|
73
|
+
*
|
|
74
|
+
* + :contains([text]) 作用: 找到包含指定文本内容的指定元素
|
|
75
|
+
* + :empty 作用:找到既没有文本内容也没有子元素的指定元素
|
|
76
|
+
* + :regexp([text]) 作用: 找到符合正则表达式的内容的指定元素
|
|
77
|
+
* @param $el 元素
|
|
78
|
+
* @param selector 选择器
|
|
79
|
+
* @example
|
|
80
|
+
* DOMUtils.closest("div:contains('测试')")
|
|
81
|
+
* > div.xxx
|
|
82
|
+
* @example
|
|
83
|
+
* DOMUtils.closest("div:empty")
|
|
84
|
+
* > div.xxx
|
|
85
|
+
* @example
|
|
86
|
+
* DOMUtils.closest("div:regexp('^xxxx$')")
|
|
87
|
+
* > div.xxxx
|
|
88
|
+
* @example
|
|
89
|
+
* DOMUtils.closest("div:regexp(/^xxx/ig)")
|
|
90
|
+
* > null
|
|
91
|
+
*/
|
|
92
|
+
closest<K extends keyof HTMLElementTagNameMap>($el: HTMLElement | Element, selector: string): HTMLElementTagNameMap[K] | null;
|
|
93
|
+
closest<E extends Element = Element>($el: HTMLElement | Element, selector: string): E | null;
|
|
94
|
+
}
|
|
95
|
+
declare const elementSelector: ElementSelector;
|
|
96
|
+
export { elementSelector, ElementSelector };
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { ElementSelector } from "./ElementSelector";
|
|
2
|
+
import type { WindowApiOption } from "./types/WindowApi";
|
|
3
|
+
import { WindowApi } from "./WindowApi";
|
|
4
|
+
declare class ElementWait extends ElementSelector {
|
|
5
|
+
windowApi: typeof WindowApi.prototype;
|
|
6
|
+
constructor(windowApiOption?: WindowApiOption);
|
|
7
|
+
/**
|
|
8
|
+
* 等待任意事件成立
|
|
9
|
+
*
|
|
10
|
+
* 运行方式为根据页面元素的改变而触发回调
|
|
11
|
+
* @param checkFn 检测的函数
|
|
12
|
+
* @param timeout 超时时间,默认0
|
|
13
|
+
* @param parent (可选)父元素,默认document
|
|
14
|
+
* @example
|
|
15
|
+
* Utils.wait(()=> {
|
|
16
|
+
* let $test = document.querySelector("#test");
|
|
17
|
+
* return {
|
|
18
|
+
* success: $test !== null,
|
|
19
|
+
* data: $test
|
|
20
|
+
* }
|
|
21
|
+
* })
|
|
22
|
+
*/
|
|
23
|
+
wait<T>(checkFn: (...args: any[]) => {
|
|
24
|
+
/**
|
|
25
|
+
* 是否检测成功
|
|
26
|
+
*/
|
|
27
|
+
success: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* 返回的值
|
|
30
|
+
*/
|
|
31
|
+
data: T;
|
|
32
|
+
}, timeout?: null | undefined, parent?: Node | Element | Document | HTMLElement): Promise<T>;
|
|
33
|
+
wait<T>(checkFn: (...args: any[]) => {
|
|
34
|
+
/**
|
|
35
|
+
* 是否检测成功
|
|
36
|
+
*/
|
|
37
|
+
success: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 返回的值
|
|
40
|
+
*/
|
|
41
|
+
data: T;
|
|
42
|
+
}, timeout?: number, parent?: Node | Element | Document | HTMLElement): Promise<T | null>;
|
|
43
|
+
/**
|
|
44
|
+
* 等待元素出现
|
|
45
|
+
* @param selectorFn 获取元素的函数
|
|
46
|
+
* @param timeout 超时时间,默认0
|
|
47
|
+
* @example
|
|
48
|
+
* Utils.waitNode(()=>document.querySelector("div"), 1000).then( $div =>{
|
|
49
|
+
* console.log($div); // $div => HTMLDivELement | null
|
|
50
|
+
* })
|
|
51
|
+
*/
|
|
52
|
+
waitNode<K>(selectorFn: () => K | null | undefined): Promise<K>;
|
|
53
|
+
waitNode<K>(selectorFn: () => K | null | undefined, timeout: number): Promise<K | null | undefined>;
|
|
54
|
+
/**
|
|
55
|
+
* 等待元素出现
|
|
56
|
+
* @param selector CSS选择器
|
|
57
|
+
* @param parent (可选)父元素,默认document
|
|
58
|
+
* @example
|
|
59
|
+
* Utils.waitNode("div").then( $div =>{
|
|
60
|
+
* console.log($div); // div => HTMLDivELement
|
|
61
|
+
* })
|
|
62
|
+
* Utils.waitNode("div", document).then( $div =>{
|
|
63
|
+
* console.log($div); // div => HTMLDivELement
|
|
64
|
+
* })
|
|
65
|
+
*/
|
|
66
|
+
waitNode<K extends keyof HTMLElementTagNameMap>(selector: K, parent?: Node | Element | Document | HTMLElement): Promise<HTMLElementTagNameMap[K]>;
|
|
67
|
+
waitNode<T extends Element>(selector: string, parent?: Node | Element | Document | HTMLElement): Promise<T>;
|
|
68
|
+
/**
|
|
69
|
+
* 等待元素出现
|
|
70
|
+
* @param selectorList CSS选择器数组
|
|
71
|
+
* @param parent (可选)父元素,默认document
|
|
72
|
+
* @example
|
|
73
|
+
* Utils.waitNode(["div"]).then( ([$div]) =>{
|
|
74
|
+
* console.log($div); // div => HTMLDivELement[]
|
|
75
|
+
* })
|
|
76
|
+
* Utils.waitNode(["div"], document).then( ([$div]) =>{
|
|
77
|
+
* console.log($div); // div => HTMLDivELement[]
|
|
78
|
+
* })
|
|
79
|
+
*/
|
|
80
|
+
waitNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<HTMLElementTagNameMap[K][]>;
|
|
81
|
+
waitNode<T extends Element[]>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<T>;
|
|
82
|
+
/**
|
|
83
|
+
* 等待元素出现
|
|
84
|
+
* @param selector CSS选择器
|
|
85
|
+
* @param parent 父元素,默认document
|
|
86
|
+
* @param timeout 超时时间,默认0
|
|
87
|
+
* @example
|
|
88
|
+
* Utils.waitNode("div", document, 1000).then( $div =>{
|
|
89
|
+
* console.log($div); // $div => HTMLDivELement | null
|
|
90
|
+
* })
|
|
91
|
+
*/
|
|
92
|
+
waitNode<K extends keyof HTMLElementTagNameMap>(selector: K, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
|
|
93
|
+
waitNode<T extends Element>(selector: string, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
|
|
94
|
+
/**
|
|
95
|
+
* 等待元素出现
|
|
96
|
+
* @param selectorList CSS选择器数组
|
|
97
|
+
* @param parent 父元素,默认document
|
|
98
|
+
* @param timeout 超时时间,默认0
|
|
99
|
+
* @example
|
|
100
|
+
* Utils.waitNode(["div"], document, 1000).then( ([$div]) =>{
|
|
101
|
+
* console.log($div); // $div => HTMLDivELement[] | null
|
|
102
|
+
* })
|
|
103
|
+
*/
|
|
104
|
+
waitNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
|
|
105
|
+
waitNode<T extends Element[]>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
|
|
106
|
+
/**
|
|
107
|
+
* 等待元素出现
|
|
108
|
+
* @param selector CSS选择器
|
|
109
|
+
* @param timeout 超时时间,默认0
|
|
110
|
+
* @example
|
|
111
|
+
* Utils.waitNode("div", 1000).then( $div =>{
|
|
112
|
+
* console.log($div); // $div => HTMLDivELement | null
|
|
113
|
+
* })
|
|
114
|
+
*/
|
|
115
|
+
waitNode<K extends keyof HTMLElementTagNameMap>(selector: K, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
|
|
116
|
+
waitNode<T extends Element>(selector: string, timeout: number): Promise<T | null>;
|
|
117
|
+
/**
|
|
118
|
+
* 等待元素出现
|
|
119
|
+
* @param selectorList CSS选择器数组
|
|
120
|
+
* @param timeout 超时时间,默认0
|
|
121
|
+
* @example
|
|
122
|
+
* Utils.waitNode(["div"], 1000).then( [$div] =>{
|
|
123
|
+
* console.log($div); // $div => HTMLDivELement[] | null
|
|
124
|
+
* })
|
|
125
|
+
*/
|
|
126
|
+
waitNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
|
|
127
|
+
waitNode<T extends Element[]>(selectorList: string[], timeout: number): Promise<T | null>;
|
|
128
|
+
/**
|
|
129
|
+
* 等待任意元素出现
|
|
130
|
+
* @param selectorList CSS选择器数组
|
|
131
|
+
* @param parent (可选)监听的父元素
|
|
132
|
+
* @example
|
|
133
|
+
* Utils.waitAnyNode(["div","div"]).then( $div =>{
|
|
134
|
+
* console.log($div); // $div => HTMLDivELement 这里是第一个
|
|
135
|
+
* })
|
|
136
|
+
* Utils.waitAnyNode(["a","div"], document).then( $a =>{
|
|
137
|
+
* console.log($a); // $a => HTMLAnchorElement 这里是第一个
|
|
138
|
+
* })
|
|
139
|
+
*/
|
|
140
|
+
waitAnyNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<HTMLElementTagNameMap[K]>;
|
|
141
|
+
waitAnyNode<T extends Element>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<T>;
|
|
142
|
+
/**
|
|
143
|
+
* 等待任意元素出现
|
|
144
|
+
* @param selectorList CSS选择器数组
|
|
145
|
+
* @param parent 父元素,默认document
|
|
146
|
+
* @param timeout 超时时间,默认0
|
|
147
|
+
* @example
|
|
148
|
+
* Utils.waitAnyNode(["div","div"], document, 10000).then( $div =>{
|
|
149
|
+
* console.log($div); // $div => HTMLDivELement | null
|
|
150
|
+
* })
|
|
151
|
+
*/
|
|
152
|
+
waitAnyNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
|
|
153
|
+
waitAnyNode<T extends Element>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
|
|
154
|
+
/**
|
|
155
|
+
* 等待任意元素出现
|
|
156
|
+
* @param selectorList CSS选择器数组
|
|
157
|
+
* @param timeout 超时时间,默认0
|
|
158
|
+
* @example
|
|
159
|
+
* Utils.waitAnyNode(["div","div"], 10000).then( $div =>{
|
|
160
|
+
* console.log($div); // $div => HTMLDivELement | null
|
|
161
|
+
* })
|
|
162
|
+
*/
|
|
163
|
+
waitAnyNode<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<HTMLElementTagNameMap[K] | null>;
|
|
164
|
+
waitAnyNode<T extends Element>(selectorList: string[], timeout: number): Promise<T | null>;
|
|
165
|
+
/**
|
|
166
|
+
* 等待元素数组出现
|
|
167
|
+
* @param selector CSS选择器
|
|
168
|
+
* @param parent (可选)监听的父元素
|
|
169
|
+
* @example
|
|
170
|
+
* Utils.waitNodeList("div").then( $result =>{
|
|
171
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
172
|
+
* })
|
|
173
|
+
* Utils.waitNodeList("div", document).then( $result =>{
|
|
174
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
175
|
+
* })
|
|
176
|
+
*/
|
|
177
|
+
waitNodeList<T extends keyof HTMLElementTagNameMap>(selector: T, parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<HTMLElementTagNameMap[T]>>;
|
|
178
|
+
waitNodeList<T extends NodeListOf<Element>>(selector: string, parent?: Node | Element | Document | HTMLElement): Promise<T>;
|
|
179
|
+
/**
|
|
180
|
+
* 等待元素数组出现
|
|
181
|
+
* @param selectorList CSS选择器数组
|
|
182
|
+
* @param parent (可选)监听的父元素
|
|
183
|
+
* @example
|
|
184
|
+
* Utils.waitNodeList(["div"]).then( $result =>{
|
|
185
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>[]
|
|
186
|
+
* })
|
|
187
|
+
* Utils.waitNodeList(["div"], document).then( $result =>{
|
|
188
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>[]
|
|
189
|
+
* })
|
|
190
|
+
*/
|
|
191
|
+
waitNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<HTMLElementTagNameMap[K]>[]>;
|
|
192
|
+
waitNodeList<T extends NodeListOf<Element>[]>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<T>;
|
|
193
|
+
/**
|
|
194
|
+
* 等待元素数组出现
|
|
195
|
+
* @param selector CSS选择器
|
|
196
|
+
* @param parent 监听的父元素
|
|
197
|
+
* @param timeout 超时时间,默认0
|
|
198
|
+
* @example
|
|
199
|
+
* Utils.waitNodeList("div", document, 10000).then( $result =>{
|
|
200
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
201
|
+
* })
|
|
202
|
+
*/
|
|
203
|
+
waitNodeList<T extends NodeListOf<Element>>(selector: string, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
|
|
204
|
+
waitNodeList<K extends keyof HTMLElementTagNameMap>(selector: K, parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
|
|
205
|
+
/**
|
|
206
|
+
* 等待元素数组出现
|
|
207
|
+
* @param selectorList CSS选择器数组
|
|
208
|
+
* @param parent 监听的父元素
|
|
209
|
+
* @param timeout 超时时间,默认0
|
|
210
|
+
* @example
|
|
211
|
+
* Utils.waitNodeList(["div"], document, 10000).then( $result =>{
|
|
212
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>[] | null
|
|
213
|
+
* })
|
|
214
|
+
*/
|
|
215
|
+
waitNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]>[] | null>;
|
|
216
|
+
waitNodeList<T extends NodeListOf<Element>[]>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<T | null>;
|
|
217
|
+
/**
|
|
218
|
+
* 等待元素数组出现
|
|
219
|
+
* @param selector CSS选择器数组
|
|
220
|
+
* @param timeout 超时时间,默认0
|
|
221
|
+
* @example
|
|
222
|
+
* Utils.waitNodeList("div", 10000).then( $result =>{
|
|
223
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
224
|
+
* })
|
|
225
|
+
*/
|
|
226
|
+
waitNodeList<K extends keyof HTMLElementTagNameMap>(selector: K[], timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
|
|
227
|
+
waitNodeList<T extends NodeListOf<Element>>(selector: string[], timeout: number): Promise<T | null>;
|
|
228
|
+
/**
|
|
229
|
+
* 等待元素数组出现
|
|
230
|
+
* @param selectorList CSS选择器数组
|
|
231
|
+
* @param timeout 超时时间,默认0
|
|
232
|
+
* @example
|
|
233
|
+
* Utils.waitNodeList(["div"], 10000).then( $result =>{
|
|
234
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>[] | null
|
|
235
|
+
* })
|
|
236
|
+
*/
|
|
237
|
+
waitNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]>[] | null>;
|
|
238
|
+
waitNodeList<T extends NodeListOf<Element>>(selectorList: string[], timeout: number): Promise<T[] | null>;
|
|
239
|
+
/**
|
|
240
|
+
* 等待任意元素数组出现
|
|
241
|
+
* @param selectorList CSS选择器数组
|
|
242
|
+
* @param parent (可选)监听的父元素
|
|
243
|
+
* @example
|
|
244
|
+
* Utils.waitAnyNodeList(["div","a"]).then( $result =>{
|
|
245
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
246
|
+
* })
|
|
247
|
+
* Utils.waitAnyNodeList(["div","a"], document).then( $result =>{
|
|
248
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
249
|
+
* })
|
|
250
|
+
*/
|
|
251
|
+
waitAnyNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<HTMLElementTagNameMap[K]>>;
|
|
252
|
+
waitAnyNodeList<T extends Element>(selectorList: string[], parent?: Node | Element | Document | HTMLElement): Promise<NodeListOf<T>>;
|
|
253
|
+
/**
|
|
254
|
+
* 等待任意元素数组出现
|
|
255
|
+
* @param selectorList CSS选择器数组
|
|
256
|
+
* @param parent 父元素,默认document
|
|
257
|
+
* @param timeout 超时时间,默认0
|
|
258
|
+
* @example
|
|
259
|
+
* Utils.waitAnyNodeList(["div","a"], document, 10000).then( $result =>{
|
|
260
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
261
|
+
* })
|
|
262
|
+
*/
|
|
263
|
+
waitAnyNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
|
|
264
|
+
waitAnyNodeList<T extends Element>(selectorList: string[], parent: Node | Element | Document | HTMLElement, timeout: number): Promise<NodeListOf<T> | null>;
|
|
265
|
+
/**
|
|
266
|
+
* 等待任意元素出现
|
|
267
|
+
* @param selectorList CSS选择器数组
|
|
268
|
+
* @param timeout 超时时间,默认0
|
|
269
|
+
* @example
|
|
270
|
+
* Utils.waitAnyNodeList(["div","div"], 10000).then( $result =>{
|
|
271
|
+
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
272
|
+
* })
|
|
273
|
+
*/
|
|
274
|
+
waitAnyNodeList<K extends keyof HTMLElementTagNameMap>(selectorList: K[], timeout: number): Promise<NodeListOf<HTMLElementTagNameMap[K]> | null>;
|
|
275
|
+
waitAnyNodeList<T extends Element>(selectorList: string[], timeout: number): Promise<NodeListOf<T> | null>;
|
|
276
|
+
}
|
|
277
|
+
declare const elementWait: ElementWait;
|
|
278
|
+
export { elementWait, ElementWait };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { WindowApiOption } from "./types/WindowApi";
|
|
2
|
+
declare class Utils {
|
|
3
|
+
private windowApi;
|
|
4
|
+
constructor(option?: WindowApiOption);
|
|
5
|
+
/**
|
|
6
|
+
* 判断对象是否是jQuery对象
|
|
7
|
+
* @param target
|
|
8
|
+
* @returns
|
|
9
|
+
* + true 是jQuery对象
|
|
10
|
+
* + false 不是jQuery对象
|
|
11
|
+
* @example
|
|
12
|
+
* Utils.isJQuery($("a"))
|
|
13
|
+
* > true
|
|
14
|
+
*/
|
|
15
|
+
isJQuery(target: any): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
|
|
18
|
+
* @param target 目标数据
|
|
19
|
+
* @param source 源数据
|
|
20
|
+
* @param isAdd 是否可以追加键,默认false
|
|
21
|
+
* @example
|
|
22
|
+
* Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
|
|
23
|
+
* >
|
|
24
|
+
* {
|
|
25
|
+
"1": 1,
|
|
26
|
+
"2": {
|
|
27
|
+
"3": 4
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
*/
|
|
31
|
+
assign<T1, T2 extends object, T3 extends boolean>(target: T1, source: T2, isAdd?: T3): T3 extends true ? T1 & T2 : T1;
|
|
32
|
+
/**
|
|
33
|
+
* 监听页面元素改变并处理
|
|
34
|
+
* @param target 需要监听的元素,如果不存在,可以等待它出现
|
|
35
|
+
* @param observer_config MutationObserver的配置
|
|
36
|
+
* @example
|
|
37
|
+
Utils.mutationObserver(document.querySelector("div.xxxx"),{
|
|
38
|
+
"callback":(mutations, observer)=>{},
|
|
39
|
+
"config":{childList:true,attributes:true}
|
|
40
|
+
});
|
|
41
|
+
* @example
|
|
42
|
+
Utils.mutationObserver(document.querySelectorAll("div.xxxx"),{
|
|
43
|
+
"callback":(mutations, observer)=>{},
|
|
44
|
+
"config":{childList:true,attributes:true}}
|
|
45
|
+
);
|
|
46
|
+
* @example
|
|
47
|
+
Utils.mutationObserver($("div.xxxx"),{
|
|
48
|
+
"callback":(mutations, observer)=>{},
|
|
49
|
+
"config":{childList:true,attributes:true}}
|
|
50
|
+
);
|
|
51
|
+
**/
|
|
52
|
+
mutationObserver(target: HTMLElement | Node | NodeList | Document, observer_config: {
|
|
53
|
+
/**
|
|
54
|
+
* observer的配置
|
|
55
|
+
*/
|
|
56
|
+
config?: MutationObserverInit;
|
|
57
|
+
/**
|
|
58
|
+
* 是否主动触发一次
|
|
59
|
+
*/
|
|
60
|
+
immediate?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* 触发的回调函数
|
|
63
|
+
*/
|
|
64
|
+
callback: MutationCallback;
|
|
65
|
+
}): MutationObserver;
|
|
66
|
+
}
|
|
67
|
+
declare const utils: Utils;
|
|
68
|
+
export { utils, Utils };
|