@whitesev/domutils 1.2.0 → 1.3.0
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 +155 -115
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +155 -115
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +155 -115
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +155 -115
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +155 -115
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +155 -115
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtils.d.ts +3 -3
- package/dist/types/src/DOMUtilsCommonUtils.d.ts +2 -0
- package/dist/types/src/DOMUtilsEvent.d.ts +4 -2
- package/dist/types/src/WindowApi.d.ts +22 -0
- package/package.json +1 -1
- package/src/DOMUtils.ts +152 -66
- package/src/DOMUtilsCommonUtils.ts +9 -5
- package/src/DOMUtilsEvent.ts +44 -22
- package/src/WindowApi.ts +44 -0
- package/dist/types/src/DOMUtilsCore.d.ts +0 -15
- package/src/DOMUtilsCore.ts +0 -45
package/dist/index.esm.js
CHANGED
|
@@ -1,40 +1,9 @@
|
|
|
1
|
-
const DOMUtilsCoreDefaultEnv = {
|
|
2
|
-
document: document,
|
|
3
|
-
window: window,
|
|
4
|
-
globalThis: globalThis,
|
|
5
|
-
self: self,
|
|
6
|
-
top: top,
|
|
7
|
-
};
|
|
8
|
-
const DOMUtilsCoreEnv = {
|
|
9
|
-
document: document,
|
|
10
|
-
window: window,
|
|
11
|
-
globalThis: globalThis,
|
|
12
|
-
self: self,
|
|
13
|
-
top: top,
|
|
14
|
-
};
|
|
15
|
-
const DOMUtilsCore = {
|
|
16
|
-
init(option) {
|
|
17
|
-
if (!option) {
|
|
18
|
-
option = Object.assign({}, DOMUtilsCoreDefaultEnv);
|
|
19
|
-
}
|
|
20
|
-
Object.assign(DOMUtilsCoreEnv, option);
|
|
21
|
-
},
|
|
22
|
-
get document() {
|
|
23
|
-
return DOMUtilsCoreEnv.document;
|
|
24
|
-
},
|
|
25
|
-
get window() {
|
|
26
|
-
return DOMUtilsCoreEnv.window;
|
|
27
|
-
},
|
|
28
|
-
get globalThis() {
|
|
29
|
-
return DOMUtilsCoreEnv.globalThis;
|
|
30
|
-
},
|
|
31
|
-
get self() {
|
|
32
|
-
return DOMUtilsCoreEnv.self;
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
|
|
36
1
|
/** 通用工具类 */
|
|
37
2
|
const DOMUtilsCommonUtils = {
|
|
3
|
+
windowApi: {
|
|
4
|
+
window: window,
|
|
5
|
+
document: document,
|
|
6
|
+
},
|
|
38
7
|
/**
|
|
39
8
|
* 判断元素是否已显示或已连接
|
|
40
9
|
* @param element
|
|
@@ -49,7 +18,7 @@ const DOMUtilsCommonUtils = {
|
|
|
49
18
|
showElement(element) {
|
|
50
19
|
let dupNode = element.cloneNode(true);
|
|
51
20
|
dupNode.setAttribute("style", "visibility: hidden !important;display:block !important;");
|
|
52
|
-
|
|
21
|
+
this.windowApi.document.documentElement.appendChild(dupNode);
|
|
53
22
|
return {
|
|
54
23
|
/**
|
|
55
24
|
* 恢复修改的style
|
|
@@ -106,13 +75,13 @@ const DOMUtilsCommonUtils = {
|
|
|
106
75
|
if (target === self) {
|
|
107
76
|
return true;
|
|
108
77
|
}
|
|
109
|
-
if (target ===
|
|
78
|
+
if (target === globalThis) {
|
|
110
79
|
return true;
|
|
111
80
|
}
|
|
112
|
-
if (target ===
|
|
81
|
+
if (target === window) {
|
|
113
82
|
return true;
|
|
114
83
|
}
|
|
115
|
-
if (target ===
|
|
84
|
+
if (target === self) {
|
|
116
85
|
return true;
|
|
117
86
|
}
|
|
118
87
|
if (typeof unsafeWindow !== "undefined" && target === unsafeWindow) {
|
|
@@ -150,7 +119,45 @@ const OriginPrototype = {
|
|
|
150
119
|
},
|
|
151
120
|
};
|
|
152
121
|
|
|
122
|
+
class WindowApi {
|
|
123
|
+
/** 默认的配置 */
|
|
124
|
+
defaultApi = {
|
|
125
|
+
document: document,
|
|
126
|
+
window: window,
|
|
127
|
+
globalThis: globalThis,
|
|
128
|
+
self: self,
|
|
129
|
+
top: top,
|
|
130
|
+
};
|
|
131
|
+
/** 使用的配置 */
|
|
132
|
+
api;
|
|
133
|
+
constructor(option) {
|
|
134
|
+
if (!option) {
|
|
135
|
+
option = Object.assign({}, this.defaultApi);
|
|
136
|
+
}
|
|
137
|
+
this.api = Object.assign({}, option);
|
|
138
|
+
}
|
|
139
|
+
get document() {
|
|
140
|
+
return this.api.document;
|
|
141
|
+
}
|
|
142
|
+
get window() {
|
|
143
|
+
return this.api.window;
|
|
144
|
+
}
|
|
145
|
+
get globalThis() {
|
|
146
|
+
return this.api.globalThis;
|
|
147
|
+
}
|
|
148
|
+
get self() {
|
|
149
|
+
return this.api.self;
|
|
150
|
+
}
|
|
151
|
+
get top() {
|
|
152
|
+
return this.api.top;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
153
156
|
class DOMUtilsEvent {
|
|
157
|
+
windowApi;
|
|
158
|
+
constructor(windowApiOption) {
|
|
159
|
+
this.windowApi = new WindowApi(windowApiOption);
|
|
160
|
+
}
|
|
154
161
|
on(element, eventType, selector, callback, option) {
|
|
155
162
|
/**
|
|
156
163
|
* 获取option配置
|
|
@@ -181,7 +188,7 @@ class DOMUtilsEvent {
|
|
|
181
188
|
let DOMUtilsContext = this;
|
|
182
189
|
let args = arguments;
|
|
183
190
|
if (typeof element === "string") {
|
|
184
|
-
element =
|
|
191
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
185
192
|
}
|
|
186
193
|
if (element == null) {
|
|
187
194
|
return;
|
|
@@ -232,7 +239,7 @@ class DOMUtilsEvent {
|
|
|
232
239
|
if (_selector_) {
|
|
233
240
|
/* 存在自定义子元素选择器 */
|
|
234
241
|
let totalParent = DOMUtilsCommonUtils.isWin(elementItem)
|
|
235
|
-
?
|
|
242
|
+
? DOMUtilsContext.windowApi.document.documentElement
|
|
236
243
|
: elementItem;
|
|
237
244
|
if (target.matches(_selector_)) {
|
|
238
245
|
/* 当前目标可以被selector所匹配到 */
|
|
@@ -296,9 +303,10 @@ class DOMUtilsEvent {
|
|
|
296
303
|
}
|
|
297
304
|
return option;
|
|
298
305
|
}
|
|
306
|
+
let DOMUtilsContext = this;
|
|
299
307
|
let args = arguments;
|
|
300
308
|
if (typeof element === "string") {
|
|
301
|
-
element =
|
|
309
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
302
310
|
}
|
|
303
311
|
if (element == null) {
|
|
304
312
|
return;
|
|
@@ -381,8 +389,9 @@ class DOMUtilsEvent {
|
|
|
381
389
|
* @param eventType (可选)需要取消监听的事件
|
|
382
390
|
*/
|
|
383
391
|
offAll(element, eventType) {
|
|
392
|
+
let DOMUtilsContext = this;
|
|
384
393
|
if (typeof element === "string") {
|
|
385
|
-
element =
|
|
394
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
386
395
|
}
|
|
387
396
|
if (element == null) {
|
|
388
397
|
return;
|
|
@@ -437,14 +446,16 @@ class DOMUtilsEvent {
|
|
|
437
446
|
if (typeof callback !== "function") {
|
|
438
447
|
return;
|
|
439
448
|
}
|
|
449
|
+
let DOMUtilsContext = this;
|
|
440
450
|
/**
|
|
441
451
|
* 检测文档是否加载完毕
|
|
442
452
|
*/
|
|
443
453
|
function checkDOMReadyState() {
|
|
444
454
|
try {
|
|
445
|
-
if (
|
|
446
|
-
(
|
|
447
|
-
!
|
|
455
|
+
if (DOMUtilsContext.windowApi.document.readyState === "complete" ||
|
|
456
|
+
(DOMUtilsContext.windowApi.document.readyState !== "loading" &&
|
|
457
|
+
!DOMUtilsContext.windowApi.document.documentElement
|
|
458
|
+
.doScroll)) {
|
|
448
459
|
return true;
|
|
449
460
|
}
|
|
450
461
|
else {
|
|
@@ -464,12 +475,12 @@ class DOMUtilsEvent {
|
|
|
464
475
|
}
|
|
465
476
|
let targetList = [
|
|
466
477
|
{
|
|
467
|
-
target:
|
|
478
|
+
target: DOMUtilsContext.windowApi.document,
|
|
468
479
|
eventType: "DOMContentLoaded",
|
|
469
480
|
callback: completed,
|
|
470
481
|
},
|
|
471
482
|
{
|
|
472
|
-
target:
|
|
483
|
+
target: DOMUtilsContext.windowApi.window,
|
|
473
484
|
eventType: "load",
|
|
474
485
|
callback: completed,
|
|
475
486
|
},
|
|
@@ -516,8 +527,9 @@ class DOMUtilsEvent {
|
|
|
516
527
|
* DOMUtils.trigger("a.xx",["click","tap","hover"])
|
|
517
528
|
*/
|
|
518
529
|
trigger(element, eventType, details, useDispatchToTriggerEvent = true) {
|
|
530
|
+
let DOMUtilsContext = this;
|
|
519
531
|
if (typeof element === "string") {
|
|
520
|
-
element =
|
|
532
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
521
533
|
}
|
|
522
534
|
if (element == null) {
|
|
523
535
|
return;
|
|
@@ -581,7 +593,7 @@ class DOMUtilsEvent {
|
|
|
581
593
|
click(element, handler, details, useDispatchToTriggerEvent) {
|
|
582
594
|
let DOMUtilsContext = this;
|
|
583
595
|
if (typeof element === "string") {
|
|
584
|
-
element =
|
|
596
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
585
597
|
}
|
|
586
598
|
if (element == null) {
|
|
587
599
|
return;
|
|
@@ -610,7 +622,7 @@ class DOMUtilsEvent {
|
|
|
610
622
|
blur(element, handler, details, useDispatchToTriggerEvent) {
|
|
611
623
|
let DOMUtilsContext = this;
|
|
612
624
|
if (typeof element === "string") {
|
|
613
|
-
element =
|
|
625
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
614
626
|
}
|
|
615
627
|
if (element == null) {
|
|
616
628
|
return;
|
|
@@ -639,7 +651,7 @@ class DOMUtilsEvent {
|
|
|
639
651
|
focus(element, handler, details, useDispatchToTriggerEvent) {
|
|
640
652
|
let DOMUtilsContext = this;
|
|
641
653
|
if (typeof element === "string") {
|
|
642
|
-
element =
|
|
654
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
643
655
|
}
|
|
644
656
|
if (element == null) {
|
|
645
657
|
return;
|
|
@@ -668,7 +680,7 @@ class DOMUtilsEvent {
|
|
|
668
680
|
hover(element, handler, option) {
|
|
669
681
|
let DOMUtilsContext = this;
|
|
670
682
|
if (typeof element === "string") {
|
|
671
|
-
element =
|
|
683
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
672
684
|
}
|
|
673
685
|
if (element == null) {
|
|
674
686
|
return;
|
|
@@ -697,7 +709,7 @@ class DOMUtilsEvent {
|
|
|
697
709
|
return;
|
|
698
710
|
}
|
|
699
711
|
if (typeof target === "string") {
|
|
700
|
-
target =
|
|
712
|
+
target = DOMUtilsContext.windowApi.document.querySelector(target);
|
|
701
713
|
}
|
|
702
714
|
DOMUtilsContext.on(target, "keyup", null, handler, option);
|
|
703
715
|
}
|
|
@@ -722,7 +734,7 @@ class DOMUtilsEvent {
|
|
|
722
734
|
return;
|
|
723
735
|
}
|
|
724
736
|
if (typeof target === "string") {
|
|
725
|
-
target =
|
|
737
|
+
target = DOMUtilsContext.windowApi.document.querySelector(target);
|
|
726
738
|
}
|
|
727
739
|
DOMUtilsContext.on(target, "keydown", null, handler, option);
|
|
728
740
|
}
|
|
@@ -747,7 +759,7 @@ class DOMUtilsEvent {
|
|
|
747
759
|
return;
|
|
748
760
|
}
|
|
749
761
|
if (typeof target === "string") {
|
|
750
|
-
target =
|
|
762
|
+
target = DOMUtilsContext.windowApi.document.querySelector(target);
|
|
751
763
|
}
|
|
752
764
|
DOMUtilsContext.on(target, "keypress", null, handler, option);
|
|
753
765
|
}
|
|
@@ -755,14 +767,14 @@ class DOMUtilsEvent {
|
|
|
755
767
|
|
|
756
768
|
class DOMUtils extends DOMUtilsEvent {
|
|
757
769
|
constructor(option) {
|
|
758
|
-
|
|
759
|
-
super();
|
|
770
|
+
super(option);
|
|
760
771
|
}
|
|
761
772
|
/** 版本号 */
|
|
762
|
-
version = "2024.
|
|
773
|
+
version = "2024.7.24";
|
|
763
774
|
attr(element, attrName, attrValue) {
|
|
775
|
+
let DOMUtilsContext = this;
|
|
764
776
|
if (typeof element === "string") {
|
|
765
|
-
element =
|
|
777
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
766
778
|
}
|
|
767
779
|
if (element == null) {
|
|
768
780
|
return;
|
|
@@ -799,7 +811,8 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
799
811
|
property,
|
|
800
812
|
/** 自定义属性 */
|
|
801
813
|
attributes) {
|
|
802
|
-
let
|
|
814
|
+
let DOMUtilsContext = this;
|
|
815
|
+
let tempElement = DOMUtilsContext.windowApi.document.createElement(tagName);
|
|
803
816
|
if (typeof property === "string") {
|
|
804
817
|
tempElement.innerHTML = property;
|
|
805
818
|
return tempElement;
|
|
@@ -829,6 +842,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
829
842
|
return tempElement;
|
|
830
843
|
}
|
|
831
844
|
css(element, property, value) {
|
|
845
|
+
let DOMUtilsContext = this;
|
|
832
846
|
/**
|
|
833
847
|
* 把纯数字没有px的加上
|
|
834
848
|
*/
|
|
@@ -853,7 +867,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
853
867
|
return propertyValue;
|
|
854
868
|
}
|
|
855
869
|
if (typeof element === "string") {
|
|
856
|
-
element =
|
|
870
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
857
871
|
}
|
|
858
872
|
if (element == null) {
|
|
859
873
|
return;
|
|
@@ -886,8 +900,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
886
900
|
}
|
|
887
901
|
}
|
|
888
902
|
text(element, text) {
|
|
903
|
+
let DOMUtilsContext = this;
|
|
889
904
|
if (typeof element === "string") {
|
|
890
|
-
element =
|
|
905
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
891
906
|
}
|
|
892
907
|
if (element == null) {
|
|
893
908
|
return;
|
|
@@ -908,8 +923,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
908
923
|
}
|
|
909
924
|
}
|
|
910
925
|
html(element, html) {
|
|
926
|
+
let DOMUtilsContext = this;
|
|
911
927
|
if (typeof element === "string") {
|
|
912
|
-
element =
|
|
928
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
913
929
|
}
|
|
914
930
|
if (element == null) {
|
|
915
931
|
return;
|
|
@@ -962,8 +978,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
962
978
|
};
|
|
963
979
|
}
|
|
964
980
|
val(element, value) {
|
|
981
|
+
let DOMUtilsContext = this;
|
|
965
982
|
if (typeof element === "string") {
|
|
966
|
-
element =
|
|
983
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
967
984
|
}
|
|
968
985
|
if (element == null) {
|
|
969
986
|
return;
|
|
@@ -988,11 +1005,12 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
988
1005
|
}
|
|
989
1006
|
}
|
|
990
1007
|
prop(element, propName, propValue) {
|
|
1008
|
+
let DOMUtilsContext = this;
|
|
991
1009
|
if (element == null) {
|
|
992
1010
|
return;
|
|
993
1011
|
}
|
|
994
1012
|
if (typeof element === "string") {
|
|
995
|
-
element =
|
|
1013
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
996
1014
|
}
|
|
997
1015
|
if (propValue == null) {
|
|
998
1016
|
return element[propName];
|
|
@@ -1011,8 +1029,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1011
1029
|
* DOMUtils.removeAttr("a.xx","data-value")
|
|
1012
1030
|
* */
|
|
1013
1031
|
removeAttr(element, attrName) {
|
|
1032
|
+
let DOMUtilsContext = this;
|
|
1014
1033
|
if (typeof element === "string") {
|
|
1015
|
-
element =
|
|
1034
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1016
1035
|
}
|
|
1017
1036
|
if (element == null) {
|
|
1018
1037
|
return;
|
|
@@ -1029,8 +1048,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1029
1048
|
* DOMUtils.removeClass("a.xx","xx")
|
|
1030
1049
|
*/
|
|
1031
1050
|
removeClass(element, className) {
|
|
1051
|
+
let DOMUtilsContext = this;
|
|
1032
1052
|
if (typeof element === "string") {
|
|
1033
|
-
element =
|
|
1053
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1034
1054
|
}
|
|
1035
1055
|
if (element == null) {
|
|
1036
1056
|
return;
|
|
@@ -1050,8 +1070,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1050
1070
|
* DOMUtils.removeProp("a.xx","href")
|
|
1051
1071
|
* */
|
|
1052
1072
|
removeProp(element, propName) {
|
|
1073
|
+
let DOMUtilsContext = this;
|
|
1053
1074
|
if (typeof element === "string") {
|
|
1054
|
-
element =
|
|
1075
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1055
1076
|
}
|
|
1056
1077
|
if (element == null) {
|
|
1057
1078
|
return;
|
|
@@ -1070,7 +1091,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1070
1091
|
replaceWith(element, newElement) {
|
|
1071
1092
|
let DOMUtilsContext = this;
|
|
1072
1093
|
if (typeof element === "string") {
|
|
1073
|
-
element =
|
|
1094
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1074
1095
|
}
|
|
1075
1096
|
if (element == null) {
|
|
1076
1097
|
return;
|
|
@@ -1097,8 +1118,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1097
1118
|
* DOMUtils.addClass("a.xx","_vue_")
|
|
1098
1119
|
* */
|
|
1099
1120
|
addClass(element, className) {
|
|
1121
|
+
let DOMUtilsContext = this;
|
|
1100
1122
|
if (typeof element === "string") {
|
|
1101
|
-
element =
|
|
1123
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1102
1124
|
}
|
|
1103
1125
|
if (element == null) {
|
|
1104
1126
|
return;
|
|
@@ -1115,8 +1137,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1115
1137
|
* DOMUtils.append("a.xx","'<b class="xx"></b>")
|
|
1116
1138
|
* */
|
|
1117
1139
|
append(element, content) {
|
|
1140
|
+
let DOMUtilsContext = this;
|
|
1118
1141
|
if (typeof element === "string") {
|
|
1119
|
-
element =
|
|
1142
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1120
1143
|
}
|
|
1121
1144
|
if (element == null) {
|
|
1122
1145
|
return;
|
|
@@ -1131,7 +1154,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1131
1154
|
}
|
|
1132
1155
|
if (Array.isArray(content) || content instanceof NodeList) {
|
|
1133
1156
|
/* 数组 */
|
|
1134
|
-
let fragment =
|
|
1157
|
+
let fragment = DOMUtilsContext.windowApi.document.createDocumentFragment();
|
|
1135
1158
|
content.forEach((ele) => {
|
|
1136
1159
|
if (typeof ele === "string") {
|
|
1137
1160
|
ele = this.parseHTML(ele, true, false);
|
|
@@ -1154,8 +1177,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1154
1177
|
* DOMUtils.prepend("a.xx","'<b class="xx"></b>")
|
|
1155
1178
|
* */
|
|
1156
1179
|
prepend(element, content) {
|
|
1180
|
+
let DOMUtilsContext = this;
|
|
1157
1181
|
if (typeof element === "string") {
|
|
1158
|
-
element =
|
|
1182
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1159
1183
|
}
|
|
1160
1184
|
if (element == null) {
|
|
1161
1185
|
return;
|
|
@@ -1177,8 +1201,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1177
1201
|
* DOMUtils.after("a.xx","'<b class="xx"></b>")
|
|
1178
1202
|
* */
|
|
1179
1203
|
after(element, content) {
|
|
1204
|
+
let DOMUtilsContext = this;
|
|
1180
1205
|
if (typeof element === "string") {
|
|
1181
|
-
element =
|
|
1206
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1182
1207
|
}
|
|
1183
1208
|
if (element == null) {
|
|
1184
1209
|
return;
|
|
@@ -1200,8 +1225,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1200
1225
|
* DOMUtils.before("a.xx","'<b class="xx"></b>")
|
|
1201
1226
|
* */
|
|
1202
1227
|
before(element, content) {
|
|
1228
|
+
let DOMUtilsContext = this;
|
|
1203
1229
|
if (typeof element === "string") {
|
|
1204
|
-
element =
|
|
1230
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1205
1231
|
}
|
|
1206
1232
|
if (element == null) {
|
|
1207
1233
|
return;
|
|
@@ -1225,7 +1251,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1225
1251
|
remove(target) {
|
|
1226
1252
|
let DOMUtilsContext = this;
|
|
1227
1253
|
if (typeof target === "string") {
|
|
1228
|
-
target =
|
|
1254
|
+
target = DOMUtilsContext.windowApi.document.querySelectorAll(target);
|
|
1229
1255
|
}
|
|
1230
1256
|
if (target == null) {
|
|
1231
1257
|
return;
|
|
@@ -1249,8 +1275,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1249
1275
|
* DOMUtils.empty("a.xx")
|
|
1250
1276
|
* */
|
|
1251
1277
|
empty(element) {
|
|
1278
|
+
let DOMUtilsContext = this;
|
|
1252
1279
|
if (typeof element === "string") {
|
|
1253
|
-
element =
|
|
1280
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1254
1281
|
}
|
|
1255
1282
|
if (element == null) {
|
|
1256
1283
|
return;
|
|
@@ -1267,8 +1294,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1267
1294
|
* > 0
|
|
1268
1295
|
*/
|
|
1269
1296
|
offset(element) {
|
|
1297
|
+
let DOMUtilsContext = this;
|
|
1270
1298
|
if (typeof element === "string") {
|
|
1271
|
-
element =
|
|
1299
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1272
1300
|
}
|
|
1273
1301
|
if (element == null) {
|
|
1274
1302
|
return;
|
|
@@ -1276,21 +1304,22 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1276
1304
|
let rect = element.getBoundingClientRect();
|
|
1277
1305
|
return {
|
|
1278
1306
|
/** y轴偏移 */
|
|
1279
|
-
top: rect.top +
|
|
1307
|
+
top: rect.top + DOMUtilsContext.windowApi.globalThis.scrollY,
|
|
1280
1308
|
/** x轴偏移 */
|
|
1281
|
-
left: rect.left +
|
|
1309
|
+
left: rect.left + DOMUtilsContext.windowApi.globalThis.scrollX,
|
|
1282
1310
|
};
|
|
1283
1311
|
}
|
|
1284
1312
|
width(element, isShow = false) {
|
|
1285
1313
|
let DOMUtilsContext = this;
|
|
1286
1314
|
if (typeof element === "string") {
|
|
1287
|
-
element =
|
|
1315
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1288
1316
|
}
|
|
1289
1317
|
if (element == null) {
|
|
1290
1318
|
return;
|
|
1291
1319
|
}
|
|
1292
1320
|
if (DOMUtilsCommonUtils.isWin(element)) {
|
|
1293
|
-
return
|
|
1321
|
+
return DOMUtilsContext.windowApi.window.document.documentElement
|
|
1322
|
+
.clientWidth;
|
|
1294
1323
|
}
|
|
1295
1324
|
if (element.nodeType === 9) {
|
|
1296
1325
|
/* Document文档节点 */
|
|
@@ -1333,10 +1362,11 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1333
1362
|
height(element, isShow = false) {
|
|
1334
1363
|
let DOMUtilsContext = this;
|
|
1335
1364
|
if (DOMUtilsCommonUtils.isWin(element)) {
|
|
1336
|
-
return
|
|
1365
|
+
return DOMUtilsContext.windowApi.window.document.documentElement
|
|
1366
|
+
.clientHeight;
|
|
1337
1367
|
}
|
|
1338
1368
|
if (typeof element === "string") {
|
|
1339
|
-
element =
|
|
1369
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1340
1370
|
}
|
|
1341
1371
|
if (element == null) {
|
|
1342
1372
|
// @ts-ignore
|
|
@@ -1383,10 +1413,10 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1383
1413
|
outerWidth(element, isShow = false) {
|
|
1384
1414
|
let DOMUtilsContext = this;
|
|
1385
1415
|
if (DOMUtilsCommonUtils.isWin(element)) {
|
|
1386
|
-
return
|
|
1416
|
+
return DOMUtilsContext.windowApi.window.innerWidth;
|
|
1387
1417
|
}
|
|
1388
1418
|
if (typeof element === "string") {
|
|
1389
|
-
element =
|
|
1419
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1390
1420
|
}
|
|
1391
1421
|
if (element == null) {
|
|
1392
1422
|
// @ts-ignore
|
|
@@ -1409,10 +1439,10 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1409
1439
|
outerHeight(element, isShow = false) {
|
|
1410
1440
|
let DOMUtilsContext = this;
|
|
1411
1441
|
if (DOMUtilsCommonUtils.isWin(element)) {
|
|
1412
|
-
return
|
|
1442
|
+
return DOMUtilsContext.windowApi.window.innerHeight;
|
|
1413
1443
|
}
|
|
1414
1444
|
if (typeof element === "string") {
|
|
1415
|
-
element =
|
|
1445
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1416
1446
|
}
|
|
1417
1447
|
if (element == null) {
|
|
1418
1448
|
// @ts-ignore
|
|
@@ -1445,8 +1475,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1445
1475
|
* })
|
|
1446
1476
|
*/
|
|
1447
1477
|
animate(element, styles, duration = 1000, callback = null) {
|
|
1478
|
+
let DOMUtilsContext = this;
|
|
1448
1479
|
if (typeof element === "string") {
|
|
1449
|
-
element =
|
|
1480
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1450
1481
|
}
|
|
1451
1482
|
if (element == null) {
|
|
1452
1483
|
return;
|
|
@@ -1497,15 +1528,16 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1497
1528
|
* DOMUtils.wrap(document.querySelector("a.xx"),"<div></div>")
|
|
1498
1529
|
*/
|
|
1499
1530
|
wrap(element, wrapperHTML) {
|
|
1531
|
+
let DOMUtilsContext = this;
|
|
1500
1532
|
if (typeof element === "string") {
|
|
1501
|
-
element =
|
|
1533
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1502
1534
|
}
|
|
1503
1535
|
if (element == null) {
|
|
1504
1536
|
return;
|
|
1505
1537
|
}
|
|
1506
1538
|
element = element;
|
|
1507
1539
|
// 创建一个新的div元素,并将wrapperHTML作为其innerHTML
|
|
1508
|
-
let wrapper =
|
|
1540
|
+
let wrapper = DOMUtilsContext.windowApi.document.createElement("div");
|
|
1509
1541
|
wrapper.innerHTML = wrapperHTML;
|
|
1510
1542
|
let wrapperFirstChild = wrapper.firstChild;
|
|
1511
1543
|
// 将要包裹的元素插入目标元素前面
|
|
@@ -1514,8 +1546,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1514
1546
|
wrapperFirstChild.appendChild(element);
|
|
1515
1547
|
}
|
|
1516
1548
|
prev(element) {
|
|
1549
|
+
let DOMUtilsContext = this;
|
|
1517
1550
|
if (typeof element === "string") {
|
|
1518
|
-
element =
|
|
1551
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1519
1552
|
}
|
|
1520
1553
|
if (element == null) {
|
|
1521
1554
|
return;
|
|
@@ -1523,8 +1556,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1523
1556
|
return element.previousElementSibling;
|
|
1524
1557
|
}
|
|
1525
1558
|
next(element) {
|
|
1559
|
+
let DOMUtilsContext = this;
|
|
1526
1560
|
if (typeof element === "string") {
|
|
1527
|
-
element =
|
|
1561
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1528
1562
|
}
|
|
1529
1563
|
if (element == null) {
|
|
1530
1564
|
return;
|
|
@@ -1537,15 +1571,17 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1537
1571
|
* let DOMUtils = window.DOMUtils.noConflict()
|
|
1538
1572
|
*/
|
|
1539
1573
|
noConflict() {
|
|
1540
|
-
|
|
1574
|
+
let DOMUtilsContext = this;
|
|
1575
|
+
if (DOMUtilsContext.windowApi.window.DOMUtils) {
|
|
1541
1576
|
DOMUtilsCommonUtils.delete(window, "DOMUtils");
|
|
1542
1577
|
}
|
|
1543
|
-
|
|
1578
|
+
DOMUtilsContext.windowApi.window.DOMUtils = this;
|
|
1544
1579
|
return this;
|
|
1545
1580
|
}
|
|
1546
1581
|
siblings(element) {
|
|
1582
|
+
let DOMUtilsContext = this;
|
|
1547
1583
|
if (typeof element === "string") {
|
|
1548
|
-
element =
|
|
1584
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1549
1585
|
}
|
|
1550
1586
|
if (element == null) {
|
|
1551
1587
|
return;
|
|
@@ -1566,7 +1602,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1566
1602
|
parent(element) {
|
|
1567
1603
|
let DOMUtilsContext = this;
|
|
1568
1604
|
if (typeof element === "string") {
|
|
1569
|
-
element =
|
|
1605
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1570
1606
|
}
|
|
1571
1607
|
if (element == null) {
|
|
1572
1608
|
return;
|
|
@@ -1584,6 +1620,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1584
1620
|
}
|
|
1585
1621
|
}
|
|
1586
1622
|
parseHTML(html, useParser = false, isComplete = false) {
|
|
1623
|
+
let DOMUtilsContext = this;
|
|
1587
1624
|
function parseHTMLByDOMParser() {
|
|
1588
1625
|
let parser = new DOMParser();
|
|
1589
1626
|
if (isComplete) {
|
|
@@ -1594,7 +1631,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1594
1631
|
}
|
|
1595
1632
|
}
|
|
1596
1633
|
function parseHTMLByCreateDom() {
|
|
1597
|
-
let tempDIV =
|
|
1634
|
+
let tempDIV = DOMUtilsContext.windowApi.document.createElement("div");
|
|
1598
1635
|
tempDIV.innerHTML = html;
|
|
1599
1636
|
if (isComplete) {
|
|
1600
1637
|
return tempDIV;
|
|
@@ -1625,7 +1662,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1625
1662
|
return;
|
|
1626
1663
|
}
|
|
1627
1664
|
if (typeof target === "string") {
|
|
1628
|
-
target =
|
|
1665
|
+
target = DOMUtilsContext.windowApi.document.querySelectorAll(target);
|
|
1629
1666
|
}
|
|
1630
1667
|
if (target instanceof NodeList || target instanceof Array) {
|
|
1631
1668
|
target = target;
|
|
@@ -1657,7 +1694,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1657
1694
|
return;
|
|
1658
1695
|
}
|
|
1659
1696
|
if (typeof target === "string") {
|
|
1660
|
-
target =
|
|
1697
|
+
target = DOMUtilsContext.windowApi.document.querySelectorAll(target);
|
|
1661
1698
|
}
|
|
1662
1699
|
if (target instanceof NodeList || target instanceof Array) {
|
|
1663
1700
|
target = target;
|
|
@@ -1692,8 +1729,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1692
1729
|
if (element == null) {
|
|
1693
1730
|
return;
|
|
1694
1731
|
}
|
|
1732
|
+
let DOMUtilsContext = this;
|
|
1695
1733
|
if (typeof element === "string") {
|
|
1696
|
-
element =
|
|
1734
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1697
1735
|
}
|
|
1698
1736
|
element = element;
|
|
1699
1737
|
element.style.opacity = "0";
|
|
@@ -1707,16 +1745,16 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1707
1745
|
element = element;
|
|
1708
1746
|
element.style.opacity = Math.min(progress / duration, 1).toString();
|
|
1709
1747
|
if (progress < duration) {
|
|
1710
|
-
|
|
1748
|
+
DOMUtilsContext.windowApi.window.requestAnimationFrame(step);
|
|
1711
1749
|
}
|
|
1712
1750
|
else {
|
|
1713
1751
|
if (callback && typeof callback === "function") {
|
|
1714
1752
|
callback();
|
|
1715
1753
|
}
|
|
1716
|
-
|
|
1754
|
+
DOMUtilsContext.windowApi.window.cancelAnimationFrame(timer);
|
|
1717
1755
|
}
|
|
1718
1756
|
}
|
|
1719
|
-
timer =
|
|
1757
|
+
timer = DOMUtilsContext.windowApi.window.requestAnimationFrame(step);
|
|
1720
1758
|
}
|
|
1721
1759
|
/**
|
|
1722
1760
|
* 淡出元素
|
|
@@ -1733,11 +1771,12 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1733
1771
|
* })
|
|
1734
1772
|
*/
|
|
1735
1773
|
fadeOut(element, duration = 400, callback) {
|
|
1774
|
+
let DOMUtilsContext = this;
|
|
1736
1775
|
if (element == null) {
|
|
1737
1776
|
return;
|
|
1738
1777
|
}
|
|
1739
1778
|
if (typeof element === "string") {
|
|
1740
|
-
element =
|
|
1779
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1741
1780
|
}
|
|
1742
1781
|
element = element;
|
|
1743
1782
|
element.style.opacity = "1";
|
|
@@ -1750,17 +1789,17 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1750
1789
|
element = element;
|
|
1751
1790
|
element.style.opacity = Math.max(1 - progress / duration, 0).toString();
|
|
1752
1791
|
if (progress < duration) {
|
|
1753
|
-
|
|
1792
|
+
DOMUtilsContext.windowApi.window.requestAnimationFrame(step);
|
|
1754
1793
|
}
|
|
1755
1794
|
else {
|
|
1756
1795
|
element.style.display = "none";
|
|
1757
1796
|
if (typeof callback === "function") {
|
|
1758
1797
|
callback();
|
|
1759
1798
|
}
|
|
1760
|
-
|
|
1799
|
+
DOMUtilsContext.windowApi.window.cancelAnimationFrame(timer);
|
|
1761
1800
|
}
|
|
1762
1801
|
}
|
|
1763
|
-
timer =
|
|
1802
|
+
timer = DOMUtilsContext.windowApi.window.requestAnimationFrame(step);
|
|
1764
1803
|
}
|
|
1765
1804
|
/**
|
|
1766
1805
|
* 切换元素的显示和隐藏状态
|
|
@@ -1773,7 +1812,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1773
1812
|
toggle(element) {
|
|
1774
1813
|
let DOMUtilsContext = this;
|
|
1775
1814
|
if (typeof element === "string") {
|
|
1776
|
-
element =
|
|
1815
|
+
element = DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1777
1816
|
}
|
|
1778
1817
|
if (element == null) {
|
|
1779
1818
|
return;
|
|
@@ -1802,6 +1841,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1802
1841
|
* DOMUtils.getTextBoundingRect(document.querySelector("input"));
|
|
1803
1842
|
*/
|
|
1804
1843
|
getTextBoundingRect($input, selectionStart, selectionEnd) {
|
|
1844
|
+
let DOMUtilsContext = this;
|
|
1805
1845
|
// Basic parameter validation
|
|
1806
1846
|
if (!$input || !("value" in $input))
|
|
1807
1847
|
return $input;
|
|
@@ -1871,7 +1911,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1871
1911
|
}
|
|
1872
1912
|
// End of CSS variable checks
|
|
1873
1913
|
// 不能为空,不然获取不到高度
|
|
1874
|
-
let text = $input.value || "G", textLen = text.length, fakeClone =
|
|
1914
|
+
let text = $input.value || "G", textLen = text.length, fakeClone = DOMUtilsContext.windowApi.document.createElement("div");
|
|
1875
1915
|
if (selectionStart > 0)
|
|
1876
1916
|
appendPart(0, selectionStart);
|
|
1877
1917
|
var fakeRange = appendPart(selectionStart, selectionEnd);
|
|
@@ -1885,7 +1925,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1885
1925
|
fakeClone.style.left = leftPos + "px";
|
|
1886
1926
|
fakeClone.style.width = width + "px";
|
|
1887
1927
|
fakeClone.style.height = height + "px";
|
|
1888
|
-
|
|
1928
|
+
DOMUtilsContext.windowApi.document.body.appendChild(fakeClone);
|
|
1889
1929
|
var returnValue = fakeRange.getBoundingClientRect(); //Get rect
|
|
1890
1930
|
fakeClone?.parentNode?.removeChild(fakeClone); //Remove temp
|
|
1891
1931
|
return returnValue;
|
|
@@ -1897,7 +1937,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1897
1937
|
* @returns
|
|
1898
1938
|
*/
|
|
1899
1939
|
function appendPart(start, end) {
|
|
1900
|
-
var span =
|
|
1940
|
+
var span = DOMUtilsContext.windowApi.document.createElement("span");
|
|
1901
1941
|
span.style.cssText = cssDefaultStyles; //Force styles to prevent unexpected results
|
|
1902
1942
|
span.textContent = text.substring(start, end);
|
|
1903
1943
|
fakeClone.appendChild(span);
|
|
@@ -1905,7 +1945,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1905
1945
|
}
|
|
1906
1946
|
// Computing offset position
|
|
1907
1947
|
function getInputOffset() {
|
|
1908
|
-
let body =
|
|
1948
|
+
let body = DOMUtilsContext.windowApi.document.body, win = DOMUtilsContext.windowApi.document.defaultView, docElem = DOMUtilsContext.windowApi.document.documentElement, $box = DOMUtilsContext.windowApi.document.createElement("div");
|
|
1909
1949
|
$box.style.paddingLeft = $box.style.width = "1px";
|
|
1910
1950
|
body.appendChild($box);
|
|
1911
1951
|
var isBoxModel = $box.offsetWidth == 2;
|
|
@@ -1928,7 +1968,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1928
1968
|
* @returns
|
|
1929
1969
|
*/
|
|
1930
1970
|
function getInputCSS(prop, isNumber) {
|
|
1931
|
-
var val =
|
|
1971
|
+
var val = DOMUtilsContext.windowApi.document
|
|
1932
1972
|
.defaultView.getComputedStyle($input, null)
|
|
1933
1973
|
.getPropertyValue(prop);
|
|
1934
1974
|
return isNumber ? parseFloat(val) : val;
|