@whitesev/domutils 1.8.4 → 1.8.6
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 +34 -23
- package/dist/index.amd.js.map +1 -1
- package/dist/index.amd.min.js +1 -1
- package/dist/index.amd.min.js.map +1 -1
- package/dist/index.cjs.js +34 -23
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +34 -23
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.iife.js +34 -23
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +1 -1
- package/dist/index.iife.min.js.map +1 -1
- package/dist/index.system.js +34 -23
- package/dist/index.system.js.map +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/dist/index.umd.js +34 -23
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/types/src/ElementSelector.d.ts +19 -8
- package/dist/types/src/ElementWait.d.ts +49 -27
- package/package.json +2 -2
- package/src/ElementSelector.ts +36 -9
- package/src/ElementWait.ts +73 -47
- package/src/index.ts +1 -1
|
@@ -12,7 +12,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
12
12
|
* @param timeout 超时时间,默认0
|
|
13
13
|
* @param parent (可选)父元素,默认document
|
|
14
14
|
* @example
|
|
15
|
-
*
|
|
15
|
+
* DOMUtils.wait(()=> {
|
|
16
16
|
* let $test = document.querySelector("#test");
|
|
17
17
|
* return {
|
|
18
18
|
* success: $test !== null,
|
|
@@ -40,26 +40,48 @@ declare class ElementWait extends ElementSelector {
|
|
|
40
40
|
*/
|
|
41
41
|
data: T;
|
|
42
42
|
}, timeout?: number, parent?: Node | Element | Document | HTMLElement): Promise<T | null>;
|
|
43
|
+
/**
|
|
44
|
+
* 等待元素出现
|
|
45
|
+
* @param selectorFn 获取元素的函数
|
|
46
|
+
* @example
|
|
47
|
+
* DOMUtils.waitNode(()=>document.querySelector("div")).then( $div =>{
|
|
48
|
+
* console.log($div); // $div => HTMLDivELement
|
|
49
|
+
* })
|
|
50
|
+
*/
|
|
51
|
+
waitNode<K>(selectorFn: () => K | null | undefined): Promise<K>;
|
|
43
52
|
/**
|
|
44
53
|
* 等待元素出现
|
|
45
54
|
* @param selectorFn 获取元素的函数
|
|
46
55
|
* @param timeout 超时时间,默认0
|
|
47
56
|
* @example
|
|
48
|
-
*
|
|
57
|
+
* DOMUtils.waitNode(()=>document.querySelector("div"), 1000).then( $div =>{
|
|
49
58
|
* console.log($div); // $div => HTMLDivELement | null
|
|
50
59
|
* })
|
|
51
60
|
*/
|
|
52
|
-
waitNode<K>(selectorFn: () => K | null | undefined): Promise<K>;
|
|
53
61
|
waitNode<K>(selectorFn: () => K | null | undefined, timeout: number): Promise<K | null | undefined>;
|
|
62
|
+
/**
|
|
63
|
+
* 等待元素出现
|
|
64
|
+
* @param selectorFn 获取元素的函数
|
|
65
|
+
* @param parent 父元素
|
|
66
|
+
* @param timeout 超时时间,默认0
|
|
67
|
+
* @example
|
|
68
|
+
* DOMUtils.waitNode(()=>document.querySelector("div"), document).then( $div =>{
|
|
69
|
+
* console.log($div); // $div => HTMLDivELement
|
|
70
|
+
* })
|
|
71
|
+
* DOMUtils.waitNode(()=>document.querySelector("div"), document, 1000).then( $div =>{
|
|
72
|
+
* console.log($div); // $div => HTMLDivELement | null
|
|
73
|
+
* })
|
|
74
|
+
*/
|
|
75
|
+
waitNode<K>(selectorFn: () => K | null | undefined, parent: Node | Element | Document | HTMLElement, timeout?: number): Promise<K | null | undefined>;
|
|
54
76
|
/**
|
|
55
77
|
* 等待元素出现
|
|
56
78
|
* @param selector CSS选择器
|
|
57
79
|
* @param parent (可选)父元素,默认document
|
|
58
80
|
* @example
|
|
59
|
-
*
|
|
81
|
+
* DOMUtils.waitNode("div").then( $div =>{
|
|
60
82
|
* console.log($div); // div => HTMLDivELement
|
|
61
83
|
* })
|
|
62
|
-
*
|
|
84
|
+
* DOMUtils.waitNode("div", document).then( $div =>{
|
|
63
85
|
* console.log($div); // div => HTMLDivELement
|
|
64
86
|
* })
|
|
65
87
|
*/
|
|
@@ -70,10 +92,10 @@ declare class ElementWait extends ElementSelector {
|
|
|
70
92
|
* @param selectorList CSS选择器数组
|
|
71
93
|
* @param parent (可选)父元素,默认document
|
|
72
94
|
* @example
|
|
73
|
-
*
|
|
95
|
+
* DOMUtils.waitNode(["div"]).then( ([$div]) =>{
|
|
74
96
|
* console.log($div); // div => HTMLDivELement[]
|
|
75
97
|
* })
|
|
76
|
-
*
|
|
98
|
+
* DOMUtils.waitNode(["div"], document).then( ([$div]) =>{
|
|
77
99
|
* console.log($div); // div => HTMLDivELement[]
|
|
78
100
|
* })
|
|
79
101
|
*/
|
|
@@ -85,7 +107,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
85
107
|
* @param parent 父元素,默认document
|
|
86
108
|
* @param timeout 超时时间,默认0
|
|
87
109
|
* @example
|
|
88
|
-
*
|
|
110
|
+
* DOMUtils.waitNode("div", document, 1000).then( $div =>{
|
|
89
111
|
* console.log($div); // $div => HTMLDivELement | null
|
|
90
112
|
* })
|
|
91
113
|
*/
|
|
@@ -97,7 +119,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
97
119
|
* @param parent 父元素,默认document
|
|
98
120
|
* @param timeout 超时时间,默认0
|
|
99
121
|
* @example
|
|
100
|
-
*
|
|
122
|
+
* DOMUtils.waitNode(["div"], document, 1000).then( ([$div]) =>{
|
|
101
123
|
* console.log($div); // $div => HTMLDivELement[] | null
|
|
102
124
|
* })
|
|
103
125
|
*/
|
|
@@ -108,7 +130,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
108
130
|
* @param selector CSS选择器
|
|
109
131
|
* @param timeout 超时时间,默认0
|
|
110
132
|
* @example
|
|
111
|
-
*
|
|
133
|
+
* DOMUtils.waitNode("div", 1000).then( $div =>{
|
|
112
134
|
* console.log($div); // $div => HTMLDivELement | null
|
|
113
135
|
* })
|
|
114
136
|
*/
|
|
@@ -119,7 +141,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
119
141
|
* @param selectorList CSS选择器数组
|
|
120
142
|
* @param timeout 超时时间,默认0
|
|
121
143
|
* @example
|
|
122
|
-
*
|
|
144
|
+
* DOMUtils.waitNode(["div"], 1000).then( [$div] =>{
|
|
123
145
|
* console.log($div); // $div => HTMLDivELement[] | null
|
|
124
146
|
* })
|
|
125
147
|
*/
|
|
@@ -130,10 +152,10 @@ declare class ElementWait extends ElementSelector {
|
|
|
130
152
|
* @param selectorList CSS选择器数组
|
|
131
153
|
* @param parent (可选)监听的父元素
|
|
132
154
|
* @example
|
|
133
|
-
*
|
|
155
|
+
* DOMUtils.waitAnyNode(["div","div"]).then( $div =>{
|
|
134
156
|
* console.log($div); // $div => HTMLDivELement 这里是第一个
|
|
135
157
|
* })
|
|
136
|
-
*
|
|
158
|
+
* DOMUtils.waitAnyNode(["a","div"], document).then( $a =>{
|
|
137
159
|
* console.log($a); // $a => HTMLAnchorElement 这里是第一个
|
|
138
160
|
* })
|
|
139
161
|
*/
|
|
@@ -145,7 +167,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
145
167
|
* @param parent 父元素,默认document
|
|
146
168
|
* @param timeout 超时时间,默认0
|
|
147
169
|
* @example
|
|
148
|
-
*
|
|
170
|
+
* DOMUtils.waitAnyNode(["div","div"], document, 10000).then( $div =>{
|
|
149
171
|
* console.log($div); // $div => HTMLDivELement | null
|
|
150
172
|
* })
|
|
151
173
|
*/
|
|
@@ -156,7 +178,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
156
178
|
* @param selectorList CSS选择器数组
|
|
157
179
|
* @param timeout 超时时间,默认0
|
|
158
180
|
* @example
|
|
159
|
-
*
|
|
181
|
+
* DOMUtils.waitAnyNode(["div","div"], 10000).then( $div =>{
|
|
160
182
|
* console.log($div); // $div => HTMLDivELement | null
|
|
161
183
|
* })
|
|
162
184
|
*/
|
|
@@ -167,10 +189,10 @@ declare class ElementWait extends ElementSelector {
|
|
|
167
189
|
* @param selector CSS选择器
|
|
168
190
|
* @param parent (可选)监听的父元素
|
|
169
191
|
* @example
|
|
170
|
-
*
|
|
192
|
+
* DOMUtils.waitNodeList("div").then( $result =>{
|
|
171
193
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
172
194
|
* })
|
|
173
|
-
*
|
|
195
|
+
* DOMUtils.waitNodeList("div", document).then( $result =>{
|
|
174
196
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
175
197
|
* })
|
|
176
198
|
*/
|
|
@@ -181,10 +203,10 @@ declare class ElementWait extends ElementSelector {
|
|
|
181
203
|
* @param selectorList CSS选择器数组
|
|
182
204
|
* @param parent (可选)监听的父元素
|
|
183
205
|
* @example
|
|
184
|
-
*
|
|
206
|
+
* DOMUtils.waitNodeList(["div"]).then( $result =>{
|
|
185
207
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>[]
|
|
186
208
|
* })
|
|
187
|
-
*
|
|
209
|
+
* DOMUtils.waitNodeList(["div"], document).then( $result =>{
|
|
188
210
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>[]
|
|
189
211
|
* })
|
|
190
212
|
*/
|
|
@@ -196,7 +218,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
196
218
|
* @param parent 监听的父元素
|
|
197
219
|
* @param timeout 超时时间,默认0
|
|
198
220
|
* @example
|
|
199
|
-
*
|
|
221
|
+
* DOMUtils.waitNodeList("div", document, 10000).then( $result =>{
|
|
200
222
|
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
201
223
|
* })
|
|
202
224
|
*/
|
|
@@ -208,7 +230,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
208
230
|
* @param parent 监听的父元素
|
|
209
231
|
* @param timeout 超时时间,默认0
|
|
210
232
|
* @example
|
|
211
|
-
*
|
|
233
|
+
* DOMUtils.waitNodeList(["div"], document, 10000).then( $result =>{
|
|
212
234
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>[] | null
|
|
213
235
|
* })
|
|
214
236
|
*/
|
|
@@ -219,7 +241,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
219
241
|
* @param selector CSS选择器数组
|
|
220
242
|
* @param timeout 超时时间,默认0
|
|
221
243
|
* @example
|
|
222
|
-
*
|
|
244
|
+
* DOMUtils.waitNodeList("div", 10000).then( $result =>{
|
|
223
245
|
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
224
246
|
* })
|
|
225
247
|
*/
|
|
@@ -230,7 +252,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
230
252
|
* @param selectorList CSS选择器数组
|
|
231
253
|
* @param timeout 超时时间,默认0
|
|
232
254
|
* @example
|
|
233
|
-
*
|
|
255
|
+
* DOMUtils.waitNodeList(["div"], 10000).then( $result =>{
|
|
234
256
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>[] | null
|
|
235
257
|
* })
|
|
236
258
|
*/
|
|
@@ -241,10 +263,10 @@ declare class ElementWait extends ElementSelector {
|
|
|
241
263
|
* @param selectorList CSS选择器数组
|
|
242
264
|
* @param parent (可选)监听的父元素
|
|
243
265
|
* @example
|
|
244
|
-
*
|
|
266
|
+
* DOMUtils.waitAnyNodeList(["div","a"]).then( $result =>{
|
|
245
267
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
246
268
|
* })
|
|
247
|
-
*
|
|
269
|
+
* DOMUtils.waitAnyNodeList(["div","a"], document).then( $result =>{
|
|
248
270
|
* console.log($result); // $result => NodeListOf<HTMLDivElement>
|
|
249
271
|
* })
|
|
250
272
|
*/
|
|
@@ -256,7 +278,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
256
278
|
* @param parent 父元素,默认document
|
|
257
279
|
* @param timeout 超时时间,默认0
|
|
258
280
|
* @example
|
|
259
|
-
*
|
|
281
|
+
* DOMUtils.waitAnyNodeList(["div","a"], document, 10000).then( $result =>{
|
|
260
282
|
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
261
283
|
* })
|
|
262
284
|
*/
|
|
@@ -267,7 +289,7 @@ declare class ElementWait extends ElementSelector {
|
|
|
267
289
|
* @param selectorList CSS选择器数组
|
|
268
290
|
* @param timeout 超时时间,默认0
|
|
269
291
|
* @example
|
|
270
|
-
*
|
|
292
|
+
* DOMUtils.waitAnyNodeList(["div","div"], 10000).then( $result =>{
|
|
271
293
|
* console.log($result); // $result => NodeListOf<HTMLDivElement> | null
|
|
272
294
|
* })
|
|
273
295
|
*/
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@whitesev/domutils",
|
|
4
|
-
"version": "1.8.
|
|
4
|
+
"version": "1.8.6",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "适合在浏览器中操作DOM的常用工具类",
|
|
7
7
|
"main": "dist/index.cjs.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"rollup-plugin-clear": "^2.0.7",
|
|
53
53
|
"tslib": "^2.8.1",
|
|
54
54
|
"typescript": "^5.9.3",
|
|
55
|
-
"typescript-eslint": "^8.50.
|
|
55
|
+
"typescript-eslint": "^8.50.1"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
58
|
"lint": "eslint .",
|
package/src/ElementSelector.ts
CHANGED
|
@@ -9,11 +9,17 @@ class ElementSelector {
|
|
|
9
9
|
/**
|
|
10
10
|
* 选择器,可使用以下的额外语法
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* **前置语法**
|
|
14
|
+
*
|
|
15
|
+
* + `xpath:` 作用:执行xpath语法,会对当前js环境下的`Document`进行节点获取
|
|
16
|
+
*
|
|
17
|
+
* **末尾语法**
|
|
18
|
+
* + `:contains([text])` 作用: 找到包含指定文本内容的指定元素
|
|
19
|
+
* + `:empty` 作用:找到既没有文本内容也没有子元素的指定元素
|
|
20
|
+
* + `:regexp([text])` 作用: 找到符合正则表达式的内容的指定元素
|
|
15
21
|
* @param selector 选择器
|
|
16
|
-
* @param parent
|
|
22
|
+
* @param parent 指定父元素,默认为`document`
|
|
17
23
|
* @example
|
|
18
24
|
* DOMUtils.selector("div:contains('测试')")
|
|
19
25
|
* > div.xxx
|
|
@@ -41,11 +47,16 @@ class ElementSelector {
|
|
|
41
47
|
/**
|
|
42
48
|
* 选择器,可使用以下的额外语法
|
|
43
49
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* +
|
|
50
|
+
* **前置语法**
|
|
51
|
+
*
|
|
52
|
+
* + `xpath:` 作用:执行xpath语法,会对当前js环境下的`Document`进行节点获取
|
|
53
|
+
*
|
|
54
|
+
* **末尾语法**
|
|
55
|
+
* + `:contains([text])` 作用: 找到包含指定文本内容的指定元素
|
|
56
|
+
* + `:empty` 作用:找到既没有文本内容也没有子元素的指定元素
|
|
57
|
+
* + `:regexp([text])` 作用: 找到符合正则表达式的内容的指定元素
|
|
47
58
|
* @param selector 选择器
|
|
48
|
-
* @param parent
|
|
59
|
+
* @param parent 指定父元素,默认为`document`
|
|
49
60
|
* @example
|
|
50
61
|
* DOMUtils.selectorAll("div:contains('测试')")
|
|
51
62
|
* > [div.xxx]
|
|
@@ -74,7 +85,23 @@ class ElementSelector {
|
|
|
74
85
|
const context = this;
|
|
75
86
|
parent = parent || context.windowApi.document;
|
|
76
87
|
selector = selector.trim();
|
|
77
|
-
if (selector.
|
|
88
|
+
if (selector.startsWith("xpath:")) {
|
|
89
|
+
selector = selector.replace(/^xpath:/i, "");
|
|
90
|
+
const xpathResult = context.windowApi.document.evaluate(
|
|
91
|
+
selector,
|
|
92
|
+
parent,
|
|
93
|
+
null,
|
|
94
|
+
XPathResult.ORDERED_NODE_ITERATOR_TYPE,
|
|
95
|
+
null
|
|
96
|
+
);
|
|
97
|
+
const result: E[] = [];
|
|
98
|
+
let iterateNext = xpathResult.iterateNext();
|
|
99
|
+
while (iterateNext) {
|
|
100
|
+
result.push(iterateNext as E);
|
|
101
|
+
iterateNext = xpathResult.iterateNext();
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
} else if (selector.match(/[^\s]{1}:empty$/gi)) {
|
|
78
105
|
// empty 语法
|
|
79
106
|
selector = selector.replace(/:empty$/gi, "");
|
|
80
107
|
return Array.from(parent.querySelectorAll<E>(selector)).filter(($ele) => {
|