@whitesev/domutils 1.9.2 → 1.9.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.
Files changed (51) hide show
  1. package/README.md +58 -58
  2. package/dist/index.amd.js +53 -30
  3. package/dist/index.amd.js.map +1 -1
  4. package/dist/index.amd.min.js +1 -1
  5. package/dist/index.amd.min.js.map +1 -1
  6. package/dist/index.cjs.js +53 -30
  7. package/dist/index.cjs.js.map +1 -1
  8. package/dist/index.cjs.min.js +1 -1
  9. package/dist/index.cjs.min.js.map +1 -1
  10. package/dist/index.esm.js +53 -30
  11. package/dist/index.esm.js.map +1 -1
  12. package/dist/index.esm.min.js +1 -1
  13. package/dist/index.esm.min.js.map +1 -1
  14. package/dist/index.iife.js +53 -30
  15. package/dist/index.iife.js.map +1 -1
  16. package/dist/index.iife.min.js +1 -1
  17. package/dist/index.iife.min.js.map +1 -1
  18. package/dist/index.system.js +53 -30
  19. package/dist/index.system.js.map +1 -1
  20. package/dist/index.system.min.js +1 -1
  21. package/dist/index.system.min.js.map +1 -1
  22. package/dist/index.umd.js +53 -30
  23. package/dist/index.umd.js.map +1 -1
  24. package/dist/index.umd.min.js +1 -1
  25. package/dist/index.umd.min.js.map +1 -1
  26. package/dist/types/src/ElementEvent.d.ts +2 -2
  27. package/dist/types/src/types/DOMUtilsCSSProperty.d.ts +36 -36
  28. package/dist/types/src/types/DOMUtilsEvent.d.ts +437 -420
  29. package/dist/types/src/types/WindowApi.d.ts +14 -14
  30. package/dist/types/src/types/env.d.ts +10 -10
  31. package/dist/types/src/types/global.d.ts +1 -1
  32. package/dist/types/src/types/gm.d.ts +2 -2
  33. package/index.ts +3 -3
  34. package/package.json +21 -22
  35. package/src/CommonUtils.ts +163 -163
  36. package/src/ElementAnimate.ts +290 -290
  37. package/src/ElementEvent.ts +1593 -1569
  38. package/src/ElementHandler.ts +43 -43
  39. package/src/ElementSelector.ts +307 -289
  40. package/src/ElementWait.ts +742 -742
  41. package/src/GlobalData.ts +5 -5
  42. package/src/OriginPrototype.ts +5 -5
  43. package/src/Utils.ts +388 -388
  44. package/src/WindowApi.ts +59 -59
  45. package/src/index.ts +2052 -2052
  46. package/src/types/DOMUtilsCSSProperty.d.ts +36 -36
  47. package/src/types/DOMUtilsEvent.d.ts +437 -420
  48. package/src/types/WindowApi.d.ts +14 -14
  49. package/src/types/env.d.ts +10 -10
  50. package/src/types/global.d.ts +1 -1
  51. package/src/types/gm.d.ts +2 -2
