@whitesev/domutils 1.9.0 → 1.9.2
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 +130 -88
- package/dist/index.amd.js.map +1 -1
- package/dist/index.amd.min.js +1 -1
- package/dist/index.amd.min.js.map +1 -1
- package/dist/index.cjs.js +130 -88
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +130 -88
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.iife.js +130 -88
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +1 -1
- package/dist/index.iife.min.js.map +1 -1
- package/dist/index.system.js +130 -88
- package/dist/index.system.js.map +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/dist/index.umd.js +130 -88
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/types/src/ElementEvent.d.ts +8 -8
- package/dist/types/src/index.d.ts +20 -4
- package/package.json +1 -1
- package/src/ElementEvent.ts +106 -82
- package/src/index.ts +82 -20
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const version = "1.9.
|
|
1
|
+
const version = "1.9.2";
|
|
2
2
|
|
|
3
3
|
class WindowApi {
|
|
4
4
|
/** 默认的配置 */
|
|
@@ -1704,7 +1704,7 @@ class ElementEvent extends ElementAnimate {
|
|
|
1704
1704
|
}
|
|
1705
1705
|
for (const handler of handlers) {
|
|
1706
1706
|
$elItem.removeEventListener(eventName, handler.handlerCallBack, {
|
|
1707
|
-
capture: handler
|
|
1707
|
+
capture: handler.option.capture,
|
|
1708
1708
|
});
|
|
1709
1709
|
}
|
|
1710
1710
|
const events = Reflect.get($elItem, symbolItem);
|
|
@@ -1718,36 +1718,6 @@ class ElementEvent extends ElementAnimate {
|
|
|
1718
1718
|
// 异步回调
|
|
1719
1719
|
let resolve = void 0;
|
|
1720
1720
|
const that = this;
|
|
1721
|
-
/**
|
|
1722
|
-
* 检测文档是否加载完毕
|
|
1723
|
-
*/
|
|
1724
|
-
function checkDOMReadyState() {
|
|
1725
|
-
try {
|
|
1726
|
-
if (that.windowApi.document.readyState === "complete" ||
|
|
1727
|
-
(that.windowApi.document.readyState !== "loading" &&
|
|
1728
|
-
!that.windowApi.document.documentElement.doScroll)) {
|
|
1729
|
-
return true;
|
|
1730
|
-
}
|
|
1731
|
-
else {
|
|
1732
|
-
return false;
|
|
1733
|
-
}
|
|
1734
|
-
}
|
|
1735
|
-
catch {
|
|
1736
|
-
return false;
|
|
1737
|
-
}
|
|
1738
|
-
}
|
|
1739
|
-
/**
|
|
1740
|
-
* 成功加载完毕后触发的回调函数
|
|
1741
|
-
*/
|
|
1742
|
-
function completed() {
|
|
1743
|
-
removeDomReadyListener();
|
|
1744
|
-
if (typeof callback === "function") {
|
|
1745
|
-
callback();
|
|
1746
|
-
}
|
|
1747
|
-
if (typeof resolve === "function") {
|
|
1748
|
-
resolve();
|
|
1749
|
-
}
|
|
1750
|
-
}
|
|
1751
1721
|
/**
|
|
1752
1722
|
* 监听目标
|
|
1753
1723
|
*/
|
|
@@ -1755,52 +1725,90 @@ class ElementEvent extends ElementAnimate {
|
|
|
1755
1725
|
{
|
|
1756
1726
|
target: that.windowApi.document,
|
|
1757
1727
|
eventType: "DOMContentLoaded",
|
|
1758
|
-
callback:
|
|
1728
|
+
callback: () => {
|
|
1729
|
+
ReadyChecker.completed();
|
|
1730
|
+
},
|
|
1759
1731
|
},
|
|
1760
1732
|
{
|
|
1761
1733
|
target: that.windowApi.window,
|
|
1762
1734
|
eventType: "load",
|
|
1763
|
-
callback:
|
|
1735
|
+
callback: () => {
|
|
1736
|
+
ReadyChecker.completed();
|
|
1737
|
+
},
|
|
1764
1738
|
},
|
|
1765
1739
|
];
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
}
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1740
|
+
const ReadyChecker = {
|
|
1741
|
+
init() {
|
|
1742
|
+
if (args.length === 0) {
|
|
1743
|
+
return new Promise((__resolve__) => {
|
|
1744
|
+
resolve = __resolve__;
|
|
1745
|
+
ReadyChecker.check();
|
|
1746
|
+
});
|
|
1747
|
+
}
|
|
1748
|
+
else {
|
|
1749
|
+
ReadyChecker.check();
|
|
1750
|
+
}
|
|
1751
|
+
},
|
|
1752
|
+
check() {
|
|
1753
|
+
if (ReadyChecker.isReady()) {
|
|
1754
|
+
/* 检查document状态 */
|
|
1755
|
+
setTimeout(() => {
|
|
1756
|
+
ReadyChecker.completed();
|
|
1757
|
+
}, 0);
|
|
1758
|
+
}
|
|
1759
|
+
else {
|
|
1760
|
+
/* 添加监听 */
|
|
1761
|
+
ReadyChecker.onCompleted();
|
|
1762
|
+
}
|
|
1763
|
+
},
|
|
1764
|
+
/**
|
|
1765
|
+
* 检测文档是否加载完毕
|
|
1766
|
+
*/
|
|
1767
|
+
isReady() {
|
|
1768
|
+
try {
|
|
1769
|
+
if (that.windowApi.document.readyState === "complete" ||
|
|
1770
|
+
// @ts-expect-error
|
|
1771
|
+
(that.windowApi.document.readyState !== "loading" && !that.windowApi.document.documentElement.doScroll)) {
|
|
1772
|
+
return true;
|
|
1773
|
+
}
|
|
1774
|
+
else {
|
|
1775
|
+
return false;
|
|
1776
|
+
}
|
|
1777
|
+
}
|
|
1778
|
+
catch {
|
|
1779
|
+
return false;
|
|
1780
|
+
}
|
|
1781
|
+
},
|
|
1782
|
+
/**
|
|
1783
|
+
* 成功加载完毕后触发的回调函数
|
|
1784
|
+
*/
|
|
1785
|
+
completed() {
|
|
1786
|
+
ReadyChecker.offCompleted();
|
|
1787
|
+
if (typeof callback === "function") {
|
|
1788
|
+
callback();
|
|
1789
|
+
}
|
|
1790
|
+
if (typeof resolve === "function") {
|
|
1791
|
+
resolve();
|
|
1792
|
+
}
|
|
1793
|
+
},
|
|
1794
|
+
/**
|
|
1795
|
+
* 添加监听
|
|
1796
|
+
*/
|
|
1797
|
+
onCompleted() {
|
|
1798
|
+
for (const item of listenTargetList) {
|
|
1799
|
+
that.on(item.target, item.eventType, item.callback);
|
|
1800
|
+
}
|
|
1801
|
+
},
|
|
1802
|
+
/**
|
|
1803
|
+
* 移除监听
|
|
1804
|
+
*/
|
|
1805
|
+
offCompleted() {
|
|
1806
|
+
for (const item of listenTargetList) {
|
|
1807
|
+
that.off(item.target, item.eventType, item.callback);
|
|
1808
|
+
}
|
|
1809
|
+
},
|
|
1810
|
+
};
|
|
1811
|
+
return ReadyChecker.init();
|
|
1804
1812
|
}
|
|
1805
1813
|
/**
|
|
1806
1814
|
* 主动触发事件
|
|
@@ -3575,6 +3583,41 @@ class DOMUtils extends ElementHandler {
|
|
|
3575
3583
|
return parseHTMLByCreateDom();
|
|
3576
3584
|
}
|
|
3577
3585
|
}
|
|
3586
|
+
/**
|
|
3587
|
+
* 将字符串转为Element元素数组
|
|
3588
|
+
* @param html
|
|
3589
|
+
* @param useParser 是否使用DOMParser来生成元素,有些时候通过DOMParser生成的元素有点问题
|
|
3590
|
+
* + true 使用DOMPraser来转换字符串
|
|
3591
|
+
* + false (默认)创建一个div,里面放入字符串,然后提取childNodes
|
|
3592
|
+
* @example
|
|
3593
|
+
* // 将字符串转为Element元素数组
|
|
3594
|
+
* DOMUtils.toElements("<a href='xxxx'></a>")
|
|
3595
|
+
* > [<a href="xxxx"></a>]
|
|
3596
|
+
* @example
|
|
3597
|
+
* // 使用DOMParser将字符串转为Element元素数组
|
|
3598
|
+
* DOMUtils.toElements("<a href='xxxx'></a>",true)
|
|
3599
|
+
* > [<a href="xxxx"></a>]
|
|
3600
|
+
*/
|
|
3601
|
+
toElements(html, useParser = false) {
|
|
3602
|
+
const that = this;
|
|
3603
|
+
// 去除html前后的空格
|
|
3604
|
+
html = html.trim();
|
|
3605
|
+
function parseHTMLByDOMParser() {
|
|
3606
|
+
const parser = new DOMParser();
|
|
3607
|
+
return Array.from(parser.parseFromString(html, "text/html").body.childNodes);
|
|
3608
|
+
}
|
|
3609
|
+
function parseHTMLByCreateDom() {
|
|
3610
|
+
const $el = that.windowApi.document.createElement("div");
|
|
3611
|
+
that.html($el, html);
|
|
3612
|
+
return Array.from($el.childNodes);
|
|
3613
|
+
}
|
|
3614
|
+
if (useParser) {
|
|
3615
|
+
return parseHTMLByDOMParser();
|
|
3616
|
+
}
|
|
3617
|
+
else {
|
|
3618
|
+
return parseHTMLByCreateDom();
|
|
3619
|
+
}
|
|
3620
|
+
}
|
|
3578
3621
|
/**
|
|
3579
3622
|
* 序列化表单元素
|
|
3580
3623
|
* @param $form 表单元素
|
|
@@ -3583,26 +3626,29 @@ class DOMUtils extends ElementHandler {
|
|
|
3583
3626
|
* > xxx=xxx&aaa=
|
|
3584
3627
|
*/
|
|
3585
3628
|
serialize($form) {
|
|
3629
|
+
if (!($form instanceof HTMLFormElement)) {
|
|
3630
|
+
throw new TypeError("DOMUtils.serialize 参数必须是HTMLFormElement");
|
|
3631
|
+
}
|
|
3586
3632
|
const elements = $form.elements;
|
|
3587
3633
|
const serializedArray = [];
|
|
3588
|
-
for (let
|
|
3589
|
-
const
|
|
3590
|
-
if (
|
|
3591
|
-
|
|
3592
|
-
(
|
|
3593
|
-
["text", "hidden", "password", "textarea", "select-one", "select-multiple"].includes(
|
|
3594
|
-
if (
|
|
3595
|
-
for (let j = 0; j <
|
|
3596
|
-
if (
|
|
3634
|
+
for (let index = 0; index < elements.length; index++) {
|
|
3635
|
+
const $el = elements[index];
|
|
3636
|
+
if ($el.name &&
|
|
3637
|
+
!$el.disabled &&
|
|
3638
|
+
($el.checked ||
|
|
3639
|
+
["text", "hidden", "password", "textarea", "select-one", "select-multiple"].includes($el.type))) {
|
|
3640
|
+
if ($el.type === "select-multiple") {
|
|
3641
|
+
for (let j = 0; j < $el.options.length; j++) {
|
|
3642
|
+
if ($el.options[j].selected) {
|
|
3597
3643
|
serializedArray.push({
|
|
3598
|
-
name:
|
|
3599
|
-
value:
|
|
3644
|
+
name: $el.name,
|
|
3645
|
+
value: $el.options[j].value,
|
|
3600
3646
|
});
|
|
3601
3647
|
}
|
|
3602
3648
|
}
|
|
3603
3649
|
}
|
|
3604
3650
|
else {
|
|
3605
|
-
serializedArray.push({ name:
|
|
3651
|
+
serializedArray.push({ name: $el.name, value: $el.value });
|
|
3606
3652
|
}
|
|
3607
3653
|
}
|
|
3608
3654
|
}
|
|
@@ -3918,10 +3964,6 @@ class DOMUtils extends ElementHandler {
|
|
|
3918
3964
|
}
|
|
3919
3965
|
}
|
|
3920
3966
|
const domUtils = new DOMUtils();
|
|
3921
|
-
domUtils.emit(document, "test");
|
|
3922
|
-
domUtils.emit(document, "click");
|
|
3923
|
-
domUtils.emit(document, ["test", "click"]);
|
|
3924
|
-
domUtils.emit(document, ["test", "click"], true);
|
|
3925
3967
|
|
|
3926
3968
|
export { domUtils as default };
|
|
3927
3969
|
//# sourceMappingURL=index.esm.js.map
|