@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.umd.js
CHANGED
|
@@ -599,11 +599,18 @@
|
|
|
599
599
|
click(element, handler, details, useDispatchToTriggerEvent) {
|
|
600
600
|
let DOMUtilsContext = this;
|
|
601
601
|
if (typeof element === "string") {
|
|
602
|
-
element = DOMUtilsContext.windowApi.document.
|
|
602
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
603
603
|
}
|
|
604
604
|
if (element == null) {
|
|
605
605
|
return;
|
|
606
606
|
}
|
|
607
|
+
if (isNodeList(element)) {
|
|
608
|
+
// 设置
|
|
609
|
+
element.forEach(($ele) => {
|
|
610
|
+
DOMUtilsContext.click($ele, handler, details, useDispatchToTriggerEvent);
|
|
611
|
+
});
|
|
612
|
+
return;
|
|
613
|
+
}
|
|
607
614
|
if (handler == null) {
|
|
608
615
|
DOMUtilsContext.trigger(element, "click", details, useDispatchToTriggerEvent);
|
|
609
616
|
}
|
|
@@ -633,6 +640,13 @@
|
|
|
633
640
|
if (element == null) {
|
|
634
641
|
return;
|
|
635
642
|
}
|
|
643
|
+
if (isNodeList(element)) {
|
|
644
|
+
// 设置
|
|
645
|
+
element.forEach(($ele) => {
|
|
646
|
+
DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
|
|
647
|
+
});
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
636
650
|
if (handler === null) {
|
|
637
651
|
DOMUtilsContext.trigger(element, "blur", details, useDispatchToTriggerEvent);
|
|
638
652
|
}
|
|
@@ -657,11 +671,18 @@
|
|
|
657
671
|
focus(element, handler, details, useDispatchToTriggerEvent) {
|
|
658
672
|
let DOMUtilsContext = this;
|
|
659
673
|
if (typeof element === "string") {
|
|
660
|
-
element = DOMUtilsContext.windowApi.document.
|
|
674
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
661
675
|
}
|
|
662
676
|
if (element == null) {
|
|
663
677
|
return;
|
|
664
678
|
}
|
|
679
|
+
if (isNodeList(element)) {
|
|
680
|
+
// 设置
|
|
681
|
+
element.forEach(($ele) => {
|
|
682
|
+
DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);
|
|
683
|
+
});
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
665
686
|
if (handler == null) {
|
|
666
687
|
DOMUtilsContext.trigger(element, "focus", details, useDispatchToTriggerEvent);
|
|
667
688
|
}
|
|
@@ -686,18 +707,25 @@
|
|
|
686
707
|
hover(element, handler, option) {
|
|
687
708
|
let DOMUtilsContext = this;
|
|
688
709
|
if (typeof element === "string") {
|
|
689
|
-
element = DOMUtilsContext.windowApi.document.
|
|
710
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
690
711
|
}
|
|
691
712
|
if (element == null) {
|
|
692
713
|
return;
|
|
693
714
|
}
|
|
715
|
+
if (isNodeList(element)) {
|
|
716
|
+
// 设置
|
|
717
|
+
element.forEach(($ele) => {
|
|
718
|
+
DOMUtilsContext.hover($ele, handler, option);
|
|
719
|
+
});
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
694
722
|
DOMUtilsContext.on(element, "mouseenter", null, handler, option);
|
|
695
723
|
DOMUtilsContext.on(element, "mouseleave", null, handler, option);
|
|
696
724
|
}
|
|
697
725
|
/**
|
|
698
726
|
* 当按键松开时触发事件
|
|
699
727
|
* keydown - > keypress - > keyup
|
|
700
|
-
* @param
|
|
728
|
+
* @param element 当前元素
|
|
701
729
|
* @param handler 事件处理函数
|
|
702
730
|
* @param option 配置
|
|
703
731
|
* @example
|
|
@@ -709,20 +737,27 @@
|
|
|
709
737
|
* console.log("按键松开");
|
|
710
738
|
* })
|
|
711
739
|
*/
|
|
712
|
-
keyup(
|
|
740
|
+
keyup(element, handler, option) {
|
|
713
741
|
let DOMUtilsContext = this;
|
|
714
|
-
if (
|
|
742
|
+
if (element == null) {
|
|
715
743
|
return;
|
|
716
744
|
}
|
|
717
|
-
if (typeof
|
|
718
|
-
|
|
745
|
+
if (typeof element === "string") {
|
|
746
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
719
747
|
}
|
|
720
|
-
|
|
748
|
+
if (isNodeList(element)) {
|
|
749
|
+
// 设置
|
|
750
|
+
element.forEach(($ele) => {
|
|
751
|
+
DOMUtilsContext.keyup($ele, handler, option);
|
|
752
|
+
});
|
|
753
|
+
return;
|
|
754
|
+
}
|
|
755
|
+
DOMUtilsContext.on(element, "keyup", null, handler, option);
|
|
721
756
|
}
|
|
722
757
|
/**
|
|
723
758
|
* 当按键按下时触发事件
|
|
724
759
|
* keydown - > keypress - > keyup
|
|
725
|
-
* @param
|
|
760
|
+
* @param element 目标
|
|
726
761
|
* @param handler 事件处理函数
|
|
727
762
|
* @param option 配置
|
|
728
763
|
* @example
|
|
@@ -734,20 +769,27 @@
|
|
|
734
769
|
* console.log("按键按下");
|
|
735
770
|
* })
|
|
736
771
|
*/
|
|
737
|
-
keydown(
|
|
772
|
+
keydown(element, handler, option) {
|
|
738
773
|
let DOMUtilsContext = this;
|
|
739
|
-
if (
|
|
774
|
+
if (element == null) {
|
|
740
775
|
return;
|
|
741
776
|
}
|
|
742
|
-
if (typeof
|
|
743
|
-
|
|
777
|
+
if (typeof element === "string") {
|
|
778
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
744
779
|
}
|
|
745
|
-
|
|
780
|
+
if (isNodeList(element)) {
|
|
781
|
+
// 设置
|
|
782
|
+
element.forEach(($ele) => {
|
|
783
|
+
DOMUtilsContext.keydown($ele, handler, option);
|
|
784
|
+
});
|
|
785
|
+
return;
|
|
786
|
+
}
|
|
787
|
+
DOMUtilsContext.on(element, "keydown", null, handler, option);
|
|
746
788
|
}
|
|
747
789
|
/**
|
|
748
790
|
* 当按键按下时触发事件
|
|
749
791
|
* keydown - > keypress - > keyup
|
|
750
|
-
* @param
|
|
792
|
+
* @param element 目标
|
|
751
793
|
* @param handler 事件处理函数
|
|
752
794
|
* @param option 配置
|
|
753
795
|
* @example
|
|
@@ -759,20 +801,27 @@
|
|
|
759
801
|
* console.log("按键按下");
|
|
760
802
|
* })
|
|
761
803
|
*/
|
|
762
|
-
keypress(
|
|
804
|
+
keypress(element, handler, option) {
|
|
763
805
|
let DOMUtilsContext = this;
|
|
764
|
-
if (
|
|
806
|
+
if (element == null) {
|
|
765
807
|
return;
|
|
766
808
|
}
|
|
767
|
-
if (typeof
|
|
768
|
-
|
|
809
|
+
if (typeof element === "string") {
|
|
810
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
811
|
+
}
|
|
812
|
+
if (isNodeList(element)) {
|
|
813
|
+
// 设置
|
|
814
|
+
element.forEach(($ele) => {
|
|
815
|
+
DOMUtilsContext.keypress($ele, handler, option);
|
|
816
|
+
});
|
|
817
|
+
return;
|
|
769
818
|
}
|
|
770
|
-
DOMUtilsContext.on(
|
|
819
|
+
DOMUtilsContext.on(element, "keypress", null, handler, option);
|
|
771
820
|
}
|
|
772
821
|
/**
|
|
773
822
|
* 监听某个元素键盘按键事件或window全局按键事件
|
|
774
823
|
* 按下有值的键时触发,按下Ctrl\Alt\Shift\Meta是无值键。按下先触发keydown事件,再触发keypress事件。
|
|
775
|
-
* @param
|
|
824
|
+
* @param element 需要监听的对象,可以是全局Window或者某个元素
|
|
776
825
|
* @param eventName 事件名,默认keypress
|
|
777
826
|
* @param callback 自己定义的回调事件,参数1为当前的key,参数2为组合按键,数组类型,包含ctrl、shift、alt和meta(win键或mac的cmd键)
|
|
778
827
|
* @param options 监听事件的配置
|
|
@@ -832,7 +881,11 @@
|
|
|
832
881
|
搜索 170
|
|
833
882
|
收藏 171
|
|
834
883
|
**/
|
|
835
|
-
listenKeyboard(
|
|
884
|
+
listenKeyboard(element, eventName = "keypress", callback, options) {
|
|
885
|
+
let DOMUtilsContext = this;
|
|
886
|
+
if (typeof element === "string") {
|
|
887
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
888
|
+
}
|
|
836
889
|
let keyboardEventCallBack = function (event) {
|
|
837
890
|
/** 键名 */
|
|
838
891
|
let keyName = event.key || event.code;
|
|
@@ -856,29 +909,90 @@
|
|
|
856
909
|
callback(keyName, keyValue, otherCodeList, event);
|
|
857
910
|
}
|
|
858
911
|
};
|
|
859
|
-
|
|
912
|
+
DOMUtilsContext.on(element, eventName, keyboardEventCallBack, options);
|
|
860
913
|
return {
|
|
861
914
|
removeListen: () => {
|
|
862
|
-
|
|
915
|
+
DOMUtilsContext.off(element, eventName, keyboardEventCallBack, options);
|
|
863
916
|
},
|
|
864
917
|
};
|
|
865
918
|
}
|
|
919
|
+
selector(selector) {
|
|
920
|
+
return this.selectorAll(selector)[0];
|
|
921
|
+
}
|
|
922
|
+
selectorAll(selector) {
|
|
923
|
+
const context = this;
|
|
924
|
+
selector = selector.trim();
|
|
925
|
+
if (selector.match(/[^\s]{1}:empty$/gi)) {
|
|
926
|
+
// empty 语法
|
|
927
|
+
selector = selector.replace(/:empty$/gi, "");
|
|
928
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {
|
|
929
|
+
return $ele?.innerHTML?.trim() === "";
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/gi) ||
|
|
933
|
+
selector.match(/[^\s]{1}:contains\('(.*)'\)$/gi)) {
|
|
934
|
+
// contains 语法
|
|
935
|
+
let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
936
|
+
let text = textMatch[2];
|
|
937
|
+
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
938
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {
|
|
939
|
+
// @ts-ignore
|
|
940
|
+
return ($ele?.textContent || $ele?.innerText)?.includes(text);
|
|
941
|
+
});
|
|
942
|
+
}
|
|
943
|
+
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/gi) ||
|
|
944
|
+
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/gi)) {
|
|
945
|
+
// regexp 语法
|
|
946
|
+
let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
947
|
+
let text = textMatch[2];
|
|
948
|
+
let regexp = new RegExp(text);
|
|
949
|
+
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
950
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {
|
|
951
|
+
// @ts-ignore
|
|
952
|
+
return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));
|
|
953
|
+
});
|
|
954
|
+
}
|
|
955
|
+
else {
|
|
956
|
+
// 普通语法
|
|
957
|
+
return Array.from(context.windowApi.document.querySelectorAll(selector));
|
|
958
|
+
}
|
|
959
|
+
}
|
|
866
960
|
}
|
|
867
961
|
|
|
962
|
+
/**
|
|
963
|
+
* 判断是否是元素列表
|
|
964
|
+
* @param $ele
|
|
965
|
+
*/
|
|
966
|
+
const isNodeList = ($ele) => {
|
|
967
|
+
return Array.isArray($ele) || $ele instanceof NodeList;
|
|
968
|
+
};
|
|
868
969
|
class DOMUtils extends DOMUtilsEvent {
|
|
869
970
|
constructor(option) {
|
|
870
971
|
super(option);
|
|
871
972
|
}
|
|
872
973
|
/** 版本号 */
|
|
873
|
-
version = "2024.10.
|
|
974
|
+
version = "2024.10.22";
|
|
874
975
|
attr(element, attrName, attrValue) {
|
|
875
976
|
let DOMUtilsContext = this;
|
|
876
977
|
if (typeof element === "string") {
|
|
877
|
-
element = DOMUtilsContext.windowApi.document.
|
|
978
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
878
979
|
}
|
|
879
980
|
if (element == null) {
|
|
880
981
|
return;
|
|
881
982
|
}
|
|
983
|
+
if (isNodeList(element)) {
|
|
984
|
+
if (attrValue == null) {
|
|
985
|
+
// 获取属性
|
|
986
|
+
return DOMUtilsContext.attr(element[0], attrName, attrValue);
|
|
987
|
+
}
|
|
988
|
+
else {
|
|
989
|
+
// 设置属性
|
|
990
|
+
element.forEach(($ele) => {
|
|
991
|
+
DOMUtilsContext.attr($ele, attrName, attrValue);
|
|
992
|
+
});
|
|
993
|
+
return;
|
|
994
|
+
}
|
|
995
|
+
}
|
|
882
996
|
if (attrValue == null) {
|
|
883
997
|
return element.getAttribute(attrName);
|
|
884
998
|
}
|
|
@@ -967,14 +1081,40 @@
|
|
|
967
1081
|
return propertyValue;
|
|
968
1082
|
}
|
|
969
1083
|
if (typeof element === "string") {
|
|
970
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1084
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
971
1085
|
}
|
|
972
1086
|
if (element == null) {
|
|
973
1087
|
return;
|
|
974
1088
|
}
|
|
1089
|
+
if (isNodeList(element)) {
|
|
1090
|
+
if (typeof property === "string") {
|
|
1091
|
+
if (value == null) {
|
|
1092
|
+
// 获取属性
|
|
1093
|
+
return DOMUtilsContext.css(element[0], property);
|
|
1094
|
+
}
|
|
1095
|
+
else {
|
|
1096
|
+
// 设置属性
|
|
1097
|
+
element.forEach(($ele) => {
|
|
1098
|
+
DOMUtilsContext.css($ele, property);
|
|
1099
|
+
});
|
|
1100
|
+
return;
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
else if (typeof property === "object") {
|
|
1104
|
+
// 设置属性
|
|
1105
|
+
element.forEach(($ele) => {
|
|
1106
|
+
DOMUtilsContext.css($ele, property);
|
|
1107
|
+
});
|
|
1108
|
+
return;
|
|
1109
|
+
}
|
|
1110
|
+
else ;
|
|
1111
|
+
return;
|
|
1112
|
+
}
|
|
975
1113
|
if (typeof property === "string") {
|
|
976
1114
|
if (value == null) {
|
|
977
|
-
return
|
|
1115
|
+
return DOMUtilsContext.windowApi.globalThis
|
|
1116
|
+
.getComputedStyle(element)
|
|
1117
|
+
.getPropertyValue(property);
|
|
978
1118
|
}
|
|
979
1119
|
else {
|
|
980
1120
|
if (value === "string" && value.includes("!important")) {
|
|
@@ -998,15 +1138,29 @@
|
|
|
998
1138
|
}
|
|
999
1139
|
}
|
|
1000
1140
|
}
|
|
1141
|
+
else ;
|
|
1001
1142
|
}
|
|
1002
1143
|
text(element, text) {
|
|
1003
1144
|
let DOMUtilsContext = this;
|
|
1004
1145
|
if (typeof element === "string") {
|
|
1005
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1146
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1006
1147
|
}
|
|
1007
1148
|
if (element == null) {
|
|
1008
1149
|
return;
|
|
1009
1150
|
}
|
|
1151
|
+
if (isNodeList(element)) {
|
|
1152
|
+
if (text == null) {
|
|
1153
|
+
// 获取
|
|
1154
|
+
return DOMUtilsContext.text(element[0]);
|
|
1155
|
+
}
|
|
1156
|
+
else {
|
|
1157
|
+
// 设置
|
|
1158
|
+
element.forEach(($ele) => {
|
|
1159
|
+
DOMUtilsContext.text($ele, text);
|
|
1160
|
+
});
|
|
1161
|
+
}
|
|
1162
|
+
return;
|
|
1163
|
+
}
|
|
1010
1164
|
if (text == null) {
|
|
1011
1165
|
return element.textContent || element.innerText;
|
|
1012
1166
|
}
|
|
@@ -1025,15 +1179,30 @@
|
|
|
1025
1179
|
html(element, html) {
|
|
1026
1180
|
let DOMUtilsContext = this;
|
|
1027
1181
|
if (typeof element === "string") {
|
|
1028
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1182
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1029
1183
|
}
|
|
1030
1184
|
if (element == null) {
|
|
1031
1185
|
return;
|
|
1032
1186
|
}
|
|
1187
|
+
if (isNodeList(element)) {
|
|
1188
|
+
if (html == null) {
|
|
1189
|
+
// 获取
|
|
1190
|
+
return DOMUtilsContext.html(element[0]);
|
|
1191
|
+
}
|
|
1192
|
+
else {
|
|
1193
|
+
// 设置
|
|
1194
|
+
element.forEach(($ele) => {
|
|
1195
|
+
DOMUtilsContext.html($ele, html);
|
|
1196
|
+
});
|
|
1197
|
+
}
|
|
1198
|
+
return;
|
|
1199
|
+
}
|
|
1033
1200
|
if (html == null) {
|
|
1201
|
+
// 获取
|
|
1034
1202
|
return element.innerHTML;
|
|
1035
1203
|
}
|
|
1036
1204
|
else {
|
|
1205
|
+
// 设置
|
|
1037
1206
|
if (html instanceof Element) {
|
|
1038
1207
|
html = html.innerHTML;
|
|
1039
1208
|
}
|
|
@@ -1056,7 +1225,7 @@
|
|
|
1056
1225
|
recovery();
|
|
1057
1226
|
return transformInfo;
|
|
1058
1227
|
}
|
|
1059
|
-
let elementTransform = getComputedStyle(element).transform;
|
|
1228
|
+
let elementTransform = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element).transform;
|
|
1060
1229
|
if (elementTransform != null &&
|
|
1061
1230
|
elementTransform !== "none" &&
|
|
1062
1231
|
elementTransform !== "") {
|
|
@@ -1080,12 +1249,26 @@
|
|
|
1080
1249
|
val(element, value) {
|
|
1081
1250
|
let DOMUtilsContext = this;
|
|
1082
1251
|
if (typeof element === "string") {
|
|
1083
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1252
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1084
1253
|
}
|
|
1085
1254
|
if (element == null) {
|
|
1086
1255
|
return;
|
|
1087
1256
|
}
|
|
1257
|
+
if (isNodeList(element)) {
|
|
1258
|
+
if (value == null) {
|
|
1259
|
+
// 获取
|
|
1260
|
+
return DOMUtilsContext.val(element[0]);
|
|
1261
|
+
}
|
|
1262
|
+
else {
|
|
1263
|
+
// 设置
|
|
1264
|
+
element.forEach(($ele) => {
|
|
1265
|
+
DOMUtilsContext.val($ele, value);
|
|
1266
|
+
});
|
|
1267
|
+
}
|
|
1268
|
+
return;
|
|
1269
|
+
}
|
|
1088
1270
|
if (value == null) {
|
|
1271
|
+
// 获取
|
|
1089
1272
|
if (element.localName === "input" &&
|
|
1090
1273
|
(element.type === "checkbox" || element.type === "radio")) {
|
|
1091
1274
|
return element.checked;
|
|
@@ -1095,6 +1278,7 @@
|
|
|
1095
1278
|
}
|
|
1096
1279
|
}
|
|
1097
1280
|
else {
|
|
1281
|
+
// 设置
|
|
1098
1282
|
if (element.localName === "input" &&
|
|
1099
1283
|
(element.type === "checkbox" || element.type === "radio")) {
|
|
1100
1284
|
element.checked = !!value;
|
|
@@ -1106,17 +1290,30 @@
|
|
|
1106
1290
|
}
|
|
1107
1291
|
prop(element, propName, propValue) {
|
|
1108
1292
|
let DOMUtilsContext = this;
|
|
1293
|
+
if (typeof element === "string") {
|
|
1294
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1295
|
+
}
|
|
1109
1296
|
if (element == null) {
|
|
1110
1297
|
return;
|
|
1111
1298
|
}
|
|
1112
|
-
if (
|
|
1113
|
-
|
|
1299
|
+
if (isNodeList(element)) {
|
|
1300
|
+
if (propValue == null) {
|
|
1301
|
+
// 获取
|
|
1302
|
+
return DOMUtilsContext.prop(element[0], propName);
|
|
1303
|
+
}
|
|
1304
|
+
else {
|
|
1305
|
+
// 设置
|
|
1306
|
+
element.forEach(($ele) => {
|
|
1307
|
+
DOMUtilsContext.prop($ele, propName, propValue);
|
|
1308
|
+
});
|
|
1309
|
+
}
|
|
1310
|
+
return;
|
|
1114
1311
|
}
|
|
1115
1312
|
if (propValue == null) {
|
|
1116
|
-
return element
|
|
1313
|
+
return Reflect.get(element, propName);
|
|
1117
1314
|
}
|
|
1118
1315
|
else {
|
|
1119
|
-
element
|
|
1316
|
+
Reflect.set(element, propName, propValue);
|
|
1120
1317
|
}
|
|
1121
1318
|
}
|
|
1122
1319
|
/**
|
|
@@ -1131,11 +1328,18 @@
|
|
|
1131
1328
|
removeAttr(element, attrName) {
|
|
1132
1329
|
let DOMUtilsContext = this;
|
|
1133
1330
|
if (typeof element === "string") {
|
|
1134
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1331
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1135
1332
|
}
|
|
1136
1333
|
if (element == null) {
|
|
1137
1334
|
return;
|
|
1138
1335
|
}
|
|
1336
|
+
if (isNodeList(element)) {
|
|
1337
|
+
// 设置
|
|
1338
|
+
element.forEach(($ele) => {
|
|
1339
|
+
DOMUtilsContext.removeAttr($ele, attrName);
|
|
1340
|
+
});
|
|
1341
|
+
return;
|
|
1342
|
+
}
|
|
1139
1343
|
element.removeAttribute(attrName);
|
|
1140
1344
|
}
|
|
1141
1345
|
/**
|
|
@@ -1150,15 +1354,30 @@
|
|
|
1150
1354
|
removeClass(element, className) {
|
|
1151
1355
|
let DOMUtilsContext = this;
|
|
1152
1356
|
if (typeof element === "string") {
|
|
1153
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1357
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1154
1358
|
}
|
|
1155
1359
|
if (element == null) {
|
|
1156
1360
|
return;
|
|
1157
1361
|
}
|
|
1158
|
-
if (
|
|
1362
|
+
if (isNodeList(element)) {
|
|
1363
|
+
// 设置
|
|
1364
|
+
element.forEach(($ele) => {
|
|
1365
|
+
DOMUtilsContext.removeClass($ele, className);
|
|
1366
|
+
});
|
|
1159
1367
|
return;
|
|
1160
1368
|
}
|
|
1161
|
-
|
|
1369
|
+
if (className == null) {
|
|
1370
|
+
// 清空全部className
|
|
1371
|
+
element.className = "";
|
|
1372
|
+
}
|
|
1373
|
+
else {
|
|
1374
|
+
if (!Array.isArray(className)) {
|
|
1375
|
+
className = className.split(" ");
|
|
1376
|
+
}
|
|
1377
|
+
className.forEach((itemClassName) => {
|
|
1378
|
+
element.classList.remove(itemClassName);
|
|
1379
|
+
});
|
|
1380
|
+
}
|
|
1162
1381
|
}
|
|
1163
1382
|
/**
|
|
1164
1383
|
* 移除元素的属性
|
|
@@ -1172,11 +1391,18 @@
|
|
|
1172
1391
|
removeProp(element, propName) {
|
|
1173
1392
|
let DOMUtilsContext = this;
|
|
1174
1393
|
if (typeof element === "string") {
|
|
1175
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1394
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1176
1395
|
}
|
|
1177
1396
|
if (element == null) {
|
|
1178
1397
|
return;
|
|
1179
1398
|
}
|
|
1399
|
+
if (isNodeList(element)) {
|
|
1400
|
+
// 设置
|
|
1401
|
+
element.forEach(($ele) => {
|
|
1402
|
+
DOMUtilsContext.removeProp($ele, propName);
|
|
1403
|
+
});
|
|
1404
|
+
return;
|
|
1405
|
+
}
|
|
1180
1406
|
DOMUtilsCommonUtils.delete(element, propName);
|
|
1181
1407
|
}
|
|
1182
1408
|
/**
|
|
@@ -1191,22 +1417,22 @@
|
|
|
1191
1417
|
replaceWith(element, newElement) {
|
|
1192
1418
|
let DOMUtilsContext = this;
|
|
1193
1419
|
if (typeof element === "string") {
|
|
1194
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1420
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1195
1421
|
}
|
|
1196
1422
|
if (element == null) {
|
|
1197
1423
|
return;
|
|
1198
1424
|
}
|
|
1199
|
-
if (
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
element.forEach((item) => {
|
|
1204
|
-
DOMUtilsContext.replaceWith(item, newElement);
|
|
1425
|
+
if (isNodeList(element)) {
|
|
1426
|
+
// 设置
|
|
1427
|
+
element.forEach(($ele) => {
|
|
1428
|
+
DOMUtilsContext.replaceWith($ele, newElement);
|
|
1205
1429
|
});
|
|
1430
|
+
return;
|
|
1206
1431
|
}
|
|
1207
|
-
|
|
1208
|
-
|
|
1432
|
+
if (typeof newElement === "string") {
|
|
1433
|
+
newElement = DOMUtilsContext.parseHTML(newElement, false, false);
|
|
1209
1434
|
}
|
|
1435
|
+
element.parentElement.replaceChild(newElement, element);
|
|
1210
1436
|
}
|
|
1211
1437
|
/**
|
|
1212
1438
|
* 给元素添加class
|
|
@@ -1220,12 +1446,27 @@
|
|
|
1220
1446
|
addClass(element, className) {
|
|
1221
1447
|
let DOMUtilsContext = this;
|
|
1222
1448
|
if (typeof element === "string") {
|
|
1223
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1449
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1224
1450
|
}
|
|
1225
1451
|
if (element == null) {
|
|
1226
1452
|
return;
|
|
1227
1453
|
}
|
|
1228
|
-
element
|
|
1454
|
+
if (isNodeList(element)) {
|
|
1455
|
+
// 设置
|
|
1456
|
+
element.forEach(($ele) => {
|
|
1457
|
+
DOMUtilsContext.addClass($ele, className);
|
|
1458
|
+
});
|
|
1459
|
+
return;
|
|
1460
|
+
}
|
|
1461
|
+
if (!Array.isArray(className)) {
|
|
1462
|
+
className = className.split(" ");
|
|
1463
|
+
}
|
|
1464
|
+
className.forEach((itemClassName) => {
|
|
1465
|
+
if (itemClassName.trim() == "") {
|
|
1466
|
+
return;
|
|
1467
|
+
}
|
|
1468
|
+
element.classList.add(itemClassName);
|
|
1469
|
+
});
|
|
1229
1470
|
}
|
|
1230
1471
|
/**
|
|
1231
1472
|
* 函数在元素内部末尾添加子元素或HTML字符串
|
|
@@ -1239,11 +1480,18 @@
|
|
|
1239
1480
|
append(element, content) {
|
|
1240
1481
|
let DOMUtilsContext = this;
|
|
1241
1482
|
if (typeof element === "string") {
|
|
1242
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1483
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1243
1484
|
}
|
|
1244
1485
|
if (element == null) {
|
|
1245
1486
|
return;
|
|
1246
1487
|
}
|
|
1488
|
+
if (isNodeList(element)) {
|
|
1489
|
+
// 设置
|
|
1490
|
+
element.forEach(($ele) => {
|
|
1491
|
+
DOMUtilsContext.append($ele, content);
|
|
1492
|
+
});
|
|
1493
|
+
return;
|
|
1494
|
+
}
|
|
1247
1495
|
function elementAppendChild(ele, text) {
|
|
1248
1496
|
if (typeof content === "string") {
|
|
1249
1497
|
ele.insertAdjacentHTML("beforeend", text);
|
|
@@ -1257,7 +1505,7 @@
|
|
|
1257
1505
|
let fragment = DOMUtilsContext.windowApi.document.createDocumentFragment();
|
|
1258
1506
|
content.forEach((ele) => {
|
|
1259
1507
|
if (typeof ele === "string") {
|
|
1260
|
-
ele =
|
|
1508
|
+
ele = DOMUtilsContext.parseHTML(ele, true, false);
|
|
1261
1509
|
}
|
|
1262
1510
|
fragment.appendChild(ele);
|
|
1263
1511
|
});
|
|
@@ -1279,11 +1527,18 @@
|
|
|
1279
1527
|
prepend(element, content) {
|
|
1280
1528
|
let DOMUtilsContext = this;
|
|
1281
1529
|
if (typeof element === "string") {
|
|
1282
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1530
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1283
1531
|
}
|
|
1284
1532
|
if (element == null) {
|
|
1285
1533
|
return;
|
|
1286
1534
|
}
|
|
1535
|
+
if (isNodeList(element)) {
|
|
1536
|
+
// 设置
|
|
1537
|
+
element.forEach(($ele) => {
|
|
1538
|
+
DOMUtilsContext.prepend($ele, content);
|
|
1539
|
+
});
|
|
1540
|
+
return;
|
|
1541
|
+
}
|
|
1287
1542
|
if (typeof content === "string") {
|
|
1288
1543
|
element.insertAdjacentHTML("afterbegin", content);
|
|
1289
1544
|
}
|
|
@@ -1309,11 +1564,18 @@
|
|
|
1309
1564
|
after(element, content) {
|
|
1310
1565
|
let DOMUtilsContext = this;
|
|
1311
1566
|
if (typeof element === "string") {
|
|
1312
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1567
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1313
1568
|
}
|
|
1314
1569
|
if (element == null) {
|
|
1315
1570
|
return;
|
|
1316
1571
|
}
|
|
1572
|
+
if (isNodeList(element)) {
|
|
1573
|
+
// 设置
|
|
1574
|
+
element.forEach(($ele) => {
|
|
1575
|
+
DOMUtilsContext.after($ele, content);
|
|
1576
|
+
});
|
|
1577
|
+
return;
|
|
1578
|
+
}
|
|
1317
1579
|
if (typeof content === "string") {
|
|
1318
1580
|
element.insertAdjacentHTML("afterend", content);
|
|
1319
1581
|
}
|
|
@@ -1341,11 +1603,18 @@
|
|
|
1341
1603
|
before(element, content) {
|
|
1342
1604
|
let DOMUtilsContext = this;
|
|
1343
1605
|
if (typeof element === "string") {
|
|
1344
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1606
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1345
1607
|
}
|
|
1346
1608
|
if (element == null) {
|
|
1347
1609
|
return;
|
|
1348
1610
|
}
|
|
1611
|
+
if (isNodeList(element)) {
|
|
1612
|
+
// 设置
|
|
1613
|
+
element.forEach(($ele) => {
|
|
1614
|
+
DOMUtilsContext.before($ele, content);
|
|
1615
|
+
});
|
|
1616
|
+
return;
|
|
1617
|
+
}
|
|
1349
1618
|
if (typeof content === "string") {
|
|
1350
1619
|
element.insertAdjacentHTML("beforebegin", content);
|
|
1351
1620
|
}
|
|
@@ -1361,30 +1630,28 @@
|
|
|
1361
1630
|
}
|
|
1362
1631
|
/**
|
|
1363
1632
|
* 移除元素
|
|
1364
|
-
* @param
|
|
1633
|
+
* @param element 目标元素
|
|
1365
1634
|
* @example
|
|
1366
1635
|
* // 元素a.xx前面添加一个元素
|
|
1367
1636
|
* DOMUtils.remove(document.querySelector("a.xx"))
|
|
1368
1637
|
* DOMUtils.remove(document.querySelectorAll("a.xx"))
|
|
1369
1638
|
* DOMUtils.remove("a.xx")
|
|
1370
1639
|
* */
|
|
1371
|
-
remove(
|
|
1640
|
+
remove(element) {
|
|
1372
1641
|
let DOMUtilsContext = this;
|
|
1373
|
-
if (typeof
|
|
1374
|
-
|
|
1642
|
+
if (typeof element === "string") {
|
|
1643
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1375
1644
|
}
|
|
1376
|
-
if (
|
|
1645
|
+
if (element == null) {
|
|
1377
1646
|
return;
|
|
1378
1647
|
}
|
|
1379
|
-
if (
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
}
|
|
1385
|
-
else {
|
|
1386
|
-
target.remove();
|
|
1648
|
+
if (isNodeList(element)) {
|
|
1649
|
+
element.forEach(($ele) => {
|
|
1650
|
+
DOMUtilsContext.remove($ele);
|
|
1651
|
+
});
|
|
1652
|
+
return;
|
|
1387
1653
|
}
|
|
1654
|
+
element.remove();
|
|
1388
1655
|
}
|
|
1389
1656
|
/**
|
|
1390
1657
|
* 移除元素的所有子元素
|
|
@@ -1397,11 +1664,18 @@
|
|
|
1397
1664
|
empty(element) {
|
|
1398
1665
|
let DOMUtilsContext = this;
|
|
1399
1666
|
if (typeof element === "string") {
|
|
1400
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1667
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1401
1668
|
}
|
|
1402
1669
|
if (element == null) {
|
|
1403
1670
|
return;
|
|
1404
1671
|
}
|
|
1672
|
+
if (isNodeList(element)) {
|
|
1673
|
+
// 设置
|
|
1674
|
+
element.forEach(($ele) => {
|
|
1675
|
+
DOMUtilsContext.empty($ele);
|
|
1676
|
+
});
|
|
1677
|
+
return;
|
|
1678
|
+
}
|
|
1405
1679
|
element.innerHTML = "";
|
|
1406
1680
|
}
|
|
1407
1681
|
/**
|
|
@@ -1432,7 +1706,8 @@
|
|
|
1432
1706
|
width(element, isShow = false) {
|
|
1433
1707
|
let DOMUtilsContext = this;
|
|
1434
1708
|
if (typeof element === "string") {
|
|
1435
|
-
element =
|
|
1709
|
+
element =
|
|
1710
|
+
DOMUtilsContext.windowApi.document.querySelector(element);
|
|
1436
1711
|
}
|
|
1437
1712
|
if (element == null) {
|
|
1438
1713
|
return;
|
|
@@ -1544,7 +1819,7 @@
|
|
|
1544
1819
|
}
|
|
1545
1820
|
element = element;
|
|
1546
1821
|
if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
1547
|
-
let style = getComputedStyle(element, null);
|
|
1822
|
+
let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);
|
|
1548
1823
|
let marginLeft = DOMUtilsCommonUtils.getStyleValue(style, "marginLeft");
|
|
1549
1824
|
let marginRight = DOMUtilsCommonUtils.getStyleValue(style, "marginRight");
|
|
1550
1825
|
return element.offsetWidth + marginLeft + marginRight;
|
|
@@ -1570,7 +1845,7 @@
|
|
|
1570
1845
|
}
|
|
1571
1846
|
element = element;
|
|
1572
1847
|
if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
1573
|
-
let style = getComputedStyle(element, null);
|
|
1848
|
+
let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);
|
|
1574
1849
|
let marginTop = DOMUtilsCommonUtils.getStyleValue(style, "marginTop");
|
|
1575
1850
|
let marginBottom = DOMUtilsCommonUtils.getStyleValue(style, "marginBottom");
|
|
1576
1851
|
return element.offsetHeight + marginTop + marginBottom;
|
|
@@ -1597,11 +1872,18 @@
|
|
|
1597
1872
|
animate(element, styles, duration = 1000, callback = null) {
|
|
1598
1873
|
let DOMUtilsContext = this;
|
|
1599
1874
|
if (typeof element === "string") {
|
|
1600
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1875
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1601
1876
|
}
|
|
1602
1877
|
if (element == null) {
|
|
1603
1878
|
return;
|
|
1604
1879
|
}
|
|
1880
|
+
if (isNodeList(element)) {
|
|
1881
|
+
// 设置
|
|
1882
|
+
element.forEach(($ele) => {
|
|
1883
|
+
DOMUtilsContext.animate($ele, styles, duration, callback);
|
|
1884
|
+
});
|
|
1885
|
+
return;
|
|
1886
|
+
}
|
|
1605
1887
|
if (typeof duration !== "number" || duration <= 0) {
|
|
1606
1888
|
throw new TypeError("duration must be a positive number");
|
|
1607
1889
|
}
|
|
@@ -1618,7 +1900,9 @@
|
|
|
1618
1900
|
let from = {};
|
|
1619
1901
|
let to = {};
|
|
1620
1902
|
for (let prop in styles) {
|
|
1621
|
-
from[prop] =
|
|
1903
|
+
from[prop] =
|
|
1904
|
+
element.style[prop] ||
|
|
1905
|
+
DOMUtilsContext.windowApi.globalThis.getComputedStyle(element)[prop];
|
|
1622
1906
|
to[prop] = styles[prop];
|
|
1623
1907
|
}
|
|
1624
1908
|
let timer = setInterval(function () {
|
|
@@ -1650,18 +1934,26 @@
|
|
|
1650
1934
|
wrap(element, wrapperHTML) {
|
|
1651
1935
|
let DOMUtilsContext = this;
|
|
1652
1936
|
if (typeof element === "string") {
|
|
1653
|
-
element = DOMUtilsContext.windowApi.document.
|
|
1937
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1654
1938
|
}
|
|
1655
1939
|
if (element == null) {
|
|
1656
1940
|
return;
|
|
1657
1941
|
}
|
|
1942
|
+
if (isNodeList(element)) {
|
|
1943
|
+
// 设置
|
|
1944
|
+
element.forEach(($ele) => {
|
|
1945
|
+
DOMUtilsContext.wrap($ele, wrapperHTML);
|
|
1946
|
+
});
|
|
1947
|
+
return;
|
|
1948
|
+
}
|
|
1658
1949
|
element = element;
|
|
1659
1950
|
// 创建一个新的div元素,并将wrapperHTML作为其innerHTML
|
|
1660
1951
|
let wrapper = DOMUtilsContext.windowApi.document.createElement("div");
|
|
1661
1952
|
wrapper.innerHTML = wrapperHTML;
|
|
1662
1953
|
let wrapperFirstChild = wrapper.firstChild;
|
|
1663
1954
|
// 将要包裹的元素插入目标元素前面
|
|
1664
|
-
element.parentElement
|
|
1955
|
+
let parentElement = element.parentElement;
|
|
1956
|
+
parentElement.insertBefore(wrapperFirstChild, element);
|
|
1665
1957
|
// 将要包裹的元素移动到wrapper中
|
|
1666
1958
|
wrapperFirstChild.appendChild(element);
|
|
1667
1959
|
}
|
|
@@ -1741,6 +2033,8 @@
|
|
|
1741
2033
|
}
|
|
1742
2034
|
parseHTML(html, useParser = false, isComplete = false) {
|
|
1743
2035
|
let DOMUtilsContext = this;
|
|
2036
|
+
// 去除html前后的空格
|
|
2037
|
+
html = html.trim();
|
|
1744
2038
|
function parseHTMLByDOMParser() {
|
|
1745
2039
|
let parser = new DOMParser();
|
|
1746
2040
|
if (isComplete) {
|
|
@@ -1767,16 +2061,61 @@
|
|
|
1767
2061
|
return parseHTMLByCreateDom();
|
|
1768
2062
|
}
|
|
1769
2063
|
}
|
|
2064
|
+
/**
|
|
2065
|
+
* 序列化表单元素
|
|
2066
|
+
* @param $form 表单元素
|
|
2067
|
+
* @example
|
|
2068
|
+
* DOMUtils.serialize(document.querySelector("form"))
|
|
2069
|
+
* > xxx=xxx&aaa=
|
|
2070
|
+
*/
|
|
2071
|
+
serialize($form) {
|
|
2072
|
+
const elements = $form.elements;
|
|
2073
|
+
let serializedArray = [];
|
|
2074
|
+
for (let i = 0; i < elements.length; i++) {
|
|
2075
|
+
const element = elements[i];
|
|
2076
|
+
if (element.name &&
|
|
2077
|
+
!element.disabled &&
|
|
2078
|
+
(element.checked ||
|
|
2079
|
+
[
|
|
2080
|
+
"text",
|
|
2081
|
+
"hidden",
|
|
2082
|
+
"password",
|
|
2083
|
+
"textarea",
|
|
2084
|
+
"select-one",
|
|
2085
|
+
"select-multiple",
|
|
2086
|
+
].includes(element.type))) {
|
|
2087
|
+
if (element.type === "select-multiple") {
|
|
2088
|
+
for (let j = 0; j < element.options.length; j++) {
|
|
2089
|
+
if (element.options[j].selected) {
|
|
2090
|
+
serializedArray.push({
|
|
2091
|
+
name: element.name,
|
|
2092
|
+
value: element.options[j].value,
|
|
2093
|
+
});
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
}
|
|
2097
|
+
else {
|
|
2098
|
+
serializedArray.push({ name: element.name, value: element.value });
|
|
2099
|
+
}
|
|
2100
|
+
}
|
|
2101
|
+
}
|
|
2102
|
+
return serializedArray
|
|
2103
|
+
.map((item) => `${encodeURIComponent(item.name)}=${encodeURIComponent(item.value)}`)
|
|
2104
|
+
.join("&");
|
|
2105
|
+
}
|
|
1770
2106
|
/**
|
|
1771
2107
|
* 显示元素
|
|
1772
2108
|
* @param target 当前元素
|
|
2109
|
+
* @param checkVisiblie 是否检测元素是否显示
|
|
2110
|
+
* + true (默认)如果检测到还未显示,则强制使用display: unset !important;
|
|
2111
|
+
* + false 不检测,直接设置display属性为空
|
|
1773
2112
|
* @example
|
|
1774
2113
|
* // 显示a.xx元素
|
|
1775
2114
|
* DOMUtils.show(document.querySelector("a.xx"))
|
|
1776
2115
|
* DOMUtils.show(document.querySelectorAll("a.xx"))
|
|
1777
2116
|
* DOMUtils.show("a.xx")
|
|
1778
2117
|
*/
|
|
1779
|
-
show(target) {
|
|
2118
|
+
show(target, checkVisiblie = true) {
|
|
1780
2119
|
let DOMUtilsContext = this;
|
|
1781
2120
|
if (target == null) {
|
|
1782
2121
|
return;
|
|
@@ -1787,28 +2126,33 @@
|
|
|
1787
2126
|
if (target instanceof NodeList || target instanceof Array) {
|
|
1788
2127
|
target = target;
|
|
1789
2128
|
for (const element of target) {
|
|
1790
|
-
DOMUtilsContext.show(element);
|
|
2129
|
+
DOMUtilsContext.show(element, checkVisiblie);
|
|
1791
2130
|
}
|
|
1792
2131
|
}
|
|
1793
2132
|
else {
|
|
1794
2133
|
target = target;
|
|
1795
2134
|
target.style.display = "";
|
|
1796
|
-
if (
|
|
1797
|
-
|
|
1798
|
-
|
|
2135
|
+
if (checkVisiblie) {
|
|
2136
|
+
if (!DOMUtilsCommonUtils.isShow(target)) {
|
|
2137
|
+
/* 仍然是不显示,尝试使用强覆盖 */
|
|
2138
|
+
target.style.setProperty("display", "unset", "important");
|
|
2139
|
+
}
|
|
1799
2140
|
}
|
|
1800
2141
|
}
|
|
1801
2142
|
}
|
|
1802
2143
|
/**
|
|
1803
2144
|
* 隐藏元素
|
|
1804
2145
|
* @param target 当前元素
|
|
2146
|
+
* @param checkVisiblie 是否检测元素是否显示
|
|
2147
|
+
* + true (默认)如果检测到显示,则强制使用display: none !important;
|
|
2148
|
+
* + false 不检测,直接设置display属性为none
|
|
1805
2149
|
* @example
|
|
1806
2150
|
* // 隐藏a.xx元素
|
|
1807
2151
|
* DOMUtils.hide(document.querySelector("a.xx"))
|
|
1808
2152
|
* DOMUtils.hide(document.querySelectorAll("a.xx"))
|
|
1809
2153
|
* DOMUtils.hide("a.xx")
|
|
1810
2154
|
*/
|
|
1811
|
-
hide(target) {
|
|
2155
|
+
hide(target, checkVisiblie = true) {
|
|
1812
2156
|
let DOMUtilsContext = this;
|
|
1813
2157
|
if (target == null) {
|
|
1814
2158
|
return;
|
|
@@ -1819,15 +2163,17 @@
|
|
|
1819
2163
|
if (target instanceof NodeList || target instanceof Array) {
|
|
1820
2164
|
target = target;
|
|
1821
2165
|
for (const element of target) {
|
|
1822
|
-
DOMUtilsContext.hide(element);
|
|
2166
|
+
DOMUtilsContext.hide(element, checkVisiblie);
|
|
1823
2167
|
}
|
|
1824
2168
|
}
|
|
1825
2169
|
else {
|
|
1826
2170
|
target = target;
|
|
1827
2171
|
target.style.display = "none";
|
|
1828
|
-
if (
|
|
1829
|
-
|
|
1830
|
-
|
|
2172
|
+
if (checkVisiblie) {
|
|
2173
|
+
if (DOMUtilsCommonUtils.isShow(target)) {
|
|
2174
|
+
/* 仍然是显示,尝试使用强覆盖 */
|
|
2175
|
+
target.style.setProperty("display", "none", "important");
|
|
2176
|
+
}
|
|
1831
2177
|
}
|
|
1832
2178
|
}
|
|
1833
2179
|
}
|
|
@@ -1851,9 +2197,15 @@
|
|
|
1851
2197
|
}
|
|
1852
2198
|
let DOMUtilsContext = this;
|
|
1853
2199
|
if (typeof element === "string") {
|
|
1854
|
-
element = DOMUtilsContext.windowApi.document.
|
|
2200
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
2201
|
+
}
|
|
2202
|
+
if (isNodeList(element)) {
|
|
2203
|
+
// 设置
|
|
2204
|
+
element.forEach(($ele) => {
|
|
2205
|
+
DOMUtilsContext.fadeIn($ele, duration, callback);
|
|
2206
|
+
});
|
|
2207
|
+
return;
|
|
1855
2208
|
}
|
|
1856
|
-
element = element;
|
|
1857
2209
|
element.style.opacity = "0";
|
|
1858
2210
|
element.style.display = "";
|
|
1859
2211
|
let start = null;
|
|
@@ -1896,9 +2248,15 @@
|
|
|
1896
2248
|
return;
|
|
1897
2249
|
}
|
|
1898
2250
|
if (typeof element === "string") {
|
|
1899
|
-
element = DOMUtilsContext.windowApi.document.
|
|
2251
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
2252
|
+
}
|
|
2253
|
+
if (isNodeList(element)) {
|
|
2254
|
+
// 设置
|
|
2255
|
+
element.forEach(($ele) => {
|
|
2256
|
+
DOMUtilsContext.fadeOut($ele, duration, callback);
|
|
2257
|
+
});
|
|
2258
|
+
return;
|
|
1900
2259
|
}
|
|
1901
|
-
element = element;
|
|
1902
2260
|
element.style.opacity = "1";
|
|
1903
2261
|
let start = null;
|
|
1904
2262
|
let timer = null;
|
|
@@ -1924,24 +2282,34 @@
|
|
|
1924
2282
|
/**
|
|
1925
2283
|
* 切换元素的显示和隐藏状态
|
|
1926
2284
|
* @param element 当前元素
|
|
2285
|
+
* @param checkVisiblie 是否检测元素是否显示
|
|
1927
2286
|
* @example
|
|
1928
2287
|
* // 如果元素a.xx当前是隐藏,则显示,如果是显示,则隐藏
|
|
1929
2288
|
* DOMUtils.toggle(document.querySelector("a.xx"))
|
|
1930
2289
|
* DOMUtils.toggle("a.xx")
|
|
1931
2290
|
*/
|
|
1932
|
-
toggle(element) {
|
|
2291
|
+
toggle(element, checkVisiblie) {
|
|
1933
2292
|
let DOMUtilsContext = this;
|
|
1934
2293
|
if (typeof element === "string") {
|
|
1935
|
-
element = DOMUtilsContext.windowApi.document.
|
|
2294
|
+
element = DOMUtilsContext.windowApi.document.querySelectorAll(element);
|
|
1936
2295
|
}
|
|
1937
2296
|
if (element == null) {
|
|
1938
2297
|
return;
|
|
1939
2298
|
}
|
|
1940
|
-
if (
|
|
1941
|
-
|
|
2299
|
+
if (isNodeList(element)) {
|
|
2300
|
+
// 设置
|
|
2301
|
+
element.forEach(($ele) => {
|
|
2302
|
+
DOMUtilsContext.toggle($ele);
|
|
2303
|
+
});
|
|
2304
|
+
return;
|
|
2305
|
+
}
|
|
2306
|
+
if (DOMUtilsContext.windowApi.globalThis
|
|
2307
|
+
.getComputedStyle(element)
|
|
2308
|
+
.getPropertyValue("display") === "none") {
|
|
2309
|
+
DOMUtilsContext.show(element, checkVisiblie);
|
|
1942
2310
|
}
|
|
1943
2311
|
else {
|
|
1944
|
-
DOMUtilsContext.hide(element);
|
|
2312
|
+
DOMUtilsContext.hide(element, checkVisiblie);
|
|
1945
2313
|
}
|
|
1946
2314
|
}
|
|
1947
2315
|
/**
|