@whitesev/domutils 1.5.11 → 1.6.1
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 +129 -75
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +129 -75
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +129 -75
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +129 -75
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +129 -75
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +129 -75
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtils.d.ts +16 -12
- package/dist/types/src/DOMUtilsCommonUtils.d.ts +4 -0
- package/dist/types/src/DOMUtilsEvent.d.ts +18 -0
- package/dist/types/src/types/DOMUtilsEvent.d.ts +2 -1
- package/package.json +5 -3
- package/src/DOMUtils.ts +98 -254
- package/src/DOMUtilsCommonUtils.ts +9 -4
- package/src/DOMUtilsData.ts +1 -3
- package/src/DOMUtilsEvent.ts +121 -178
- package/src/types/DOMUtilsEvent.d.ts +2 -1
package/dist/index.esm.js
CHANGED
|
@@ -278,7 +278,7 @@ const createLoadOrReturnBroker = (loadBroker, worker) => {
|
|
|
278
278
|
};
|
|
279
279
|
|
|
280
280
|
// This is the minified and stringified code of the worker-timers-worker package.
|
|
281
|
-
const worker = `(()=>{var e={455:function(e,t){!function(e){"use strict";var t=function(e){return function(t){var r=e(t);return t.add(r),r}},r=function(e){return function(t,r){return e.set(t,r),r}},n=void 0===Number.MAX_SAFE_INTEGER?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,s=2*o,a=function(e,t){return function(r){var a=t.get(r),i=void 0===a?r.size:a<s?a+1:0;if(!r.has(i))return e(r,i);if(r.size<o){for(;r.has(i);)i=Math.floor(Math.random()*s);return e(r,i)}if(r.size>n)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;r.has(i);)i=Math.floor(Math.random()*n);return e(r,i)}},i=new WeakMap,u=r(i),c=a(u,i),
|
|
281
|
+
const worker = `(()=>{var e={455:function(e,t){!function(e){"use strict";var t=function(e){return function(t){var r=e(t);return t.add(r),r}},r=function(e){return function(t,r){return e.set(t,r),r}},n=void 0===Number.MAX_SAFE_INTEGER?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,s=2*o,a=function(e,t){return function(r){var a=t.get(r),i=void 0===a?r.size:a<s?a+1:0;if(!r.has(i))return e(r,i);if(r.size<o){for(;r.has(i);)i=Math.floor(Math.random()*s);return e(r,i)}if(r.size>n)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;r.has(i);)i=Math.floor(Math.random()*n);return e(r,i)}},i=new WeakMap,u=r(i),c=a(u,i),l=t(c);e.addUniqueNumber=l,e.generateUniqueNumber=c}(t)}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}(()=>{"use strict";const e=-32603,t=-32602,n=-32601,o=(e,t)=>Object.assign(new Error(e),{status:t}),s=t=>o('The handler of the method called "'.concat(t,'" returned an unexpected result.'),e),a=(t,r)=>async({data:{id:a,method:i,params:u}})=>{const c=r[i];try{if(void 0===c)throw(e=>o('The requested method called "'.concat(e,'" is not supported.'),n))(i);const r=void 0===u?c():c(u);if(void 0===r)throw(t=>o('The handler of the method called "'.concat(t,'" returned no required result.'),e))(i);const l=r instanceof Promise?await r:r;if(null===a){if(void 0!==l.result)throw s(i)}else{if(void 0===l.result)throw s(i);const{result:e,transferables:r=[]}=l;t.postMessage({id:a,result:e},r)}}catch(e){const{message:r,status:n=-32603}=e;t.postMessage({error:{code:n,message:r},id:a})}};var i=r(455);const u=new Map,c=(e,r,n)=>({...r,connect:({port:t})=>{t.start();const n=e(t,r),o=(0,i.generateUniqueNumber)(u);return u.set(o,(()=>{n(),t.close(),u.delete(o)})),{result:o}},disconnect:({portId:e})=>{const r=u.get(e);if(void 0===r)throw(e=>o('The specified parameter called "portId" with the given value "'.concat(e,'" does not identify a port connected to this worker.'),t))(e);return r(),{result:null}},isSupported:async()=>{if(await new Promise((e=>{const t=new ArrayBuffer(0),{port1:r,port2:n}=new MessageChannel;r.onmessage=({data:t})=>e(null!==t),n.postMessage(t,[t])}))){const e=n();return{result:e instanceof Promise?await e:e}}return{result:!1}}}),l=(e,t,r=()=>!0)=>{const n=c(l,t,r),o=a(e,n);return e.addEventListener("message",o),()=>e.removeEventListener("message",o)},d=(e,t)=>r=>{const n=t.get(r);if(void 0===n)return Promise.resolve(!1);const[o,s]=n;return e(o),t.delete(r),s(!1),Promise.resolve(!0)},f=(e,t,r,n)=>(o,s,a)=>{const i=o+s-t.timeOrigin,u=i-t.now();return new Promise((t=>{e.set(a,[r(n,u,i,e,t,a),t])}))},m=new Map,h=d(globalThis.clearTimeout,m),p=new Map,v=d(globalThis.clearTimeout,p),w=((e,t)=>{const r=(n,o,s,a)=>{const i=n-e.now();i>0?o.set(a,[t(r,i,n,o,s,a),s]):(o.delete(a),s(!0))};return r})(performance,globalThis.setTimeout),g=f(m,performance,globalThis.setTimeout,w),T=f(p,performance,globalThis.setTimeout,w);l(self,{clear:async({timerId:e,timerType:t})=>({result:await("interval"===t?h(e):v(e))}),set:async({delay:e,now:t,timerId:r,timerType:n})=>({result:await("interval"===n?g:T)(e,t,r)})})})()})();`; // tslint:disable-line:max-line-length
|
|
282
282
|
|
|
283
283
|
const loadOrReturnBroker = createLoadOrReturnBroker(load, worker);
|
|
284
284
|
const clearInterval = (timerId) => loadOrReturnBroker().clearInterval(timerId);
|
|
@@ -478,6 +478,14 @@ const DOMUtilsCommonUtils = {
|
|
|
478
478
|
isNodeList($ele) {
|
|
479
479
|
return Array.isArray($ele) || $ele instanceof NodeList;
|
|
480
480
|
},
|
|
481
|
+
/** 获取 animationend 在各个浏览器的兼容名 */
|
|
482
|
+
getAnimationEndNameList() {
|
|
483
|
+
return ["webkitAnimationEnd", "mozAnimationEnd", "MSAnimationEnd", "oanimationend", "animationend"];
|
|
484
|
+
},
|
|
485
|
+
/** 获取 transitionend 在各个浏览器的兼容名 */
|
|
486
|
+
getTransitionEndNameList() {
|
|
487
|
+
return ["webkitTransitionEnd", "mozTransitionEnd", "MSTransitionEnd", "otransitionend", "transitionend"];
|
|
488
|
+
},
|
|
481
489
|
};
|
|
482
490
|
|
|
483
491
|
/* 数据 */
|
|
@@ -600,8 +608,7 @@ class DOMUtilsEvent {
|
|
|
600
608
|
: event.target;
|
|
601
609
|
let totalParent = elementItem;
|
|
602
610
|
if (DOMUtilsCommonUtils.isWin(totalParent)) {
|
|
603
|
-
if (totalParent ===
|
|
604
|
-
DOMUtilsContext.windowApi.document) {
|
|
611
|
+
if (totalParent === DOMUtilsContext.windowApi.document) {
|
|
605
612
|
totalParent = DOMUtilsContext.windowApi.document.documentElement;
|
|
606
613
|
}
|
|
607
614
|
}
|
|
@@ -669,8 +676,7 @@ class DOMUtilsEvent {
|
|
|
669
676
|
if (typeof currentParam === "boolean") {
|
|
670
677
|
option.capture = currentParam;
|
|
671
678
|
}
|
|
672
|
-
else if (typeof currentParam === "object" &&
|
|
673
|
-
"capture" in currentParam) {
|
|
679
|
+
else if (typeof currentParam === "object" && "capture" in currentParam) {
|
|
674
680
|
option.capture = currentParam.capture;
|
|
675
681
|
}
|
|
676
682
|
return option;
|
|
@@ -732,8 +738,7 @@ class DOMUtilsEvent {
|
|
|
732
738
|
// 目标函数、事件名
|
|
733
739
|
isRemoveAll = true;
|
|
734
740
|
}
|
|
735
|
-
else if ((args.length === 3 && typeof args[2] === "string") ||
|
|
736
|
-
Array.isArray(args[2])) {
|
|
741
|
+
else if ((args.length === 3 && typeof args[2] === "string") || Array.isArray(args[2])) {
|
|
737
742
|
// 目标函数、事件名、子元素选择器
|
|
738
743
|
isRemoveAll = true;
|
|
739
744
|
}
|
|
@@ -748,9 +753,7 @@ class DOMUtilsEvent {
|
|
|
748
753
|
for (let index = 0; index < handlers.length; index++) {
|
|
749
754
|
let handler = handlers[index];
|
|
750
755
|
let flag = true;
|
|
751
|
-
if (flag &&
|
|
752
|
-
listenerCallBack &&
|
|
753
|
-
handler.originCallBack !== listenerCallBack) {
|
|
756
|
+
if (flag && listenerCallBack && handler.originCallBack !== listenerCallBack) {
|
|
754
757
|
// callback不同
|
|
755
758
|
flag = false;
|
|
756
759
|
}
|
|
@@ -810,9 +813,7 @@ class DOMUtilsEvent {
|
|
|
810
813
|
return;
|
|
811
814
|
}
|
|
812
815
|
let elementEvents = elementItem[symbolEvents] || {};
|
|
813
|
-
let iterEventNameList = eventTypeList.length
|
|
814
|
-
? eventTypeList
|
|
815
|
-
: Object.keys(elementEvents);
|
|
816
|
+
let iterEventNameList = eventTypeList.length ? eventTypeList : Object.keys(elementEvents);
|
|
816
817
|
iterEventNameList.forEach((eventName) => {
|
|
817
818
|
let handlers = elementEvents[eventName];
|
|
818
819
|
if (!handlers) {
|
|
@@ -849,8 +850,7 @@ class DOMUtilsEvent {
|
|
|
849
850
|
try {
|
|
850
851
|
if (DOMUtilsContext.windowApi.document.readyState === "complete" ||
|
|
851
852
|
(DOMUtilsContext.windowApi.document.readyState !== "loading" &&
|
|
852
|
-
!DOMUtilsContext.windowApi.document.documentElement
|
|
853
|
-
.doScroll)) {
|
|
853
|
+
!DOMUtilsContext.windowApi.document.documentElement.doScroll)) {
|
|
854
854
|
return true;
|
|
855
855
|
}
|
|
856
856
|
else {
|
|
@@ -1111,6 +1111,76 @@ class DOMUtilsEvent {
|
|
|
1111
1111
|
DOMUtilsContext.on(element, "mouseenter", null, handler, option);
|
|
1112
1112
|
DOMUtilsContext.on(element, "mouseleave", null, handler, option);
|
|
1113
1113
|
}
|
|
1114
|
+
/**
|
|
1115
|
+
* 当动画结束时触发事件
|
|
1116
|
+
* @param element 监听的元素
|
|
1117
|
+
* @param handler 触发的回调函数
|
|
1118
|
+
* @param option 配置项,这里默认配置once为true
|
|
1119
|
+
*/
|
|
1120
|
+
animationend(element, handler, option) {
|
|
1121
|
+
let DOMUtilsContext = this;
|
|
1122
|
+
if (typeof element === "string") {
|
|
1123
|
+
element = DOMUtilsContext.selector(element);
|
|
1124
|
+
}
|
|
1125
|
+
if (element == null) {
|
|
1126
|
+
return;
|
|
1127
|
+
}
|
|
1128
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1129
|
+
// 设置
|
|
1130
|
+
element.forEach(($ele) => {
|
|
1131
|
+
DOMUtilsContext.animationend($ele, handler, option);
|
|
1132
|
+
});
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1135
|
+
const defaultOption = {
|
|
1136
|
+
once: true,
|
|
1137
|
+
};
|
|
1138
|
+
Object.assign(defaultOption, option || {});
|
|
1139
|
+
const eventNameList = DOMUtilsCommonUtils.getAnimationEndNameList();
|
|
1140
|
+
DOMUtilsContext.on(element, eventNameList, null, handler, defaultOption);
|
|
1141
|
+
if (!defaultOption.once) {
|
|
1142
|
+
return {
|
|
1143
|
+
off() {
|
|
1144
|
+
DOMUtilsContext.off(element, eventNameList, null, handler, defaultOption);
|
|
1145
|
+
},
|
|
1146
|
+
};
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
/**
|
|
1150
|
+
* 当过渡结束时触发事件
|
|
1151
|
+
* @param element 监听的元素
|
|
1152
|
+
* @param handler 触发的回调函数
|
|
1153
|
+
* @param option 配置项,这里默认配置once为true
|
|
1154
|
+
*/
|
|
1155
|
+
transitionend(element, handler, option) {
|
|
1156
|
+
let DOMUtilsContext = this;
|
|
1157
|
+
if (typeof element === "string") {
|
|
1158
|
+
element = DOMUtilsContext.selector(element);
|
|
1159
|
+
}
|
|
1160
|
+
if (element == null) {
|
|
1161
|
+
return;
|
|
1162
|
+
}
|
|
1163
|
+
if (DOMUtilsCommonUtils.isNodeList(element)) {
|
|
1164
|
+
// 设置
|
|
1165
|
+
element.forEach(($ele) => {
|
|
1166
|
+
DOMUtilsContext.transitionend($ele, handler, option);
|
|
1167
|
+
});
|
|
1168
|
+
return;
|
|
1169
|
+
}
|
|
1170
|
+
const defaultOption = {
|
|
1171
|
+
once: true,
|
|
1172
|
+
};
|
|
1173
|
+
Object.assign(defaultOption, option || {});
|
|
1174
|
+
const eventNameList = DOMUtilsCommonUtils.getTransitionEndNameList();
|
|
1175
|
+
DOMUtilsContext.on(element, eventNameList, null, handler, defaultOption);
|
|
1176
|
+
if (!defaultOption.once) {
|
|
1177
|
+
return {
|
|
1178
|
+
off() {
|
|
1179
|
+
DOMUtilsContext.off(element, eventNameList, null, handler, defaultOption);
|
|
1180
|
+
},
|
|
1181
|
+
};
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1114
1184
|
/**
|
|
1115
1185
|
* 当按键松开时触发事件
|
|
1116
1186
|
* keydown - > keypress - > keyup
|
|
@@ -1485,7 +1555,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1485
1555
|
super(option);
|
|
1486
1556
|
}
|
|
1487
1557
|
/** 版本号 */
|
|
1488
|
-
version = "2025.
|
|
1558
|
+
version = "2025.8.11";
|
|
1489
1559
|
attr(element, attrName, attrValue) {
|
|
1490
1560
|
let DOMUtilsContext = this;
|
|
1491
1561
|
if (typeof element === "string") {
|
|
@@ -1579,15 +1649,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1579
1649
|
* 把纯数字没有px的加上
|
|
1580
1650
|
*/
|
|
1581
1651
|
function handlePixe(propertyName, propertyValue) {
|
|
1582
|
-
let allowAddPixe = [
|
|
1583
|
-
"width",
|
|
1584
|
-
"height",
|
|
1585
|
-
"top",
|
|
1586
|
-
"left",
|
|
1587
|
-
"right",
|
|
1588
|
-
"bottom",
|
|
1589
|
-
"font-size",
|
|
1590
|
-
];
|
|
1652
|
+
let allowAddPixe = ["width", "height", "top", "left", "right", "bottom", "font-size"];
|
|
1591
1653
|
if (typeof propertyValue === "number") {
|
|
1592
1654
|
propertyValue = propertyValue.toString();
|
|
1593
1655
|
}
|
|
@@ -1629,8 +1691,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1629
1691
|
return;
|
|
1630
1692
|
}
|
|
1631
1693
|
let setStyleProperty = (propertyName, propertyValue) => {
|
|
1632
|
-
if (typeof propertyValue === "string" &&
|
|
1633
|
-
propertyValue.trim().endsWith("!important")) {
|
|
1694
|
+
if (typeof propertyValue === "string" && propertyValue.trim().endsWith("!important")) {
|
|
1634
1695
|
propertyValue = propertyValue
|
|
1635
1696
|
.trim()
|
|
1636
1697
|
.replace(/!important$/gi, "")
|
|
@@ -1644,9 +1705,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1644
1705
|
};
|
|
1645
1706
|
if (typeof property === "string") {
|
|
1646
1707
|
if (value == null) {
|
|
1647
|
-
return DOMUtilsContext.windowApi.globalThis
|
|
1648
|
-
.getComputedStyle(element)
|
|
1649
|
-
.getPropertyValue(property);
|
|
1708
|
+
return DOMUtilsContext.windowApi.globalThis.getComputedStyle(element).getPropertyValue(property);
|
|
1650
1709
|
}
|
|
1651
1710
|
else {
|
|
1652
1711
|
setStyleProperty(property, value);
|
|
@@ -1749,12 +1808,8 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1749
1808
|
return transformInfo;
|
|
1750
1809
|
}
|
|
1751
1810
|
let elementTransform = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element).transform;
|
|
1752
|
-
if (elementTransform != null &&
|
|
1753
|
-
|
|
1754
|
-
elementTransform !== "") {
|
|
1755
|
-
let elementTransformSplit = elementTransform
|
|
1756
|
-
.match(/\((.+)\)/)?.[1]
|
|
1757
|
-
.split(",");
|
|
1811
|
+
if (elementTransform != null && elementTransform !== "none" && elementTransform !== "") {
|
|
1812
|
+
let elementTransformSplit = elementTransform.match(/\((.+)\)/)?.[1].split(",");
|
|
1758
1813
|
if (elementTransformSplit) {
|
|
1759
1814
|
transform_left = Math.abs(parseInt(elementTransformSplit[4]));
|
|
1760
1815
|
transform_top = Math.abs(parseInt(elementTransformSplit[5]));
|
|
@@ -1792,8 +1847,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1792
1847
|
}
|
|
1793
1848
|
if (value == null) {
|
|
1794
1849
|
// 获取
|
|
1795
|
-
if (element.localName === "input" &&
|
|
1796
|
-
(element.type === "checkbox" || element.type === "radio")) {
|
|
1850
|
+
if (element.localName === "input" && (element.type === "checkbox" || element.type === "radio")) {
|
|
1797
1851
|
return element.checked;
|
|
1798
1852
|
}
|
|
1799
1853
|
else {
|
|
@@ -1802,8 +1856,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
1802
1856
|
}
|
|
1803
1857
|
else {
|
|
1804
1858
|
// 设置
|
|
1805
|
-
if (element.localName === "input" &&
|
|
1806
|
-
(element.type === "checkbox" || element.type === "radio")) {
|
|
1859
|
+
if (element.localName === "input" && (element.type === "checkbox" || element.type === "radio")) {
|
|
1807
1860
|
element.checked = !!value;
|
|
1808
1861
|
}
|
|
1809
1862
|
else {
|
|
@@ -2057,7 +2110,15 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2057
2110
|
}
|
|
2058
2111
|
function elementAppendChild(ele, text) {
|
|
2059
2112
|
if (typeof content === "string") {
|
|
2060
|
-
ele
|
|
2113
|
+
if (ele instanceof DocumentFragment) {
|
|
2114
|
+
if (typeof text === "string") {
|
|
2115
|
+
text = DOMUtilsContext.parseHTML(text, true, false);
|
|
2116
|
+
}
|
|
2117
|
+
ele.appendChild(text);
|
|
2118
|
+
}
|
|
2119
|
+
else {
|
|
2120
|
+
ele.insertAdjacentHTML("beforeend", DOMUtilsCommonUtils.getSafeHTML(text));
|
|
2121
|
+
}
|
|
2061
2122
|
}
|
|
2062
2123
|
else {
|
|
2063
2124
|
ele.appendChild(text);
|
|
@@ -2068,6 +2129,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2068
2129
|
let fragment = DOMUtilsContext.windowApi.document.createDocumentFragment();
|
|
2069
2130
|
content.forEach((ele) => {
|
|
2070
2131
|
if (typeof ele === "string") {
|
|
2132
|
+
// 转为元素
|
|
2071
2133
|
ele = DOMUtilsContext.parseHTML(ele, true, false);
|
|
2072
2134
|
}
|
|
2073
2135
|
fragment.appendChild(ele);
|
|
@@ -2103,7 +2165,13 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2103
2165
|
return;
|
|
2104
2166
|
}
|
|
2105
2167
|
if (typeof content === "string") {
|
|
2106
|
-
element
|
|
2168
|
+
if (element instanceof DocumentFragment) {
|
|
2169
|
+
content = DOMUtilsContext.parseHTML(content, true, false);
|
|
2170
|
+
element.prepend(content);
|
|
2171
|
+
}
|
|
2172
|
+
else {
|
|
2173
|
+
element.insertAdjacentHTML("afterbegin", DOMUtilsCommonUtils.getSafeHTML(content));
|
|
2174
|
+
}
|
|
2107
2175
|
}
|
|
2108
2176
|
else {
|
|
2109
2177
|
let $firstChild = element.firstChild;
|
|
@@ -2276,16 +2344,14 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2276
2344
|
return;
|
|
2277
2345
|
}
|
|
2278
2346
|
if (DOMUtilsCommonUtils.isWin(element)) {
|
|
2279
|
-
return DOMUtilsContext.windowApi.window.document.documentElement
|
|
2280
|
-
.clientWidth;
|
|
2347
|
+
return DOMUtilsContext.windowApi.window.document.documentElement.clientWidth;
|
|
2281
2348
|
}
|
|
2282
2349
|
if (element.nodeType === 9) {
|
|
2283
2350
|
/* Document文档节点 */
|
|
2284
2351
|
element = element;
|
|
2285
2352
|
return Math.max(element.body.scrollWidth, element.documentElement.scrollWidth, element.body.offsetWidth, element.documentElement.offsetWidth, element.documentElement.clientWidth);
|
|
2286
2353
|
}
|
|
2287
|
-
if (isShow ||
|
|
2288
|
-
(!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
2354
|
+
if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
2289
2355
|
/* 已显示 */
|
|
2290
2356
|
/* 不从style中获取对应的宽度,因为可能使用了class定义了width !important */
|
|
2291
2357
|
element = element;
|
|
@@ -2320,8 +2386,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2320
2386
|
height(element, isShow = false) {
|
|
2321
2387
|
let DOMUtilsContext = this;
|
|
2322
2388
|
if (DOMUtilsCommonUtils.isWin(element)) {
|
|
2323
|
-
return DOMUtilsContext.windowApi.window.document.documentElement
|
|
2324
|
-
.clientHeight;
|
|
2389
|
+
return DOMUtilsContext.windowApi.window.document.documentElement.clientHeight;
|
|
2325
2390
|
}
|
|
2326
2391
|
if (typeof element === "string") {
|
|
2327
2392
|
element = DOMUtilsContext.selector(element);
|
|
@@ -2335,8 +2400,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2335
2400
|
/* Document文档节点 */
|
|
2336
2401
|
return Math.max(element.body.scrollHeight, element.documentElement.scrollHeight, element.body.offsetHeight, element.documentElement.offsetHeight, element.documentElement.clientHeight);
|
|
2337
2402
|
}
|
|
2338
|
-
if (isShow ||
|
|
2339
|
-
(!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
2403
|
+
if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {
|
|
2340
2404
|
element = element;
|
|
2341
2405
|
/* 已显示 */
|
|
2342
2406
|
/* 从style中获取对应的高度,因为可能使用了class定义了width !important */
|
|
@@ -2464,8 +2528,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2464
2528
|
let to = {};
|
|
2465
2529
|
for (let prop in styles) {
|
|
2466
2530
|
from[prop] =
|
|
2467
|
-
element.style[prop] ||
|
|
2468
|
-
DOMUtilsContext.windowApi.globalThis.getComputedStyle(element)[prop];
|
|
2531
|
+
element.style[prop] || DOMUtilsContext.windowApi.globalThis.getComputedStyle(element)[prop];
|
|
2469
2532
|
to[prop] = styles[prop];
|
|
2470
2533
|
}
|
|
2471
2534
|
let timer = DOMUtilsCommonUtils.setInterval(function () {
|
|
@@ -2475,8 +2538,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2475
2538
|
progress = 1;
|
|
2476
2539
|
}
|
|
2477
2540
|
for (let prop in styles) {
|
|
2478
|
-
element.style[prop] =
|
|
2479
|
-
from[prop] + (to[prop] - from[prop]) * progress + "px";
|
|
2541
|
+
element.style[prop] = from[prop] + (to[prop] - from[prop]) * progress + "px";
|
|
2480
2542
|
}
|
|
2481
2543
|
if (progress === 1) {
|
|
2482
2544
|
DOMUtilsCommonUtils.clearInterval(timer);
|
|
@@ -2561,8 +2623,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2561
2623
|
if (element == null) {
|
|
2562
2624
|
return;
|
|
2563
2625
|
}
|
|
2564
|
-
return Array.from(element.parentElement
|
|
2565
|
-
.children).filter((child) => child !== element);
|
|
2626
|
+
return Array.from(element.parentElement.children).filter((child) => child !== element);
|
|
2566
2627
|
}
|
|
2567
2628
|
/**
|
|
2568
2629
|
* 获取当前元素的父元素
|
|
@@ -2638,14 +2699,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2638
2699
|
if (element.name &&
|
|
2639
2700
|
!element.disabled &&
|
|
2640
2701
|
(element.checked ||
|
|
2641
|
-
[
|
|
2642
|
-
"text",
|
|
2643
|
-
"hidden",
|
|
2644
|
-
"password",
|
|
2645
|
-
"textarea",
|
|
2646
|
-
"select-one",
|
|
2647
|
-
"select-multiple",
|
|
2648
|
-
].includes(element.type))) {
|
|
2702
|
+
["text", "hidden", "password", "textarea", "select-one", "select-multiple"].includes(element.type))) {
|
|
2649
2703
|
if (element.type === "select-multiple") {
|
|
2650
2704
|
for (let j = 0; j < element.options.length; j++) {
|
|
2651
2705
|
if (element.options[j].selected) {
|
|
@@ -2865,9 +2919,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2865
2919
|
});
|
|
2866
2920
|
return;
|
|
2867
2921
|
}
|
|
2868
|
-
if (DOMUtilsContext.windowApi.globalThis
|
|
2869
|
-
.getComputedStyle(element)
|
|
2870
|
-
.getPropertyValue("display") === "none") {
|
|
2922
|
+
if (DOMUtilsContext.windowApi.globalThis.getComputedStyle(element).getPropertyValue("display") === "none") {
|
|
2871
2923
|
DOMUtilsContext.show(element, checkVisiblie);
|
|
2872
2924
|
}
|
|
2873
2925
|
else {
|
|
@@ -2912,9 +2964,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
2912
2964
|
selectionStart = Math.min($input.value.length, selectionStart);
|
|
2913
2965
|
if (typeof selectionEnd == "string")
|
|
2914
2966
|
selectionEnd = parseFloat(selectionEnd);
|
|
2915
|
-
if (typeof selectionEnd != "number" ||
|
|
2916
|
-
isNaN(selectionEnd) ||
|
|
2917
|
-
selectionEnd < selectionStart) {
|
|
2967
|
+
if (typeof selectionEnd != "number" || isNaN(selectionEnd) || selectionEnd < selectionStart) {
|
|
2918
2968
|
selectionEnd = selectionStart;
|
|
2919
2969
|
}
|
|
2920
2970
|
if (selectionEnd < 0)
|
|
@@ -3001,11 +3051,7 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
3001
3051
|
var isBoxModel = $box.offsetWidth == 2;
|
|
3002
3052
|
body.removeChild($box);
|
|
3003
3053
|
let $boxRect = $input.getBoundingClientRect();
|
|
3004
|
-
var clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, scrollTop = win.pageYOffset ||
|
|
3005
|
-
(isBoxModel && docElem.scrollTop) ||
|
|
3006
|
-
body.scrollTop, scrollLeft = win.pageXOffset ||
|
|
3007
|
-
(isBoxModel && docElem.scrollLeft) ||
|
|
3008
|
-
body.scrollLeft;
|
|
3054
|
+
var clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, scrollTop = win.pageYOffset || (isBoxModel && docElem.scrollTop) || body.scrollTop, scrollLeft = win.pageXOffset || (isBoxModel && docElem.scrollLeft) || body.scrollLeft;
|
|
3009
3055
|
return {
|
|
3010
3056
|
top: $boxRect.top + scrollTop - clientTop,
|
|
3011
3057
|
left: $boxRect.left + scrollLeft - clientLeft,
|
|
@@ -3024,6 +3070,14 @@ class DOMUtils extends DOMUtilsEvent {
|
|
|
3024
3070
|
return isNumber ? parseFloat(val) : val;
|
|
3025
3071
|
}
|
|
3026
3072
|
}
|
|
3073
|
+
/** 获取 animationend 在各个浏览器的兼容名 */
|
|
3074
|
+
getAnimationEndNameList() {
|
|
3075
|
+
return DOMUtilsCommonUtils.getAnimationEndNameList();
|
|
3076
|
+
}
|
|
3077
|
+
/** 获取 transitionend 在各个浏览器的兼容名 */
|
|
3078
|
+
getTransitionEndNameList() {
|
|
3079
|
+
return DOMUtilsCommonUtils.getTransitionEndNameList();
|
|
3080
|
+
}
|
|
3027
3081
|
}
|
|
3028
3082
|
let domUtils = new DOMUtils();
|
|
3029
3083
|
|