@whitesev/domutils 1.4.0 → 1.4.3
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 +77 -42
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +77 -42
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +77 -42
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +77 -42
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +77 -42
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +77 -42
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtilsEvent.d.ts +8 -5
- package/dist/types/src/types/DOMUtilsEvent.d.ts +4 -4
- package/package.json +4 -3
- package/src/DOMUtils.ts +1 -1
- package/src/DOMUtilsEvent.ts +106 -63
- package/src/types/DOMUtilsEvent.d.ts +4 -4
|
@@ -67,7 +67,7 @@ export declare class DOMUtilsEvent {
|
|
|
67
67
|
* console.log("事件触发",event)
|
|
68
68
|
* })
|
|
69
69
|
*/
|
|
70
|
-
on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | undefined | null, callback: (event: DOMUtils_Event[T]) => void, option?: boolean | AddEventListenerOptions): void;
|
|
70
|
+
on<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector: string | string[] | undefined | null, callback: (event: DOMUtils_Event[T]) => void, option?: boolean | AddEventListenerOptions): void;
|
|
71
71
|
/**
|
|
72
72
|
* 绑定事件
|
|
73
73
|
* @param element 需要绑定的元素|元素数组|window
|
|
@@ -92,7 +92,7 @@ export declare class DOMUtilsEvent {
|
|
|
92
92
|
* console.log("事件触发",event)
|
|
93
93
|
* })
|
|
94
94
|
*/
|
|
95
|
-
on<T extends Event>(element: DOMUtilsElementEventType, eventType: string, selector: string | undefined | null, callback: (event: T) => void, option?: boolean | AddEventListenerOptions): void;
|
|
95
|
+
on<T extends Event>(element: DOMUtilsElementEventType, eventType: string, selector: string | string[] | (() => string | string[]) | undefined | null, callback: (event: T) => void, option?: boolean | AddEventListenerOptions): void;
|
|
96
96
|
/**
|
|
97
97
|
* 取消绑定事件
|
|
98
98
|
* @param element 需要取消绑定的元素|元素数组
|
|
@@ -135,7 +135,7 @@ export declare class DOMUtilsEvent {
|
|
|
135
135
|
* DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
|
|
136
136
|
* DOMUtils.off("a.xx",["click","tap","hover"])
|
|
137
137
|
*/
|
|
138
|
-
off<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector?:
|
|
138
|
+
off<T extends DOMUtils_EventType>(element: DOMUtilsElementEventType, eventType: T | T[], selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined, callback?: (event: DOMUtils_Event[T]) => void, option?: boolean | AddEventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
|
|
139
139
|
/**
|
|
140
140
|
* 取消绑定事件
|
|
141
141
|
* @param element 需要取消绑定的元素|元素数组
|
|
@@ -150,7 +150,7 @@ export declare class DOMUtilsEvent {
|
|
|
150
150
|
* DOMUtils.off(document.querySelector("a.xx"),"click tap hover")
|
|
151
151
|
* DOMUtils.off("a.xx",["click","tap","hover"])
|
|
152
152
|
*/
|
|
153
|
-
off<T extends Event>(element: DOMUtilsElementEventType, eventType: string, selector?:
|
|
153
|
+
off<T extends Event>(element: DOMUtilsElementEventType, eventType: string, selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined, callback?: (event: T) => void, option?: boolean | AddEventListenerOptions, filter?: (value: DOMUtilsEventListenerOptionsAttribute, index: number, array: DOMUtilsEventListenerOptionsAttribute[]) => boolean): void;
|
|
154
154
|
/**
|
|
155
155
|
* 取消绑定所有的事件
|
|
156
156
|
* @param element 需要取消绑定的元素|元素数组
|
|
@@ -192,7 +192,7 @@ export declare class DOMUtilsEvent {
|
|
|
192
192
|
* @param element 需要触发的元素|元素数组|window
|
|
193
193
|
* @param eventType 需要触发的事件
|
|
194
194
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
195
|
-
* @param useDispatchToTriggerEvent 是否使用dispatchEvent
|
|
195
|
+
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true
|
|
196
196
|
* @example
|
|
197
197
|
* // 触发元素a.xx的click事件
|
|
198
198
|
* DOMUtils.trigger(document.querySelector("a.xx"),"click")
|
|
@@ -411,6 +411,9 @@ export declare class DOMUtilsEvent {
|
|
|
411
411
|
* @example
|
|
412
412
|
* DOMUtils.selectorAll("div:regexp('^xxxx$')")
|
|
413
413
|
* > [div.xxx]
|
|
414
|
+
* @example
|
|
415
|
+
* DOMUtils.selectorAll("div:regexp(/^xxx/ig)")
|
|
416
|
+
* > [div.xxx]
|
|
414
417
|
*/
|
|
415
418
|
selectorAll<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K][];
|
|
416
419
|
selectorAll<E extends Element = Element>(selector: string): E[];
|
|
@@ -205,9 +205,9 @@ export declare type DOMUtils_EventType = keyof DOMUtils_Event;
|
|
|
205
205
|
*/
|
|
206
206
|
export declare interface DOMUtilsEventListenerOptionsAttribute {
|
|
207
207
|
/**
|
|
208
|
-
*
|
|
208
|
+
* DOMUtils的ownCallBack,元素上的监听事件就是它,移除事件时也需要传入这个函数
|
|
209
209
|
*/
|
|
210
|
-
callback: () => void;
|
|
210
|
+
callback: (event: Event) => void;
|
|
211
211
|
/**
|
|
212
212
|
* 属性配置
|
|
213
213
|
*/
|
|
@@ -215,11 +215,11 @@ export declare interface DOMUtilsEventListenerOptionsAttribute {
|
|
|
215
215
|
/**
|
|
216
216
|
* 用户添加的事件
|
|
217
217
|
*/
|
|
218
|
-
originCallBack: () => void;
|
|
218
|
+
originCallBack: (event: Event) => void;
|
|
219
219
|
/**
|
|
220
220
|
* 子元素选择器
|
|
221
221
|
*/
|
|
222
|
-
selector?: string;
|
|
222
|
+
selector?: string[];
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
export declare type DOMUtilsElementEventType =
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whitesev/domutils",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "使用js重新对jQuery的部分函数进行了仿写",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -36,11 +36,12 @@
|
|
|
36
36
|
"tslib": "^2.6.3"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"typescript": "^5.
|
|
39
|
+
"typescript": "^5.7.2"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"dev": "rollup --config --watch",
|
|
43
43
|
"build": "rollup --config",
|
|
44
|
-
"build:all": "rollup --config"
|
|
44
|
+
"build:all": "rollup --config",
|
|
45
|
+
"build:all-new": "rollup --config"
|
|
45
46
|
}
|
|
46
47
|
}
|
package/src/DOMUtils.ts
CHANGED
package/src/DOMUtilsEvent.ts
CHANGED
|
@@ -92,7 +92,7 @@ export class DOMUtilsEvent {
|
|
|
92
92
|
on<T extends DOMUtils_EventType>(
|
|
93
93
|
element: DOMUtilsElementEventType,
|
|
94
94
|
eventType: T | T[],
|
|
95
|
-
selector: string | undefined | null,
|
|
95
|
+
selector: string | string[] | undefined | null,
|
|
96
96
|
callback: (event: DOMUtils_Event[T]) => void,
|
|
97
97
|
option?: boolean | AddEventListenerOptions
|
|
98
98
|
): void;
|
|
@@ -123,7 +123,7 @@ export class DOMUtilsEvent {
|
|
|
123
123
|
on<T extends Event>(
|
|
124
124
|
element: DOMUtilsElementEventType,
|
|
125
125
|
eventType: string,
|
|
126
|
-
selector: string | undefined | null,
|
|
126
|
+
selector: string | string[] | (() => string | string[]) | undefined | null,
|
|
127
127
|
callback: (event: T) => void,
|
|
128
128
|
option?: boolean | AddEventListenerOptions
|
|
129
129
|
): void;
|
|
@@ -139,7 +139,7 @@ export class DOMUtilsEvent {
|
|
|
139
139
|
| null
|
|
140
140
|
| typeof globalThis,
|
|
141
141
|
eventType: DOMUtils_EventType | DOMUtils_EventType[] | string,
|
|
142
|
-
selector: string | undefined | ((event: T) => void) | null,
|
|
142
|
+
selector: string | undefined | string[] | ((event: T) => void) | null,
|
|
143
143
|
callback?: ((event: T) => void) | boolean | AddEventListenerOptions,
|
|
144
144
|
option?: boolean | AddEventListenerOptions
|
|
145
145
|
) {
|
|
@@ -190,15 +190,23 @@ export class DOMUtilsEvent {
|
|
|
190
190
|
} else {
|
|
191
191
|
elementList.push(element as HTMLElement);
|
|
192
192
|
}
|
|
193
|
-
|
|
193
|
+
// 事件名
|
|
194
194
|
let eventTypeList: string[] = [];
|
|
195
195
|
if (Array.isArray(eventType)) {
|
|
196
196
|
eventTypeList = eventTypeList.concat(eventType as string[]);
|
|
197
197
|
} else if (typeof eventType === "string") {
|
|
198
198
|
eventTypeList = eventTypeList.concat(eventType.split(" "));
|
|
199
199
|
}
|
|
200
|
-
|
|
201
|
-
let
|
|
200
|
+
// 子元素选择器
|
|
201
|
+
let selectorList: string[] = [];
|
|
202
|
+
if (Array.isArray(selector)) {
|
|
203
|
+
selectorList = selectorList.concat(selector);
|
|
204
|
+
} else if (typeof selector === "string") {
|
|
205
|
+
selectorList.push(selector);
|
|
206
|
+
}
|
|
207
|
+
// 事件回调
|
|
208
|
+
let _callback_: (event: Event) => void = callback as any;
|
|
209
|
+
// 事件配置
|
|
202
210
|
let _option_: AddEventListenerOptions = {
|
|
203
211
|
capture: false,
|
|
204
212
|
once: false,
|
|
@@ -206,8 +214,7 @@ export class DOMUtilsEvent {
|
|
|
206
214
|
};
|
|
207
215
|
if (typeof selector === "function") {
|
|
208
216
|
/* 这是为没有selector的情况 */
|
|
209
|
-
|
|
210
|
-
_callback_ = selector;
|
|
217
|
+
_callback_ = selector as any;
|
|
211
218
|
_option_ = getOption(args, 3, _option_);
|
|
212
219
|
} else {
|
|
213
220
|
/* 这是存在selector的情况 */
|
|
@@ -228,31 +235,40 @@ export class DOMUtilsEvent {
|
|
|
228
235
|
}
|
|
229
236
|
}
|
|
230
237
|
elementList.forEach((elementItem) => {
|
|
231
|
-
|
|
238
|
+
/**
|
|
239
|
+
* 事件回调
|
|
240
|
+
* @param event
|
|
241
|
+
*/
|
|
242
|
+
function domUtilsEventCallBack(event: Event) {
|
|
232
243
|
let target = event.target as HTMLElement;
|
|
233
|
-
if (
|
|
244
|
+
if (selectorList.length) {
|
|
234
245
|
/* 存在自定义子元素选择器 */
|
|
235
246
|
let totalParent = DOMUtilsCommonUtils.isWin(elementItem)
|
|
236
247
|
? DOMUtilsContext.windowApi.document.documentElement
|
|
237
248
|
: elementItem;
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
249
|
+
for (let index = 0; index < selectorList.length; index++) {
|
|
250
|
+
const selectorItem = selectorList[index];
|
|
251
|
+
if (target.matches(selectorItem)) {
|
|
252
|
+
/* 当前目标可以被selector所匹配到 */
|
|
253
|
+
_callback_.call(target, event as any);
|
|
254
|
+
checkOptionOnceToRemoveEventListener();
|
|
255
|
+
break;
|
|
256
|
+
} else if (
|
|
257
|
+
target.closest(selectorItem) &&
|
|
258
|
+
totalParent.contains(target.closest(selectorItem))
|
|
259
|
+
) {
|
|
260
|
+
/* 在上层与主元素之间寻找可以被selector所匹配到的 */
|
|
261
|
+
let closestElement = target.closest(selectorItem);
|
|
262
|
+
/* event的target值不能直接修改 */
|
|
263
|
+
OriginPrototype.Object.defineProperty(event, "target", {
|
|
264
|
+
get() {
|
|
265
|
+
return closestElement;
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
_callback_.call(closestElement, event as any);
|
|
269
|
+
checkOptionOnceToRemoveEventListener();
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
256
272
|
}
|
|
257
273
|
} else {
|
|
258
274
|
_callback_.call(elementItem, event as any);
|
|
@@ -262,24 +278,27 @@ export class DOMUtilsEvent {
|
|
|
262
278
|
|
|
263
279
|
/* 遍历事件名设置元素事件 */
|
|
264
280
|
eventTypeList.forEach((eventName) => {
|
|
265
|
-
elementItem.addEventListener(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
281
|
+
elementItem.addEventListener(
|
|
282
|
+
eventName,
|
|
283
|
+
domUtilsEventCallBack,
|
|
284
|
+
_option_
|
|
285
|
+
);
|
|
270
286
|
/* 获取对象上的事件 */
|
|
271
|
-
let elementEvents
|
|
272
|
-
|
|
287
|
+
let elementEvents: {
|
|
288
|
+
[k: string]: DOMUtilsEventListenerOptionsAttribute[];
|
|
289
|
+
// @ts-ignore
|
|
290
|
+
} = elementItem[DOMUtilsData.SymbolEvents] || {};
|
|
273
291
|
/* 初始化对象上的xx事件 */
|
|
274
292
|
elementEvents[eventName] = elementEvents[eventName] || [];
|
|
275
293
|
elementEvents[eventName].push({
|
|
276
|
-
selector:
|
|
294
|
+
selector: selectorList,
|
|
277
295
|
option: _option_,
|
|
278
|
-
callback:
|
|
296
|
+
callback: domUtilsEventCallBack,
|
|
279
297
|
originCallBack: _callback_,
|
|
280
298
|
});
|
|
281
299
|
/* 覆盖事件 */
|
|
282
|
-
|
|
300
|
+
// @ts-ignore
|
|
301
|
+
elementItem[DOMUtilsData.SymbolEvents] = elementEvents;
|
|
283
302
|
});
|
|
284
303
|
});
|
|
285
304
|
}
|
|
@@ -348,7 +367,7 @@ export class DOMUtilsEvent {
|
|
|
348
367
|
off<T extends DOMUtils_EventType>(
|
|
349
368
|
element: DOMUtilsElementEventType,
|
|
350
369
|
eventType: T | T[],
|
|
351
|
-
selector?:
|
|
370
|
+
selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined,
|
|
352
371
|
callback?: (event: DOMUtils_Event[T]) => void,
|
|
353
372
|
option?: boolean | AddEventListenerOptions,
|
|
354
373
|
filter?: (
|
|
@@ -374,7 +393,7 @@ export class DOMUtilsEvent {
|
|
|
374
393
|
off<T extends Event>(
|
|
375
394
|
element: DOMUtilsElementEventType,
|
|
376
395
|
eventType: string,
|
|
377
|
-
selector?:
|
|
396
|
+
selector?: DOMUtilsEventListenerOptionsAttribute["selector"] | undefined,
|
|
378
397
|
callback?: (event: T) => void,
|
|
379
398
|
option?: boolean | AddEventListenerOptions,
|
|
380
399
|
filter?: (
|
|
@@ -395,7 +414,10 @@ export class DOMUtilsEvent {
|
|
|
395
414
|
| null
|
|
396
415
|
| typeof globalThis,
|
|
397
416
|
eventType: DOMUtils_EventType | DOMUtils_EventType[] | string,
|
|
398
|
-
selector?:
|
|
417
|
+
selector?:
|
|
418
|
+
| DOMUtilsEventListenerOptionsAttribute["selector"]
|
|
419
|
+
| undefined
|
|
420
|
+
| ((event: T) => void),
|
|
399
421
|
callback?: ((event: T) => void) | boolean | AddEventListenerOptions,
|
|
400
422
|
option?:
|
|
401
423
|
| boolean
|
|
@@ -453,10 +475,13 @@ export class DOMUtilsEvent {
|
|
|
453
475
|
} else if (typeof eventType === "string") {
|
|
454
476
|
eventTypeList = eventTypeList.concat(eventType.split(" "));
|
|
455
477
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
478
|
+
// 子元素选择器
|
|
479
|
+
let selectorList: string[] = [];
|
|
480
|
+
if (Array.isArray(selector)) {
|
|
481
|
+
selectorList = selectorList.concat(selector);
|
|
482
|
+
} else if (typeof selector === "string") {
|
|
483
|
+
selectorList.push(selector);
|
|
484
|
+
}
|
|
460
485
|
/**
|
|
461
486
|
* 事件的回调函数
|
|
462
487
|
*/
|
|
@@ -470,7 +495,6 @@ export class DOMUtilsEvent {
|
|
|
470
495
|
};
|
|
471
496
|
if (typeof selector === "function") {
|
|
472
497
|
/* 这是为没有selector的情况 */
|
|
473
|
-
_selector_ = void 0;
|
|
474
498
|
_callback_ = selector;
|
|
475
499
|
_option_ = getOption(args, 3, _option_);
|
|
476
500
|
} else {
|
|
@@ -478,7 +502,8 @@ export class DOMUtilsEvent {
|
|
|
478
502
|
}
|
|
479
503
|
elementList.forEach((elementItem) => {
|
|
480
504
|
/* 获取对象上的事件 */
|
|
481
|
-
|
|
505
|
+
// @ts-ignore
|
|
506
|
+
let elementEvents = elementItem[DOMUtilsData.SymbolEvents] || {};
|
|
482
507
|
eventTypeList.forEach((eventName) => {
|
|
483
508
|
let handlers: DOMUtilsEventListenerOptionsAttribute[] =
|
|
484
509
|
elementEvents[eventName] || [];
|
|
@@ -488,16 +513,25 @@ export class DOMUtilsEvent {
|
|
|
488
513
|
for (let index = 0; index < handlers.length; index++) {
|
|
489
514
|
let handler = handlers[index];
|
|
490
515
|
let flag = false;
|
|
491
|
-
if (!
|
|
492
|
-
|
|
516
|
+
if (!selectorList.length) {
|
|
517
|
+
// selectorList是空的,默认移除
|
|
493
518
|
flag = true;
|
|
519
|
+
} else {
|
|
520
|
+
if (
|
|
521
|
+
Array.isArray(handler.selector) &&
|
|
522
|
+
JSON.stringify(handler.selector) === JSON.stringify(selectorList)
|
|
523
|
+
) {
|
|
524
|
+
// 元素上的selectorList不为空且和传入的相同
|
|
525
|
+
flag = true;
|
|
526
|
+
}
|
|
494
527
|
}
|
|
528
|
+
|
|
495
529
|
if (
|
|
496
530
|
!_callback_ ||
|
|
497
531
|
handler.callback === _callback_ ||
|
|
498
532
|
handler.originCallBack === _callback_
|
|
499
533
|
) {
|
|
500
|
-
/* callback
|
|
534
|
+
/* callback不为空,且callback相同 */
|
|
501
535
|
flag = true;
|
|
502
536
|
}
|
|
503
537
|
|
|
@@ -515,7 +549,8 @@ export class DOMUtilsEvent {
|
|
|
515
549
|
DOMUtilsCommonUtils.delete(elementEvents, eventType);
|
|
516
550
|
}
|
|
517
551
|
});
|
|
518
|
-
|
|
552
|
+
// @ts-ignore
|
|
553
|
+
elementItem[DOMUtilsData.SymbolEvents] = elementEvents;
|
|
519
554
|
});
|
|
520
555
|
}
|
|
521
556
|
/**
|
|
@@ -572,7 +607,8 @@ export class DOMUtilsEvent {
|
|
|
572
607
|
? eventTypeList
|
|
573
608
|
: Object.keys(elementEvents);
|
|
574
609
|
iterEventNameList.forEach((eventName) => {
|
|
575
|
-
let handlers
|
|
610
|
+
let handlers: DOMUtilsEventListenerOptionsAttribute[] =
|
|
611
|
+
elementEvents[eventName];
|
|
576
612
|
if (!handlers) {
|
|
577
613
|
return;
|
|
578
614
|
}
|
|
@@ -581,10 +617,8 @@ export class DOMUtilsEvent {
|
|
|
581
617
|
capture: handler["option"]["capture"],
|
|
582
618
|
});
|
|
583
619
|
}
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
eventName
|
|
587
|
-
);
|
|
620
|
+
// @ts-ignore
|
|
621
|
+
DOMUtilsCommonUtils.delete(elementItem[symbolEvents], eventName);
|
|
588
622
|
});
|
|
589
623
|
});
|
|
590
624
|
});
|
|
@@ -698,7 +732,7 @@ export class DOMUtilsEvent {
|
|
|
698
732
|
* @param element 需要触发的元素|元素数组|window
|
|
699
733
|
* @param eventType 需要触发的事件
|
|
700
734
|
* @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象
|
|
701
|
-
* @param useDispatchToTriggerEvent 是否使用dispatchEvent
|
|
735
|
+
* @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true
|
|
702
736
|
* @example
|
|
703
737
|
* // 触发元素a.xx的click事件
|
|
704
738
|
* DOMUtils.trigger(document.querySelector("a.xx"),"click")
|
|
@@ -1230,6 +1264,9 @@ export class DOMUtilsEvent {
|
|
|
1230
1264
|
* @example
|
|
1231
1265
|
* DOMUtils.selectorAll("div:regexp('^xxxx$')")
|
|
1232
1266
|
* > [div.xxx]
|
|
1267
|
+
* @example
|
|
1268
|
+
* DOMUtils.selectorAll("div:regexp(/^xxx/ig)")
|
|
1269
|
+
* > [div.xxx]
|
|
1233
1270
|
*/
|
|
1234
1271
|
selectorAll<K extends keyof HTMLElementTagNameMap>(
|
|
1235
1272
|
selector: K
|
|
@@ -1247,8 +1284,8 @@ export class DOMUtilsEvent {
|
|
|
1247
1284
|
return $ele?.innerHTML?.trim() === "";
|
|
1248
1285
|
});
|
|
1249
1286
|
} else if (
|
|
1250
|
-
selector.match(/[^\s]{1}:contains\("(.*)"\)$/
|
|
1251
|
-
selector.match(/[^\s]{1}:contains\('(.*)'\)$/
|
|
1287
|
+
selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
|
|
1288
|
+
selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)
|
|
1252
1289
|
) {
|
|
1253
1290
|
// contains 语法
|
|
1254
1291
|
let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
@@ -1261,13 +1298,19 @@ export class DOMUtilsEvent {
|
|
|
1261
1298
|
return ($ele?.textContent || $ele?.innerText)?.includes(text);
|
|
1262
1299
|
});
|
|
1263
1300
|
} else if (
|
|
1264
|
-
selector.match(/[^\s]{1}:regexp\("(.*)"\)$/
|
|
1265
|
-
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/
|
|
1301
|
+
selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
|
|
1302
|
+
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)
|
|
1266
1303
|
) {
|
|
1267
1304
|
// regexp 语法
|
|
1268
1305
|
let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
1269
|
-
let
|
|
1270
|
-
let
|
|
1306
|
+
let pattern = textMatch![2];
|
|
1307
|
+
let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
|
|
1308
|
+
let flags = "";
|
|
1309
|
+
if (flagMatch) {
|
|
1310
|
+
pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
|
|
1311
|
+
flags = flagMatch[3];
|
|
1312
|
+
}
|
|
1313
|
+
let regexp = new RegExp(pattern, flags);
|
|
1271
1314
|
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
1272
1315
|
return Array.from(
|
|
1273
1316
|
context.windowApi.document.querySelectorAll<E>(selector)
|
|
@@ -205,9 +205,9 @@ export declare type DOMUtils_EventType = keyof DOMUtils_Event;
|
|
|
205
205
|
*/
|
|
206
206
|
export declare interface DOMUtilsEventListenerOptionsAttribute {
|
|
207
207
|
/**
|
|
208
|
-
*
|
|
208
|
+
* DOMUtils的ownCallBack,元素上的监听事件就是它,移除事件时也需要传入这个函数
|
|
209
209
|
*/
|
|
210
|
-
callback: () => void;
|
|
210
|
+
callback: (event: Event) => void;
|
|
211
211
|
/**
|
|
212
212
|
* 属性配置
|
|
213
213
|
*/
|
|
@@ -215,11 +215,11 @@ export declare interface DOMUtilsEventListenerOptionsAttribute {
|
|
|
215
215
|
/**
|
|
216
216
|
* 用户添加的事件
|
|
217
217
|
*/
|
|
218
|
-
originCallBack: () => void;
|
|
218
|
+
originCallBack: (event: Event) => void;
|
|
219
219
|
/**
|
|
220
220
|
* 子元素选择器
|
|
221
221
|
*/
|
|
222
|
-
selector?: string;
|
|
222
|
+
selector?: string[];
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
export declare type DOMUtilsElementEventType =
|