package/README.md CHANGED
@@ -1,58 +1,58 @@
1
- # 版本
2
-
3
- - 最新版本:[![npm version](https://img.shields.io/npm/v/@whitesev/domutils/latest.svg)](https://www.npmjs.com/package/@whitesev/domutils)
4
-
5
- ## 使用
6
-
7
- ```npm
8
- npm install @whitesev/domutils
9
- // 或者
10
- nnpm add @whitesev/domutils
11
- ```
12
-
13
- ## 使用js重新对jQuery的部分函数进行了仿写
14
-
15
- - addClass `给元素添加class`
16
- - after `在元素后面添加兄弟元素或HTML字符串`
17
- - animate `在一定时间内改变元素的样式属性,实现动画效果`
18
- - append `函数在元素内部末尾添加子元素或HTML字符串`
19
- - attr `获取或设置元素的属性值`
20
- - before `在元素前面添加兄弟元素或HTML字符串`
21
- - blur `绑定或触发元素的blur事件`
22
- - click `绑定或触发元素的click事件`
23
- - css `获取或设置元素的样式属性值`
24
- - delegate `为指定元素的子元素绑定事件`
25
- - empty `移除元素的所有子元素`
26
- - fadeIn `淡入元素`
27
- - fadeOut `淡出元素`
28
- - focus `绑定或触发元素的focus事件`
29
- - height `获取元素的高度`
30
- - hide `隐藏元素`
31
- - onHover `当鼠标移入或移出元素时触发事件`
32
- - html `获取或设置元素的HTML内容`
33
- - onKeydown `当按键按下时触发事件`
34
- - onKeyup `当按键松开时触发事件`
35
- - next `获取当前元素的后一个兄弟元素`
36
- - off `取消绑定事件`
37
- - offset `设置或返回被选元素相对于文档的偏移坐标`
38
- - on `绑定事件`
39
- - outerHeight `获取元素的外部高度(包括边框和外边距)`
40
- - outerWidth `获取元素的外部宽度(包括边框和外边距)`
41
- - parent `获取当前元素的父元素`
42
- - prepend `函数 在元素内部开头添加子元素或HTML字符串`
43
- - prev `获取当前元素的前一个兄弟元素`
44
- - prop `获取或设置元素的属性值`
45
- - ready `等待文档加载完成后执行指定的函数`
46
- - remove `移除元素`
47
- - removeAttr `移除元素的属性`
48
- - removeProp `移除元素的属性`
49
- - show `显示元素`
50
- - siblings `获取当前元素的所有兄弟元素`
51
- - text `获取或设置元素的文本内容`
52
- - toggle `切换元素的显示和隐藏状态`
53
- - emit `主动触发事件`
54
- - val `获取或设置元素的value属性值`
55
- - width `获取元素的宽度`
56
- - wrap `将一个元素包裹在指定的HTML元素中`
57
-
58
- 具体注释在代码中查看
1
+ # 版本
2
+
3
+ - 最新版本:[![npm version](https://img.shields.io/npm/v/@whitesev/domutils/latest.svg)](https://www.npmjs.com/package/@whitesev/domutils)
4
+
5
+ ## 使用
6
+
7
+ ```npm
8
+ npm install @whitesev/domutils
9
+ // 或者
10
+ nnpm add @whitesev/domutils
11
+ ```
12
+
13
+ ## 使用js重新对jQuery的部分函数进行了仿写
14
+
15
+ - addClass `给元素添加class`
16
+ - after `在元素后面添加兄弟元素或HTML字符串`
17
+ - animate `在一定时间内改变元素的样式属性,实现动画效果`
18
+ - append `函数在元素内部末尾添加子元素或HTML字符串`
19
+ - attr `获取或设置元素的属性值`
20
+ - before `在元素前面添加兄弟元素或HTML字符串`
21
+ - blur `绑定或触发元素的blur事件`
22
+ - click `绑定或触发元素的click事件`
23
+ - css `获取或设置元素的样式属性值`
24
+ - delegate `为指定元素的子元素绑定事件`
25
+ - empty `移除元素的所有子元素`
26
+ - fadeIn `淡入元素`
27
+ - fadeOut `淡出元素`
28
+ - focus `绑定或触发元素的focus事件`
29
+ - height `获取元素的高度`
30
+ - hide `隐藏元素`
31
+ - onHover `当鼠标移入或移出元素时触发事件`
32
+ - html `获取或设置元素的HTML内容`
33
+ - onKeydown `当按键按下时触发事件`
34
+ - onKeyup `当按键松开时触发事件`
35
+ - next `获取当前元素的后一个兄弟元素`
36
+ - off `取消绑定事件`
37
+ - offset `设置或返回被选元素相对于文档的偏移坐标`
38
+ - on `绑定事件`
39
+ - outerHeight `获取元素的外部高度(包括边框和外边距)`
40
+ - outerWidth `获取元素的外部宽度(包括边框和外边距)`
41
+ - parent `获取当前元素的父元素`
42
+ - prepend `函数 在元素内部开头添加子元素或HTML字符串`
43
+ - prev `获取当前元素的前一个兄弟元素`
44
+ - prop `获取或设置元素的属性值`
45
+ - ready `等待文档加载完成后执行指定的函数`
46
+ - remove `移除元素`
47
+ - removeAttr `移除元素的属性`
48
+ - removeProp `移除元素的属性`
49
+ - show `显示元素`
50
+ - siblings `获取当前元素的所有兄弟元素`
51
+ - text `获取或设置元素的文本内容`
52
+ - toggle `切换元素的显示和隐藏状态`
53
+ - emit `主动触发事件`
54
+ - val `获取或设置元素的value属性值`
55
+ - width `获取元素的宽度`
56
+ - wrap `将一个元素包裹在指定的HTML元素中`
57
+
58
+ 具体注释在代码中查看
package/dist/index.amd.js CHANGED
@@ -1,6 +1,6 @@
1
1
  define((function () { 'use strict';
2
2
 
3
- const version = "1.9.2";
3
+ const version = "1.9.4";
4
4
 
5
5
  class WindowApi {
6
6
  /** 默认的配置 */
@@ -252,8 +252,8 @@ define((function () { 'use strict';
252
252
  else if (selector.match(/[^\s]{1}:empty$/gi)) {
253
253
  // empty 语法
254
254
  selector = selector.replace(/:empty$/gi, "");
255
- return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
256
- return $ele?.innerHTML?.trim() === "";
255
+ return Array.from(parent.querySelectorAll(selector)).filter(($elItem) => {
256
+ return $elItem?.innerHTML?.trim() === "";
257
257
  });
258
258
  }
259
259
  else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
@@ -261,9 +261,15 @@ define((function () { 'use strict';
261
261
  const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
262
262
  const text = textMatch[2];
263
263
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
264
- return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
265
- // @ts-ignore
266
- return ($ele?.textContent || $ele?.innerText)?.includes(text);
264
+ return Array.from(parent.querySelectorAll(selector)).filter(($elItem) => {
265
+ let domText = $elItem.textContent;
266
+ if (domText == null) {
267
+ domText = $elItem.innerText;
268
+ }
269
+ if (domText == null) {
270
+ return false;
271
+ }
272
+ return domText.includes(text);
267
273
  });
268
274
  }
269
275
  else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
@@ -278,9 +284,15 @@ define((function () { 'use strict';
278
284
  }
279
285
  const regexp = new RegExp(pattern, flags);
280
286
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
281
- return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
282
- // @ts-ignore
283
- return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));
287
+ return Array.from(parent.querySelectorAll(selector)).filter(($elItem) => {
288
+ let domText = $elItem.textContent;
289
+ if (domText == null) {
290
+ domText = $elItem.innerText;
291
+ }
292
+ if (domText == null) {
293
+ return false;
294
+ }
295
+ return !!domText.match(regexp);
284
296
  });
285
297
  }
286
298
  else {
@@ -325,12 +337,14 @@ define((function () { 'use strict';
325
337
  const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
326
338
  const text = textMatch[2];
327
339
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
328
- // @ts-ignore
329
- let content = $el?.textContent || $el?.innerText;
330
- if (typeof content !== "string") {
331
- content = "";
340
+ let domText = $el.textContent;
341
+ if (domText == null) {
342
+ domText = $el.innerText;
332
343
  }
333
- return $el.matches(selector) && content?.includes(text);
344
+ if (domText == null) {
345
+ return false;
346
+ }
347
+ return $el.matches(selector) && domText.includes(text);
334
348
  }
335
349
  else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
336
350
  // regexp 语法
@@ -344,12 +358,14 @@ define((function () { 'use strict';
344
358
  }
345
359
  const regexp = new RegExp(pattern, flags);
346
360
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
347
- // @ts-ignore
348
- let content = $el?.textContent || $el?.innerText;
349
- if (typeof content !== "string") {
350
- content = "";
361
+ let domText = $el.textContent;
362
+ if (domText == null) {
363
+ domText = $el.innerText;
351
364
  }
352
- return $el.matches(selector) && Boolean(content?.match(regexp));
365
+ if (domText == null) {
366
+ return false;
367
+ }
368
+ return $el.matches(selector) && !!domText.match(regexp);
353
369
  }
354
370
  else {
355
371
  // 普通语法
@@ -400,9 +416,11 @@ define((function () { 'use strict';
400
416
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
401
417
  const $closest = $el?.closest(selector);
402
418
  if ($closest) {
403
- // @ts-ignore
404
- const content = $el?.textContent || $el?.innerText;
405
- if (typeof content === "string" && content.match(regexp)) {
419
+ let domText = $el.textContent;
420
+ if (domText == null) {
421
+ domText = $el.innerText;
422
+ }
423
+ if (typeof domText === "string" && domText.match(regexp)) {
406
424
  return $closest;
407
425
  }
408
426
  }
@@ -2344,20 +2362,25 @@ define((function () { 'use strict';
2344
2362
  let isMobileTouch = false;
2345
2363
  /** 检测是否是单击的延迟时间 */
2346
2364
  const checkClickTime = 200;
2347
- const dblclick_handler = async (evt, option) => {
2365
+ const dblclick_handler = async (evt, option, $selector) => {
2348
2366
  if (evt.type === "dblclick" && isMobileTouch) {
2349
2367
  // 禁止在移动端触发dblclick事件
2350
2368
  return;
2351
2369
  }
2352
- await handler(evt, option);
2370
+ if ($selector) {
2371
+ await handler(evt, $selector, option);
2372
+ }
2373
+ else {
2374
+ await handler(evt, option);
2375
+ }
2353
2376
  };
2354
- const dblClickListener = this.on($el, "dblclick", (evt) => {
2377
+ const dblClickListener = this.on($el, "dblclick", selector, (evt, $selector) => {
2355
2378
  this.preventEvent(evt);
2356
2379
  dblclick_handler(evt, {
2357
2380
  isDoubleClick: true,
2358
- });
2381
+ }, $selector);
2359
2382
  }, options);
2360
- const touchEndListener = this.on($el, "pointerup", selector, (evt, $selector) => {
2383
+ const pointerUpListener = this.on($el, "pointerup", selector, (evt, $selector) => {
2361
2384
  this.preventEvent(evt);
2362
2385
  if (evt.pointerType === "touch") {
2363
2386
  isMobileTouch = true;
@@ -2370,7 +2393,7 @@ define((function () { 'use strict';
2370
2393
  /* 判定为双击 */
2371
2394
  dblclick_handler(evt, {
2372
2395
  isDoubleClick: true,
2373
- });
2396
+ }, $selector);
2374
2397
  }
2375
2398
  else {
2376
2399
  timer = setTimeout(() => {
@@ -2378,7 +2401,7 @@ define((function () { 'use strict';
2378
2401
  // 判断为单击
2379
2402
  dblclick_handler(evt, {
2380
2403
  isDoubleClick: false,
2381
- });
2404
+ }, $selector);
2382
2405
  }, checkClickTime);
2383
2406
  isDoubleClick = true;
2384
2407
  $click = $selector;
@@ -2388,7 +2411,7 @@ define((function () { 'use strict';
2388
2411
  off() {
2389
2412
  $click = null;
2390
2413
  dblClickListener.off();
2391
- touchEndListener.off();
2414
+ pointerUpListener.off();
2392
2415
  },
2393
2416
  };
2394
2417
  }