@whitesev/domutils 1.3.4 → 1.3.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 +466 -98
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +466 -98
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +466 -98
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +466 -98
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +466 -98
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +466 -98
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtils.d.ts +60 -39
- package/dist/types/src/DOMUtilsEvent.d.ts +52 -13
- package/dist/types/src/types/global.d.ts +6 -0
- package/package.json +1 -1
- package/src/DOMUtils.ts +459 -166
- package/src/DOMUtilsEvent.ts +197 -42
- package/src/types/global.d.ts +6 -0
package/dist/index.esm.js
CHANGED
|
@@ -593,11 +593,18 @@ class DOMUtilsEvent {
|
|
|
593
593
|
click(element, handler, details, useDispatchToTriggerEvent) {
|
|
594
594
|
let DOMUtilsContext = this;
|
|
595
595
|
if (typeof element === "string") {
|
|
596
|
-
element = DOMUtilsContext.windowApi.document.
|
|
596
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
597
597
|
}
|
|
598
598
|
if (element == null) {
|
|
599
599
|
return;
|
|
600
600
|
}
|
|
601
|
+
if (isNodeList(element)) {
|
|
602
|
+
// 设置
|
|
603
|
+
element.forEach(($ele) => {
|
|
604
|
+
DOMUtilsContext.click($ele, handler, details, useDispatchToTriggerEvent);
|
|
605
|
+
});
|
|
606
|
+
return;
|
|
607
|
+
}
|
|
601
608
|
if (handler == null) {
|
|
602
609
|
DOMUtilsContext.trigger(element, "click", details, useDispatchToTriggerEvent);
|
|
603
610
|
}
|
|
@@ -627,6 +634,13 @@ class DOMUtilsEvent {
|
|
|
627
634
|
if (element == null) {
|
|
628
635
|
return;
|
|
629
636
|
}
|
|
637
|
+
if (isNodeList(element)) {
|
|
638
|
+
// 设置
|
|
639
|
+
element.forEach(($ele) => {
|
|
640
|
+
DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
|
|
641
|
+
});
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
630
644
|
if (handler === null) {
|
|
631
645
|
DOMUtilsContext.trigger(element, "blur", details, useDispatchToTriggerEvent);
|
|
632
646
|
}
|
|
@@ -651,11 +665,18 @@ class DOMUtilsEvent {
|
|
|
651
665
|
focus(element, handler, details, useDispatchToTriggerEvent) {
|
|
652
666
|
let DOMUtilsContext = this;
|
|
653
667
|
if (typeof element === "string") {
|
|
654
|
-
element = DOMUtilsContext.windowApi.document.
|
|
668
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
655
669
|
}
|
|
656
670
|
if (element == null) {
|
|
657
671
|
return;
|
|
658
672
|
}
|
|
673
|
+
if (isNodeList(element)) {
|
|
674
|
+
// 设置
|
|
675
|
+
element.forEach(($ele) => {
|
|
676
|
+
DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
|
|
677
|
+
});
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
659
680
|
if (handler == null) {
|
|
660
681
|
DOMUtilsContext.trigger(element, "focus", details, useDispatchToTriggerEvent);
|
|
661
682
|
}
|
|
@@ -680,18 +701,25 @@ class DOMUtilsEvent {
|
|
|
680
701
|
hover(element, handler, option) {
|
|
681
702
|
let DOMUtilsContext = this;
|
|
682
703
|
if (typeof element === "string") {
|
|
683
|
-
element = DOMUtilsContext.windowApi.document.
|
|
704
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
684
705
|
}
|
|
685
706
|
if (element == null) {
|
|
686
707
|
return;
|
|
687
708
|
}
|
|
709
|
+
if (isNodeList(element)) {
|
|
710
|
+
// 设置
|
|
711
|
+
element.forEach(($ele) => {
|
|
712
|
+
DOMUtilsContext.hover($ele, handler, option);
|
|
713
|
+
});
|
|
714
|
+
return;
|
|
715
|
+
}
|
|
688
716
|
DOMUtilsContext.on(element, "mouseenter", null, handler, option);
|
|
689
717
|
DOMUtilsContext.on(element, "mouseleave", null, handler, option);
|
|
690
718
|
}
|
|
691
719
|
/**
|
|
692
720
|
* 当按键松开时触发事件
|
|
693
721
|
* keydown - > keypress - > keyup
|
|
694
|
-
* @param
|
|
722
|
+
* @param element 当前元素
|
|
695
723
|
* @param handler 事件处理函数
|
|
696
724
|
* @param option 配置
|
|
697
725
|
* @example
|
|
@@ -703,20 +731,27 @@ class DOMUtilsEvent {
|
|
|
703
731
|
* console.log("按键松开");
|
|
704
732
|
* })
|
|
705
733
|
*/
|
|
706
|
-
keyup(
|
|
734
|
+
keyup(element, handler, option) {
|
|
707
735
|
let DOMUtilsContext = this;
|
|
708
|
-
if (
|
|
736
|
+
if (element == null) {
|
|
709
737
|
return;
|
|
710
738
|
}
|
|
711
|
-
if (typeof
|
|
712
|
-
|
|
739
|
+
if (typeof element === "string") {
|
|
740
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
713
741
|
}
|
|
714
|
-
|
|
742
|
+
if (isNodeList(element)) {
|
|
743
|
+
// 设置
|
|
744
|
+
element.forEach(($ele) => {
|
|
745
|
+
DOMUtilsContext.keyup($ele, handler, option);
|
|
746
|
+
});
|
|
747
|
+
return;
|
|
748
|
+
}
|
|
749
|
+
DOMUtilsContext.on(element, "keyup", null, handler, option);
|
|
715
750
|
}
|
|
716
751
|
/**
|
|
717
752
|
* 当按键按下时触发事件
|
|
718
753
|
* keydown - > keypress - > keyup
|
|
719
|
-
* @param
|
|
754
|
+
* @param element 目标
|
|
720
755
|
* @param handler 事件处理函数
|
|
721
756
|
* @param option 配置
|
|
722
757
|
* @example
|
|
@@ -728,20 +763,27 @@ class DOMUtilsEvent {
|
|
|
728
763
|
* console.log("按键按下");
|
|
729
764
|
* })
|
|
730
765
|
*/
|
|
731
|
-
keydown(
|
|
766
|
+
keydown(element, handler, option) {
|
|
732
767
|
let DOMUtilsContext = this;
|
|
733
|
-
if (
|
|
768
|
+
if (element == null) {
|
|
734
769
|
return;
|
|
735
770
|
}
|
|
736
|
-
if (typeof
|
|
737
|
-
|
|
771
|
+
if (typeof element === "string") {
|
|
772
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
738
773
|
}
|
|
739
|
-
|
|
774
|
+
if (isNodeList(element)) {
|
|
775
|
+
// 设置
|
|
776
|
+
element.forEach(($ele) => {
|
|
777
|
+
DOMUtilsContext.keydown($ele, handler, option);
|
|
778
|
+
});
|
|
779
|
+
return;
|
|
780
|
+
}
|
|
781
|
+
DOMUtilsContext.on(element, "keydown", null, handler, option);
|
|
740
782
|
}
|
|
741
783
|
/**
|
|
742
784
|
* 当按键按下时触发事件
|
|
743
785
|
* keydown - > keypress - > keyup
|
|
744
|
-
* @param
|
|
786
|
+
* @param element 目标
|
|
745
787
|
* @param handler 事件处理函数
|
|
746
788
|
* @param option 配置
|
|
747
789
|
* @example
|
|
@@ -753,20 +795,27 @@ class DOMUtilsEvent {
|
|
|
753
795
|
* console.log("按键按下");
|
|
754
796
|
* })
|
|
755
797
|
*/
|
|
756
|
-
keypress(
|
|
798
|
+
keypress(element, handler, option) {
|
|
757
799
|
let DOMUtilsContext = this;
|
|
758
|
-
if (
|
|
800
|
+
if (element == null) {
|
|
759
801
|
return;
|
|
760
802
|
}
|
|
761
|
-
if (typeof
|
|
762
|
-
|
|
803
|
+
if (typeof element === "string") {
|
|
804
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
805
|
+
}
|
|
806
|
+
if (isNodeList(element)) {
|
|
807
|
+
// 设置
|
|
808
|
+
element.forEach(($ele) => {
|
|
809
|
+
DOMUtilsContext.keypress($ele, handler, option);
|
|
810
|
+
});
|
|
811
|
+
return;
|
|
763
812
|
}
|
|
764
|
-
DOMUtilsContext.on(
|
|
813
|
+
DOMUtilsContext.on(element, "keypress", null, handler, option);
|
|
765
814
|
}
|
|
766
815
|
/**
|
|
767
816
|
* 监听某个元素键盘按键事件或window全局按键事件
|
|
768
817
|
* 按下有值的键时触发,按下Ctrl\Alt\Shift\Meta是无值键。按下先触发keydown事件,再触发keypress事件。
|
|
769
|
-
* @param
|
|
818
|
+
* @param element 需要监听的对象,可以是全局Window或者某个元素
|
|
770
819
|
* @param eventName 事件名,默认keypress
|
|
771
820
|
* @param callback 自己定义的回调事件,参数1为当前的key,参数2为组合按键,数组类型,包含ctrl、shift、alt和meta(win键或mac的cmd键)
|
|
772
821
|
* @param options 监听事件的配置
|
|
@@ -826,7 +875,11 @@ class DOMUtilsEvent {
|
|
|
826
875
|
搜索 170
|
|
827
876
|
收藏 171
|
|
828
877
|
**/
|
|
829
|
-
listenKeyboard(
|
|
878
|
+
listenKeyboard(element, eventName = "keypress", callback, options) {
|
|
879
|
+
let DOMUtilsContext = this;
|
|
880
|
+
if (typeof element === "string") {
|
|
881
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
882
|
+
}
|
|
830
883
|
let keyboardEventCallBack = function (event) {
|
|
831
884
|
/** 键名 */
|
|
832
885
|
let keyName = event.key || event.code;
|
|
@@ -850,29 +903,90 @@ class DOMUtilsEvent {
|
|
|
850
903
|
callback(keyName, keyValue, otherCodeList, event);
|
|
851
904
|
}
|
|
852
905
|
};
|
|
853
|
-
|
|
906
|
+
DOMUtilsContext.on(element, eventName, keyboardEventCallBack, options);
|
|
854
907
|
return {
|
|
855
908
|
removeListen: () => {
|
|
856
|
-
|
|
909
|
+
DOMUtilsContext.off(element, eventName, keyboardEventCallBack, options);
|
|
857
910
|
},
|
|
858
911
|
};
|
|
859
912
|
}
|
|
913
|
+
selector(selector) {
|
|
914
|
+
return this.selectorAll(selector)[0];
|
|
915
|
+
}
|
|
916
|
+
selectorAll(selector) {
|
|
917
|
+
const context = this;
|
|
918
|
+
selector = selector.trim();
|
|
919
|
+
if (selector.match(/[^\s]{1}:empty$/gi)) {
|
|
920
|
+
// empty 语法
|
|
921
|
+
selector = selector.replace(/:empty$/gi, "");
|
|
922
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {
|
|
923
|
+
return $ele?.innerHTML?.trim() === "";
|
|
924
|
+
});
|
|
925
|
+
}
|
|
926
|
+
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/gi) ||
|
|
927
|
+
selector.match(/[^\s]{1}:contains\('(.*)'\)$/gi)) {
|
|
928
|
+
// contains 语法
|
|
929
|
+
let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
930
|
+
let text = textMatch[2];
|
|
931
|
+
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
932
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {
|
|
933
|
+
// @ts-ignore
|
|
934
|
+
return ($ele?.textContent || $ele?.innerText)?.includes(text);
|
|
935
|
+
});
|
|
936
|
+
}
|
|
937
|
+
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/gi) ||
|
|
938
|
+
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/gi)) {
|
|
939
|
+
// regexp 语法
|
|
940
|
+
let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
941
|
+
let text = textMatch[2];
|
|
942
|
+
let regexp = new RegExp(text);
|
|
943
|
+
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
944
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {
|
|
945
|
+
// @ts-ignore
|
|
946
|
+
return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));
|
|
947
|
+
});
|
|
948
|
+
}
|
|
949
|
+
else {
|
|
950
|
+
// 普通语法
|
|
951
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector));
|
|
952
|
+
}
|
|
953
|
+
}
|
|
860
954
|
}
|
|
861
955
|
|
|
956
|
+
/**
|
|
957
|
+
* 判断是否是元素列表
|
|
958
|
+
* @param $ele
|
|
959
|
+
*/
|
|
960
|
+
const isNodeList = ($ele) => {
|
|
961
|
+
return Array.isArray($ele) || $ele instanceof NodeList;
|
|
962
|
+
};
|
|
862
963
|
class DOMUtils extends DOMUtilsEvent {
|
|
863
964
|
constructor(option) {
|
|
864
965
|
super(option);
|
|
865
966
|
}
|
|
866
967
|
/** 版本号 */
|
|
867
|
-
version = "2024.10.
|
|
968
|
+
version = "2024.10.22";
|
|
868
969
|
attr(element, attrName, attrValue) {
|
|
869
970
|
let DOMUtilsContext = this;
|
|
870
971
|
if (typeof element === "string") {
|
|
871
|
-
element = DOMUtilsContext.windowApi.document.
|
|
972
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
872
973
|
}
|
|
873
974
|
if (element == null) {
|
|
874
975
|
return;
|
|
875
976
|
}
|
|
977
|
+
if (isNodeList(element)) {
|
|
978
|
+
if (attrValue == null) {
|
|
979
|
+
// 获取属性
|
|
980
|
+
return DOMUtilsContext.attr(element[0], attrName, attrValue);
|
|
981
|
+
}
|
|
982
|
+
else {
|
|
983
|
+
// 设置属性
|
|
984
|
+
element.forEach(($ele) => {
|
|
985
|
+
DOMUtilsContext.attr($ele, attrName, attrValue);
|
|
986
|
+
});
|
|
987
|
+
return;
|
|
988
|
+
}
|
|
989
|
+
}
|
|
876
990
|
if (attrValue == null) {
|
|
877
991
|
return element.getAttribute(attrName);
|
|
878
992
|
}
|
|
@@ -961,14 +1075,40 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
961
1075
|
return propertyValue;
|
|
962
1076
|
}
|
|
963
1077
|
if (typeof element === "string") {
|
|
964
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1078
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
965
1079
|
}
|
|
966
1080
|
if (element == null) {
|
|
967
1081
|
return;
|
|
968
1082
|
}
|
|
1083
|
+
if (isNodeList(element)) {
|
|
1084
|
+
if (typeof property === "string") {
|
|
1085
|
+
if (value == null) {
|
|
1086
|
+
// 获取属性
|
|
1087
|
+
return DOMUtilsContext.css(element[0], property);
|
|
1088
|
+
}
|
|
1089
|
+
else {
|
|
1090
|
+
// 设置属性
|
|
1091
|
+
element.forEach(($ele) => {
|
|
1092
|
+
DOMUtilsContext.css($ele, property);
|
|
1093
|
+
});
|
|
1094
|
+
return;
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
else if (typeof property === "object") {
|
|
1098
|
+
// 设置属性
|
|
1099
|
+
element.forEach(($ele) => {
|
|
1100
|
+
DOMUtilsContext.css($ele, property);
|
|
1101
|
+
});
|
|
1102
|
+
return;
|
|
1103
|
+
}
|
|
1104
|
+
else ;
|
|
1105
|
+
return;
|
|
1106
|
+
}
|
|
969
1107
|
if (typeof property === "string") {
|
|
970
1108
|
if (value == null) {
|
|
971
|
-
return
|
|
1109
|
+
return DOMUtilsContext.windowApi.globalThis
|
|
1110
|
+
.getComputedStyle(element)
|
|
1111
|
+
.getPropertyValue(property);
|
|
972
1112
|
}
|
|
973
1113
|
else {
|
|
974
1114
|
if (value === "string" && value.includes("!important")) {
|
|
@@ -992,15 +1132,29 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
992
1132
|
}
|
|
993
1133
|
}
|
|
994
1134
|
}
|
|
1135
|
+
else ;
|
|
995
1136
|
}
|
|
996
1137
|
text(element, text) {
|
|
997
1138
|
let DOMUtilsContext = this;
|
|
998
1139
|
if (typeof element === "string") {
|
|
999
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1140
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1000
1141
|
}
|
|
1001
1142
|
if (element == null) {
|
|
1002
1143
|
return;
|
|
1003
1144
|
}
|
|
1145
|
+
if (isNodeList(element)) {
|
|
1146
|
+
if (text == null) {
|
|
1147
|
+
// 获取
|
|
1148
|
+
return DOMUtilsContext.text(element[0]);
|
|
1149
|
+
}
|
|
1150
|
+
else {
|
|
1151
|
+
// 设置
|
|
1152
|
+
element.forEach(($ele) => {
|
|
1153
|
+
DOMUtilsContext.text($ele, text);
|
|
1154
|
+
});
|
|
1155
|
+
}
|
|
1156
|
+
return;
|
|
1157
|
+
}
|
|
1004
1158
|
if (text == null) {
|
|
1005
1159
|
return element.textContent || element.innerText;
|
|
1006
1160
|
}
|
|
@@ -1019,15 +1173,30 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1019
1173
|
html(element, html) {
|
|
1020
1174
|
let DOMUtilsContext = this;
|
|
1021
1175
|
if (typeof element === "string") {
|
|
1022
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1176
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1023
1177
|
}
|
|
1024
1178
|
if (element == null) {
|
|
1025
1179
|
return;
|
|
1026
1180
|
}
|
|
1181
|
+
if (isNodeList(element)) {
|
|
1182
|
+
if (html == null) {
|
|
1183
|
+
// 获取
|
|
1184
|
+
return DOMUtilsContext.html(element[0]);
|
|
1185
|
+
}
|
|
1186
|
+
else {
|
|
1187
|
+
// 设置
|
|
1188
|
+
element.forEach(($ele) => {
|
|
1189
|
+
DOMUtilsContext.html($ele, html);
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
return;
|
|
1193
|
+
}
|
|
1027
1194
|
if (html == null) {
|
|
1195
|
+
// 获取
|
|
1028
1196
|
return element.innerHTML;
|
|
1029
1197
|
}
|
|
1030
1198
|
else {
|
|
1199
|
+
// 设置
|
|
1031
1200
|
if (html instanceof Element) {
|
|
1032
1201
|
html = html.innerHTML;
|
|
1033
1202
|
}
|
|
@@ -1050,7 +1219,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1050
1219
|
recovery();
|
|
1051
1220
|
return transformInfo;
|
|
1052
1221
|
}
|
|
1053
|
-
let elementTransform = getComputedStyle(element).transform;
|
|
1222
|
+
let elementTransform = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element).transform;
|
|
1054
1223
|
if (elementTransform != null &&
|
|
1055
1224
|
elementTransform !== "none" &&
|
|
1056
1225
|
elementTransform !== "") {
|
|
@@ -1074,12 +1243,26 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1074
1243
|
val(element, value) {
|
|
1075
1244
|
let DOMUtilsContext = this;
|
|
1076
1245
|
if (typeof element === "string") {
|
|
1077
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1246
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1078
1247
|
}
|
|
1079
1248
|
if (element == null) {
|
|
1080
1249
|
return;
|
|
1081
1250
|
}
|
|
1251
|
+
if (isNodeList(element)) {
|
|
1252
|
+
if (value == null) {
|
|
1253
|
+
// 获取
|
|
1254
|
+
return DOMUtilsContext.val(element[0]);
|
|
1255
|
+
}
|
|
1256
|
+
else {
|
|
1257
|
+
// 设置
|
|
1258
|
+
element.forEach(($ele) => {
|
|
1259
|
+
DOMUtilsContext.val($ele, value);
|
|
1260
|
+
});
|
|
1261
|
+
}
|
|
1262
|
+
return;
|
|
1263
|
+
}
|
|
1082
1264
|
if (value == null) {
|
|
1265
|
+
// 获取
|
|
1083
1266
|
if (element.localName === "input" &&
|
|
1084
1267
|
(element.type === "checkbox" || element.type === "radio")) {
|
|
1085
1268
|
return element.checked;
|
|
@@ -1089,6 +1272,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1089
1272
|
}
|
|
1090
1273
|
}
|
|
1091
1274
|
else {
|
|
1275
|
+
// 设置
|
|
1092
1276
|
if (element.localName === "input" &&
|
|
1093
1277
|
(element.type === "checkbox" || element.type === "radio")) {
|
|
1094
1278
|
element.checked = !!value;
|
|
@@ -1100,17 +1284,30 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1100
1284
|
}
|
|
1101
1285
|
prop(element, propName, propValue) {
|
|
1102
1286
|
let DOMUtilsContext = this;
|
|
1287
|
+
if (typeof element === "string") {
|
|
1288
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1289
|
+
}
|
|
1103
1290
|
if (element == null) {
|
|
1104
1291
|
return;
|
|
1105
1292
|
}
|
|
1106
|
-
if (
|
|
1107
|
-
|
|
1293
|
+
if (isNodeList(element)) {
|
|
1294
|
+
if (propValue == null) {
|
|
1295
|
+
// 获取
|
|
1296
|
+
return DOMUtilsContext.prop(element[0], propName);
|
|
1297
|
+
}
|
|
1298
|
+
else {
|
|
1299
|
+
// 设置
|
|
1300
|
+
element.forEach(($ele) => {
|
|
1301
|
+
DOMUtilsContext.prop($ele, propName, propValue);
|
|
1302
|
+
});
|
|
1303
|
+
}
|
|
1304
|
+
return;
|
|
1108
1305
|
}
|
|
1109
1306
|
if (propValue == null) {
|
|
1110
|
-
return element
|
|
1307
|
+
return Reflect.get(element, propName);
|
|
1111
1308
|
}
|
|
1112
1309
|
else {
|
|
1113
|
-
element
|
|
1310
|
+
Reflect.set(element, propName, propValue);
|
|
1114
1311
|
}
|
|
1115
1312
|
}
|
|
1116
1313
|
/**
|
|
@@ -1125,11 +1322,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1125
1322
|
removeAttr(element, attrName) {
|
|
1126
1323
|
let DOMUtilsContext = this;
|
|
1127
1324
|
if (typeof element === "string") {
|
|
1128
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1325
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1129
1326
|
}
|
|
1130
1327
|
if (element == null) {
|
|
1131
1328
|
return;
|
|
1132
1329
|
}
|
|
1330
|
+
if (isNodeList(element)) {
|
|
1331
|
+
// 设置
|
|
1332
|
+
element.forEach(($ele) => {
|
|
1333
|
+
DOMUtilsContext.removeAttr($ele, attrName);
|
|
1334
|
+
});
|
|
1335
|
+
return;
|
|
1336
|
+
}
|
|
1133
1337
|
element.removeAttribute(attrName);
|
|
1134
1338
|
}
|
|
1135
1339
|
/**
|
|
@@ -1144,15 +1348,30 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1144
1348
|
removeClass(element, className) {
|
|
1145
1349
|
let DOMUtilsContext = this;
|
|
1146
1350
|
if (typeof element === "string") {
|
|
1147
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1351
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1148
1352
|
}
|
|
1149
1353
|
if (element == null) {
|
|
1150
1354
|
return;
|
|
1151
1355
|
}
|
|
1152
|
-
if (
|
|
1356
|
+
if (isNodeList(element)) {
|
|
1357
|
+
// 设置
|
|
1358
|
+
element.forEach(($ele) => {
|
|
1359
|
+
DOMUtilsContext.removeClass($ele, className);
|
|
1360
|
+
});
|
|
1153
1361
|
return;
|
|
1154
1362
|
}
|
|
1155
|
-
|
|
1363
|
+
if (className == null) {
|
|
1364
|
+
// 清空全部className
|
|
1365
|
+
element.className = "";
|
|
1366
|
+
}
|
|
1367
|
+
else {
|
|
1368
|
+
if (!Array.isArray(className)) {
|
|
1369
|
+
className = className.split(" ");
|
|
1370
|
+
}
|
|
1371
|
+
className.forEach((itemClassName) => {
|
|
1372
|
+
element.classList.remove(itemClassName);
|
|
1373
|
+
});
|
|
1374
|
+
}
|
|
1156
1375
|
}
|
|
1157
1376
|
/**
|
|
1158
1377
|
* 移除元素的属性
|
|
@@ -1166,11 +1385,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1166
1385
|
removeProp(element, propName) {
|
|
1167
1386
|
let DOMUtilsContext = this;
|
|
1168
1387
|
if (typeof element === "string") {
|
|
1169
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1388
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1170
1389
|
}
|
|
1171
1390
|
if (element == null) {
|
|
1172
1391
|
return;
|
|
1173
1392
|
}
|
|
1393
|
+
if (isNodeList(element)) {
|
|
1394
|
+
// 设置
|
|
1395
|
+
element.forEach(($ele) => {
|
|
1396
|
+
DOMUtilsContext.removeProp($ele, propName);
|
|
1397
|
+
});
|
|
1398
|
+
return;
|
|
1399
|
+
}
|
|
1174
1400
|
DOMUtilsCommonUtils.delete(element, propName);
|
|
1175
1401
|
}
|
|
1176
1402
|
/**
|
|
@@ -1185,22 +1411,22 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1185
1411
|
replaceWith(element, newElement) {
|
|
1186
1412
|
let DOMUtilsContext = this;
|
|
1187
1413
|
if (typeof element === "string") {
|
|
1188
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1414
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1189
1415
|
}
|
|
1190
1416
|
if (element == null) {
|
|
1191
1417
|
return;
|
|
1192
1418
|
}
|
|
1193
|
-
if (
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
element.forEach((item) => {
|
|
1198
|
-
DOMUtilsContext.replaceWith(item, newElement);
|
|
1419
|
+
if (isNodeList(element)) {
|
|
1420
|
+
// 设置
|
|
1421
|
+
element.forEach(($ele) => {
|
|
1422
|
+
DOMUtilsContext.replaceWith($ele, newElement);
|
|
1199
1423
|
});
|
|
1424
|
+
return;
|
|
1200
1425
|
}
|
|
1201
|
-
|
|
1202
|
-
|
|
1426
|
+
if (typeof newElement === "string") {
|
|
1427
|
+
newElement = DOMUtilsContext.parseHTML(newElement, false, false);
|
|
1203
1428
|
}
|
|
1429
|
+
element.parentElement.replaceChild(newElement, element);
|
|
1204
1430
|
}
|
|
1205
1431
|
/**
|
|
1206
1432
|
* 给元素添加class
|
|
@@ -1214,12 +1440,27 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1214
1440
|
addClass(element, className) {
|
|
1215
1441
|
let DOMUtilsContext = this;
|
|
1216
1442
|
if (typeof element === "string") {
|
|
1217
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1443
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1218
1444
|
}
|
|
1219
1445
|
if (element == null) {
|
|
1220
1446
|
return;
|
|
1221
1447
|
}
|
|
1222
|
-
element
|
|
1448
|
+
if (isNodeList(element)) {
|
|
1449
|
+
// 设置
|
|
1450
|
+
element.forEach(($ele) => {
|
|
1451
|
+
DOMUtilsContext.addClass($ele, className);
|
|
1452
|
+
});
|
|
1453
|
+
return;
|
|
1454
|
+
}
|
|
1455
|
+
if (!Array.isArray(className)) {
|
|
1456
|
+
className = className.split(" ");
|
|
1457
|
+
}
|
|
1458
|
+
className.forEach((itemClassName) => {
|
|
1459
|
+
if (itemClassName.trim() == "") {
|
|
1460
|
+
return;
|
|
1461
|
+
}
|
|
1462
|
+
element.classList.add(itemClassName);
|
|
1463
|
+
});
|
|
1223
1464
|
}
|
|
1224
1465
|
/**
|
|
1225
1466
|
* 函数在元素内部末尾添加子元素或HTML字符串
|
|
@@ -1233,11 +1474,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1233
1474
|
append(element, content) {
|
|
1234
1475
|
let DOMUtilsContext = this;
|
|
1235
1476
|
if (typeof element === "string") {
|
|
1236
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1477
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1237
1478
|
}
|
|
1238
1479
|
if (element == null) {
|
|
1239
1480
|
return;
|
|
1240
1481
|
}
|
|
1482
|
+
if (isNodeList(element)) {
|
|
1483
|
+
// 设置
|
|
1484
|
+
element.forEach(($ele) => {
|
|
1485
|
+
DOMUtilsContext.append($ele, content);
|
|
1486
|
+
});
|
|
1487
|
+
return;
|
|
1488
|
+
}
|
|
1241
1489
|
function elementAppendChild(ele, text) {
|
|
1242
1490
|
if (typeof content === "string") {
|
|
1243
1491
|
ele.insertAdjacentHTML("beforeend", text);
|
|
@@ -1251,7 +1499,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1251
1499
|
let fragment = DOMUtilsContext.windowApi.document.createDocumentFragment();
|
|
1252
1500
|
content.forEach((ele) => {
|
|
1253
1501
|
if (typeof ele === "string") {
|
|
1254
|
-
ele =
|
|
1502
|
+
ele = DOMUtilsContext.parseHTML(ele, true, false);
|
|
1255
1503
|
}
|
|
1256
1504
|
fragment.appendChild(ele);
|
|
1257
1505
|
});
|
|
@@ -1273,11 +1521,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1273
1521
|
prepend(element, content) {
|
|
1274
1522
|
let DOMUtilsContext = this;
|
|
1275
1523
|
if (typeof element === "string") {
|
|
1276
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1524
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1277
1525
|
}
|
|
1278
1526
|
if (element == null) {
|
|
1279
1527
|
return;
|
|
1280
1528
|
}
|
|
1529
|
+
if (isNodeList(element)) {
|
|
1530
|
+
// 设置
|
|
1531
|
+
element.forEach(($ele) => {
|
|
1532
|
+
DOMUtilsContext.prepend($ele, content);
|
|
1533
|
+
});
|
|
1534
|
+
return;
|
|
1535
|
+
}
|
|
1281
1536
|
if (typeof content === "string") {
|
|
1282
1537
|
element.insertAdjacentHTML("afterbegin", content);
|
|
1283
1538
|
}
|
|
@@ -1303,11 +1558,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1303
1558
|
after(element, content) {
|
|
1304
1559
|
let DOMUtilsContext = this;
|
|
1305
1560
|
if (typeof element === "string") {
|
|
1306
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1561
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1307
1562
|
}
|
|
1308
1563
|
if (element == null) {
|
|
1309
1564
|
return;
|
|
1310
1565
|
}
|
|
1566
|
+
if (isNodeList(element)) {
|
|
1567
|
+
// 设置
|
|
1568
|
+
element.forEach(($ele) => {
|
|
1569
|
+
DOMUtilsContext.after($ele, content);
|
|
1570
|
+
});
|
|
1571
|
+
return;
|
|
1572
|
+
}
|
|
1311
1573
|
if (typeof content === "string") {
|
|
1312
1574
|
element.insertAdjacentHTML("afterend", content);
|
|
1313
1575
|
}
|
|
@@ -1335,11 +1597,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1335
1597
|
before(element, content) {
|
|
1336
1598
|
let DOMUtilsContext = this;
|
|
1337
1599
|
if (typeof element === "string") {
|
|
1338
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1600
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1339
1601
|
}
|
|
1340
1602
|
if (element == null) {
|
|
1341
1603
|
return;
|
|
1342
1604
|
}
|
|
1605
|
+
if (isNodeList(element)) {
|
|
1606
|
+
// 设置
|
|
1607
|
+
element.forEach(($ele) => {
|
|
1608
|
+
DOMUtilsContext.before($ele, content);
|
|
1609
|
+
});
|
|
1610
|
+
return;
|
|
1611
|
+
}
|
|
1343
1612
|
if (typeof content === "string") {
|
|
1344
1613
|
element.insertAdjacentHTML("beforebegin", content);
|
|
1345
1614
|
}
|
|
@@ -1355,30 +1624,28 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1355
1624
|
}
|
|
1356
1625
|
/**
|
|
1357
1626
|
* 移除元素
|
|
1358
|
-
* @param
|
|
1627
|
+
* @param element 目标元素
|
|
1359
1628
|
* @example
|
|
1360
1629
|
* // 元素a.xx前面添加一个元素
|
|
1361
1630
|
* DOMUtils.remove(document.querySelector("a.xx"))
|
|
1362
1631
|
* DOMUtils.remove(document.querySelectorAll("a.xx"))
|
|
1363
1632
|
* DOMUtils.remove("a.xx")
|
|
1364
1633
|
* */
|
|
1365
|
-
remove(
|
|
1634
|
+
remove(element) {
|
|
1366
1635
|
let DOMUtilsContext = this;
|
|
1367
|
-
if (typeof
|
|
1368
|
-
|
|
1636
|
+
if (typeof element === "string") {
|
|
1637
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1369
1638
|
}
|
|
1370
|
-
if (
|
|
1639
|
+
if (element == null) {
|
|
1371
1640
|
return;
|
|
1372
1641
|
}
|
|
1373
|
-
if (
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
}
|
|
1379
|
-
else {
|
|
1380
|
-
target.remove();
|
|
1642
|
+
if (isNodeList(element)) {
|
|
1643
|
+
element.forEach(($ele) => {
|
|
1644
|
+
DOMUtilsContext.remove($ele);
|
|
1645
|
+
});
|
|
1646
|
+
return;
|
|
1381
1647
|
}
|
|
1648
|
+
element.remove();
|
|
1382
1649
|
}
|
|
1383
1650
|
/**
|
|
1384
1651
|
* 移除元素的所有子元素
|
|
@@ -1391,11 +1658,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1391
1658
|
empty(element) {
|
|
1392
1659
|
let DOMUtilsContext = this;
|
|
1393
1660
|
if (typeof element === "string") {
|
|
1394
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1661
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1395
1662
|
}
|
|
1396
1663
|
if (element == null) {
|
|
1397
1664
|
return;
|
|
1398
1665
|
}
|
|
1666
|
+
if (isNodeList(element)) {
|
|
1667
|
+
// 设置
|
|
1668
|
+
element.forEach(($ele) => {
|
|
1669
|
+
DOMUtilsContext.empty($ele);
|
|
1670
|
+
});
|
|
1671
|
+
return;
|
|
1672
|
+
}
|
|
1399
1673
|
element.innerHTML = "";
|
|
1400
1674
|
}
|
|
1401
1675
|
/**
|
|
@@ -1426,7 +1700,8 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1426
1700
|
width(element, isShow = false) {
|
|
1427
1701
|
let DOMUtilsContext = this;
|
|
1428
1702
|
if (typeof element === "string") {
|
|
1429
|
-
element =
|
|
1703
|
+
element =
|
|
1704
|
+
DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1430
1705
|
}
|
|
1431
1706
|
if (element == null) {
|
|
1432
1707
|
return;
|
|
@@ -1538,7 +1813,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1538
1813
|
}
|
|
1539
1814
|
element = element;
|
|
1540
1815
|
if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
1541
|
-
let style = getComputedStyle(element, null);
|
|
1816
|
+
let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);
|
|
1542
1817
|
let marginLeft = DOMUtilsCommonUtils.getStyleValue(style, "marginLeft");
|
|
1543
1818
|
let marginRight = DOMUtilsCommonUtils.getStyleValue(style, "marginRight");
|
|
1544
1819
|
return element.offsetWidth + marginLeft + marginRight;
|
|
@@ -1564,7 +1839,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1564
1839
|
}
|
|
1565
1840
|
element = element;
|
|
1566
1841
|
if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
1567
|
-
let style = getComputedStyle(element, null);
|
|
1842
|
+
let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);
|
|
1568
1843
|
let marginTop = DOMUtilsCommonUtils.getStyleValue(style, "marginTop");
|
|
1569
1844
|
let marginBottom = DOMUtilsCommonUtils.getStyleValue(style, "marginBottom");
|
|
1570
1845
|
return element.offsetHeight + marginTop + marginBottom;
|
|
@@ -1591,11 +1866,18 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1591
1866
|
animate(element, styles, duration = 1000, callback = null) {
|
|
1592
1867
|
let DOMUtilsContext = this;
|
|
1593
1868
|
if (typeof element === "string") {
|
|
1594
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1869
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1595
1870
|
}
|
|
1596
1871
|
if (element == null) {
|
|
1597
1872
|
return;
|
|
1598
1873
|
}
|
|
1874
|
+
if (isNodeList(element)) {
|
|
1875
|
+
// 设置
|
|
1876
|
+
element.forEach(($ele) => {
|
|
1877
|
+
DOMUtilsContext.animate($ele, styles, duration, callback);
|
|
1878
|
+
});
|
|
1879
|
+
return;
|
|
1880
|
+
}
|
|
1599
1881
|
if (typeof duration !== "number" || duration <= 0) {
|
|
1600
1882
|
throw new TypeError("duration must be a positive number");
|
|
1601
1883
|
}
|
|
@@ -1612,7 +1894,9 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1612
1894
|
let from = {};
|
|
1613
1895
|
let to = {};
|
|
1614
1896
|
for (let prop in styles) {
|
|
1615
|
-
from[prop] =
|
|
1897
|
+
from[prop] =
|
|
1898
|
+
element.style[prop] ||
|
|
1899
|
+
DOMUtilsContext.windowApi.globalThis.getComputedStyle(element)[prop];
|
|
1616
1900
|
to[prop] = styles[prop];
|
|
1617
1901
|
}
|
|
1618
1902
|
let timer = setInterval(function () {
|
|
@@ -1644,18 +1928,26 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1644
1928
|
wrap(element, wrapperHTML) {
|
|
1645
1929
|
let DOMUtilsContext = this;
|
|
1646
1930
|
if (typeof element === "string") {
|
|
1647
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1931
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1648
1932
|
}
|
|
1649
1933
|
if (element == null) {
|
|
1650
1934
|
return;
|
|
1651
1935
|
}
|
|
1936
|
+
if (isNodeList(element)) {
|
|
1937
|
+
// 设置
|
|
1938
|
+
element.forEach(($ele) => {
|
|
1939
|
+
DOMUtilsContext.wrap($ele, wrapperHTML);
|
|
1940
|
+
});
|
|
1941
|
+
return;
|
|
1942
|
+
}
|
|
1652
1943
|
element = element;
|
|
1653
1944
|
// 创建一个新的div元素,并将wrapperHTML作为其innerHTML
|
|
1654
1945
|
let wrapper = DOMUtilsContext.windowApi.document.createElement("div");
|
|
1655
1946
|
wrapper.innerHTML = wrapperHTML;
|
|
1656
1947
|
let wrapperFirstChild = wrapper.firstChild;
|
|
1657
1948
|
// 将要包裹的元素插入目标元素前面
|
|
1658
|
-
element.parentElement
|
|
1949
|
+
let parentElement = element.parentElement;
|
|
1950
|
+
parentElement.insertBefore(wrapperFirstChild, element);
|
|
1659
1951
|
// 将要包裹的元素移动到wrapper中
|
|
1660
1952
|
wrapperFirstChild.appendChild(element);
|
|
1661
1953
|
}
|
|
@@ -1735,6 +2027,8 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1735
2027
|
}
|
|
1736
2028
|
parseHTML(html, useParser = false, isComplete = false) {
|
|
1737
2029
|
let DOMUtilsContext = this;
|
|
2030
|
+
// 去除html前后的空格
|
|
2031
|
+
html = html.trim();
|
|
1738
2032
|
function parseHTMLByDOMParser() {
|
|
1739
2033
|
let parser = new DOMParser();
|
|
1740
2034
|
if (isComplete) {
|
|
@@ -1761,16 +2055,61 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1761
2055
|
return parseHTMLByCreateDom();
|
|
1762
2056
|
}
|
|
1763
2057
|
}
|
|
2058
|
+
/**
|
|
2059
|
+
* 序列化表单元素
|
|
2060
|
+
* @param $form 表单元素
|
|
2061
|
+
* @example
|
|
2062
|
+
* DOMUtils.serialize(document.querySelector("form"))
|
|
2063
|
+
* > xxx=xxx&aaa=
|
|
2064
|
+
*/
|
|
2065
|
+
serialize($form) {
|
|
2066
|
+
const elements = $form.elements;
|
|
2067
|
+
let serializedArray = [];
|
|
2068
|
+
for (let i = 0; i < elements.length; i++) {
|
|
2069
|
+
const element = elements[i];
|
|
2070
|
+
if (element.name &&
|
|
2071
|
+
!element.disabled &&
|
|
2072
|
+
(element.checked ||
|
|
2073
|
+
[
|
|
2074
|
+
"text",
|
|
2075
|
+
"hidden",
|
|
2076
|
+
"password",
|
|
2077
|
+
"textarea",
|
|
2078
|
+
"select-one",
|
|
2079
|
+
"select-multiple",
|
|
2080
|
+
].includes(element.type))) {
|
|
2081
|
+
if (element.type === "select-multiple") {
|
|
2082
|
+
for (let j = 0; j < element.options.length; j++) {
|
|
2083
|
+
if (element.options[j].selected) {
|
|
2084
|
+
serializedArray.push({
|
|
2085
|
+
name: element.name,
|
|
2086
|
+
value: element.options[j].value,
|
|
2087
|
+
});
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
else {
|
|
2092
|
+
serializedArray.push({ name: element.name, value: element.value });
|
|
2093
|
+
}
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
return serializedArray
|
|
2097
|
+
.map((item) => `${encodeURIComponent(item.name)}=${encodeURIComponent(item.value)}`)
|
|
2098
|
+
.join("&");
|
|
2099
|
+
}
|
|
1764
2100
|
/**
|
|
1765
2101
|
* 显示元素
|
|
1766
2102
|
* @param target 当前元素
|
|
2103
|
+
* @param checkVisiblie 是否检测元素是否显示
|
|
2104
|
+
* + true (默认)如果检测到还未显示,则强制使用display: unset !important;
|
|
2105
|
+
* + false 不检测,直接设置display属性为空
|
|
1767
2106
|
* @example
|
|
1768
2107
|
* // 显示a.xx元素
|
|
1769
2108
|
* DOMUtils.show(document.querySelector("a.xx"))
|
|
1770
2109
|
* DOMUtils.show(document.querySelectorAll("a.xx"))
|
|
1771
2110
|
* DOMUtils.show("a.xx")
|
|
1772
2111
|
*/
|
|
1773
|
-
show(target) {
|
|
2112
|
+
show(target, checkVisiblie = true) {
|
|
1774
2113
|
let DOMUtilsContext = this;
|
|
1775
2114
|
if (target == null) {
|
|
1776
2115
|
return;
|
|
@@ -1781,28 +2120,33 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1781
2120
|
if (target instanceof NodeList || target instanceof Array) {
|
|
1782
2121
|
target = target;
|
|
1783
2122
|
for (const element of target) {
|
|
1784
|
-
DOMUtilsContext.show(element);
|
|
2123
|
+
DOMUtilsContext.show(element, checkVisiblie);
|
|
1785
2124
|
}
|
|
1786
2125
|
}
|
|
1787
2126
|
else {
|
|
1788
2127
|
target = target;
|
|
1789
2128
|
target.style.display = "";
|
|
1790
|
-
if (
|
|
1791
|
-
|
|
1792
|
-
|
|
2129
|
+
if (checkVisiblie) {
|
|
2130
|
+
if (!DOMUtilsCommonUtils.isShow(target)) {
|
|
2131
|
+
/* 仍然是不显示,尝试使用强覆盖 */
|
|
2132
|
+
target.style.setProperty("display", "unset", "important");
|
|
2133
|
+
}
|
|
1793
2134
|
}
|
|
1794
2135
|
}
|
|
1795
2136
|
}
|
|
1796
2137
|
/**
|
|
1797
2138
|
* 隐藏元素
|
|
1798
2139
|
* @param target 当前元素
|
|
2140
|
+
* @param checkVisiblie 是否检测元素是否显示
|
|
2141
|
+
* + true (默认)如果检测到显示,则强制使用display: none !important;
|
|
2142
|
+
* + false 不检测,直接设置display属性为none
|
|
1799
2143
|
* @example
|
|
1800
2144
|
* // 隐藏a.xx元素
|
|
1801
2145
|
* DOMUtils.hide(document.querySelector("a.xx"))
|
|
1802
2146
|
* DOMUtils.hide(document.querySelectorAll("a.xx"))
|
|
1803
2147
|
* DOMUtils.hide("a.xx")
|
|
1804
2148
|
*/
|
|
1805
|
-
hide(target) {
|
|
2149
|
+
hide(target, checkVisiblie = true) {
|
|
1806
2150
|
let DOMUtilsContext = this;
|
|
1807
2151
|
if (target == null) {
|
|
1808
2152
|
return;
|
|
@@ -1813,15 +2157,17 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1813
2157
|
if (target instanceof NodeList || target instanceof Array) {
|
|
1814
2158
|
target = target;
|
|
1815
2159
|
for (const element of target) {
|
|
1816
|
-
DOMUtilsContext.hide(element);
|
|
2160
|
+
DOMUtilsContext.hide(element, checkVisiblie);
|
|
1817
2161
|
}
|
|
1818
2162
|
}
|
|
1819
2163
|
else {
|
|
1820
2164
|
target = target;
|
|
1821
2165
|
target.style.display = "none";
|
|
1822
|
-
if (
|
|
1823
|
-
|
|
1824
|
-
|
|
2166
|
+
if (checkVisiblie) {
|
|
2167
|
+
if (DOMUtilsCommonUtils.isShow(target)) {
|
|
2168
|
+
/* 仍然是显示,尝试使用强覆盖 */
|
|
2169
|
+
target.style.setProperty("display", "none", "important");
|
|
2170
|
+
}
|
|
1825
2171
|
}
|
|
1826
2172
|
}
|
|
1827
2173
|
}
|
|
@@ -1845,9 +2191,15 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1845
2191
|
}
|
|
1846
2192
|
let DOMUtilsContext = this;
|
|
1847
2193
|
if (typeof element === "string") {
|
|
1848
|
-
element = DOMUtilsContext.windowApi.document.
|
|
2194
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
2195
|
+
}
|
|
2196
|
+
if (isNodeList(element)) {
|
|
2197
|
+
// 设置
|
|
2198
|
+
element.forEach(($ele) => {
|
|
2199
|
+
DOMUtilsContext.fadeIn($ele, duration, callback);
|
|
2200
|
+
});
|
|
2201
|
+
return;
|
|
1849
2202
|
}
|
|
1850
|
-
element = element;
|
|
1851
2203
|
element.style.opacity = "0";
|
|
1852
2204
|
element.style.display = "";
|
|
1853
2205
|
let start = null;
|
|
@@ -1890,9 +2242,15 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1890
2242
|
return;
|
|
1891
2243
|
}
|
|
1892
2244
|
if (typeof element === "string") {
|
|
1893
|
-
element = DOMUtilsContext.windowApi.document.
|
|
2245
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
2246
|
+
}
|
|
2247
|
+
if (isNodeList(element)) {
|
|
2248
|
+
// 设置
|
|
2249
|
+
element.forEach(($ele) => {
|
|
2250
|
+
DOMUtilsContext.fadeOut($ele, duration, callback);
|
|
2251
|
+
});
|
|
2252
|
+
return;
|
|
1894
2253
|
}
|
|
1895
|
-
element = element;
|
|
1896
2254
|
element.style.opacity = "1";
|
|
1897
2255
|
let start = null;
|
|
1898
2256
|
let timer = null;
|
|
@@ -1918,24 +2276,34 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1918
2276
|
/**
|
|
1919
2277
|
* 切换元素的显示和隐藏状态
|
|
1920
2278
|
* @param element 当前元素
|
|
2279
|
+
* @param checkVisiblie 是否检测元素是否显示
|
|
1921
2280
|
* @example
|
|
1922
2281
|
* // 如果元素a.xx当前是隐藏,则显示,如果是显示,则隐藏
|
|
1923
2282
|
* DOMUtils.toggle(document.querySelector("a.xx"))
|
|
1924
2283
|
* DOMUtils.toggle("a.xx")
|
|
1925
2284
|
*/
|
|
1926
|
-
toggle(element) {
|
|
2285
|
+
toggle(element, checkVisiblie) {
|
|
1927
2286
|
let DOMUtilsContext = this;
|
|
1928
2287
|
if (typeof element === "string") {
|
|
1929
|
-
element = DOMUtilsContext.windowApi.document.
|
|
2288
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1930
2289
|
}
|
|
1931
2290
|
if (element == null) {
|
|
1932
2291
|
return;
|
|
1933
2292
|
}
|
|
1934
|
-
if (
|
|
1935
|
-
|
|
2293
|
+
if (isNodeList(element)) {
|
|
2294
|
+
// 设置
|
|
2295
|
+
element.forEach(($ele) => {
|
|
2296
|
+
DOMUtilsContext.toggle($ele);
|
|
2297
|
+
});
|
|
2298
|
+
return;
|
|
2299
|
+
}
|
|
2300
|
+
if (DOMUtilsContext.windowApi.globalThis
|
|
2301
|
+
.getComputedStyle(element)
|
|
2302
|
+
.getPropertyValue("display") === "none") {
|
|
2303
|
+
DOMUtilsContext.show(element, checkVisiblie);
|
|
1936
2304
|
}
|
|
1937
2305
|
else {
|
|
1938
|
-
DOMUtilsContext.hide(element);
|
|
2306
|
+
DOMUtilsContext.hide(element, checkVisiblie);
|
|
1939
2307
|
}
|
|
1940
2308
|
}
|
|
1941
2309
|
/**
|