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