@whitesev/domutils 1.6.5 → 1.6.7
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/README.md +42 -42
- package/dist/index.amd.js +267 -301
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +267 -301
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +267 -301
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +267 -301
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +267 -301
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +267 -301
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/DOMUtils.d.ts +34 -5
- package/dist/types/src/DOMUtilsCommonUtils.d.ts +2 -2
- package/dist/types/src/DOMUtilsEvent.d.ts +64 -64
- package/dist/types/src/types/DOMUtilsEvent.d.ts +142 -142
- package/dist/types/src/types/WindowApi.d.ts +9 -9
- package/dist/types/src/types/global.d.ts +2 -10
- package/dist/types/src/types/gm.d.ts +5 -1
- package/index.ts +3 -0
- package/package.json +19 -7
- package/src/DOMUtils.ts +1967 -1974
- package/src/DOMUtilsCommonUtils.ts +196 -196
- package/src/DOMUtilsData.ts +2 -2
- package/src/DOMUtilsEvent.ts +1407 -1459
- package/src/DOMUtilsOriginPrototype.ts +3 -3
- package/src/WindowApi.ts +55 -55
- package/src/types/DOMUtilsEvent.d.ts +142 -142
- package/src/types/WindowApi.d.ts +9 -9
- package/src/types/global.d.ts +2 -10
- package/src/types/gm.d.ts +5 -1
|
@@ -1,203 +1,203 @@
|
|
|
1
1
|
import { WindowApi } from "./WindowApi";
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
clearInterval as WorkerClearInterval,
|
|
4
|
+
clearTimeout as WorkerClearTimeout,
|
|
5
|
+
setInterval as WorkerSetInterval,
|
|
6
|
+
setTimeout as WorkerSetTimeout,
|
|
7
7
|
} from "worker-timers";
|
|
8
8
|
|
|
9
9
|
/** 通用工具类 */
|
|
10
10
|
export const DOMUtilsCommonUtils = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
11
|
+
windowApi: new WindowApi({
|
|
12
|
+
document: document,
|
|
13
|
+
window: window,
|
|
14
|
+
top: top!,
|
|
15
|
+
setTimeout: setTimeout,
|
|
16
|
+
clearTimeout: clearTimeout,
|
|
17
|
+
setInterval: setInterval,
|
|
18
|
+
clearInterval: clearInterval,
|
|
19
|
+
}),
|
|
20
|
+
/**
|
|
21
|
+
* 判断元素是否已显示或已连接
|
|
22
|
+
* @param element
|
|
23
|
+
*/
|
|
24
|
+
isShow(element: HTMLElement) {
|
|
25
|
+
return Boolean(element.getClientRects().length);
|
|
26
|
+
},
|
|
27
|
+
/**
|
|
28
|
+
* 获取安全的html
|
|
29
|
+
*/
|
|
30
|
+
getSafeHTML(text: string) {
|
|
31
|
+
if (window.trustedTypes) {
|
|
32
|
+
const policy = window.trustedTypes.createPolicy("safe-innerHTML", {
|
|
33
|
+
createHTML: (html: string) => html,
|
|
34
|
+
});
|
|
35
|
+
return policy.createHTML(text);
|
|
36
|
+
} else {
|
|
37
|
+
return text;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* 在CSP策略下设置innerHTML
|
|
42
|
+
* @param $el 元素
|
|
43
|
+
* @param text 文本
|
|
44
|
+
*/
|
|
45
|
+
setSafeHTML($el: HTMLElement, text: string) {
|
|
46
|
+
// 创建 TrustedHTML 策略(需 CSP 允许)
|
|
47
|
+
$el.innerHTML = this.getSafeHTML(text);
|
|
48
|
+
},
|
|
49
|
+
/**
|
|
50
|
+
* 用于显示元素并获取它的高度宽度等其它属性
|
|
51
|
+
* @param element
|
|
52
|
+
*/
|
|
53
|
+
showElement(element: HTMLElement) {
|
|
54
|
+
const dupNode = element.cloneNode(true) as HTMLElement;
|
|
55
|
+
dupNode.setAttribute("style", "visibility: hidden !important;display:block !important;");
|
|
56
|
+
this.windowApi.document.documentElement.appendChild(dupNode);
|
|
57
|
+
return {
|
|
58
|
+
/**
|
|
59
|
+
* 恢复修改的style
|
|
60
|
+
*/
|
|
61
|
+
recovery() {
|
|
62
|
+
dupNode.remove();
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* 获取元素上的Float格式的属性px
|
|
68
|
+
* @param element
|
|
69
|
+
* @param styleName style名
|
|
70
|
+
*/
|
|
71
|
+
getStyleValue(element: HTMLElement | CSSStyleDeclaration, styleName: string) {
|
|
72
|
+
let view = null;
|
|
73
|
+
let styles = null;
|
|
74
|
+
if (element instanceof CSSStyleDeclaration) {
|
|
75
|
+
/* 直接就获取了style属性 */
|
|
76
|
+
styles = element;
|
|
77
|
+
} else {
|
|
78
|
+
view = element.ownerDocument.defaultView;
|
|
79
|
+
if (!view || !view.opener) {
|
|
80
|
+
view = window;
|
|
81
|
+
}
|
|
82
|
+
styles = view.getComputedStyle(element);
|
|
83
|
+
}
|
|
84
|
+
const value = parseFloat(styles[styleName as any]);
|
|
85
|
+
if (isNaN(value)) {
|
|
86
|
+
return 0;
|
|
87
|
+
} else {
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
/**
|
|
92
|
+
* 判断是否是window,例如window、self、globalThis
|
|
93
|
+
* @param target
|
|
94
|
+
*/
|
|
95
|
+
isWin(target: any) {
|
|
96
|
+
if (typeof target !== "object") {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
if (target instanceof Node) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
if (target === globalThis) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
if (target === window) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
if (target === self) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
if (target === globalThis) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
if (target === window) {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
if (target === self) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
if (typeof unsafeWindow !== "undefined" && target === unsafeWindow) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
if (target?.Math?.toString() !== "[object Math]") {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
},
|
|
128
|
+
/**
|
|
129
|
+
* 删除对象上的属性
|
|
130
|
+
* @param target
|
|
131
|
+
* @param propName
|
|
132
|
+
*/
|
|
133
|
+
delete(target: any, propName: any) {
|
|
134
|
+
if (typeof Reflect === "object" && Reflect.deleteProperty) {
|
|
135
|
+
Reflect.deleteProperty(target, propName);
|
|
136
|
+
} else {
|
|
137
|
+
delete target[propName];
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
/**
|
|
141
|
+
* 自动使用 Worker 执行 setTimeout
|
|
142
|
+
*/
|
|
143
|
+
setTimeout(callback: (...args: any[]) => any, timeout: number = 0) {
|
|
144
|
+
try {
|
|
145
|
+
return WorkerSetTimeout(callback, timeout);
|
|
146
|
+
} catch {
|
|
147
|
+
return this.windowApi.setTimeout(callback, timeout);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
/**
|
|
151
|
+
* 配合 .setTimeout 使用
|
|
152
|
+
*/
|
|
153
|
+
clearTimeout(timeId: number | undefined) {
|
|
154
|
+
try {
|
|
155
|
+
if (timeId != null) {
|
|
156
|
+
WorkerClearTimeout(timeId);
|
|
157
|
+
}
|
|
158
|
+
} catch {
|
|
159
|
+
// TODO
|
|
160
|
+
} finally {
|
|
161
|
+
this.windowApi.clearTimeout(timeId);
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
/**
|
|
165
|
+
* 自动使用 Worker 执行 setInterval
|
|
166
|
+
*/
|
|
167
|
+
setInterval(callback: (...args: any[]) => any, timeout: number = 0) {
|
|
168
|
+
try {
|
|
169
|
+
return WorkerSetInterval(callback, timeout);
|
|
170
|
+
} catch {
|
|
171
|
+
return this.windowApi.setInterval(callback, timeout);
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
/**
|
|
175
|
+
* 配合 .setInterval 使用
|
|
176
|
+
*/
|
|
177
|
+
clearInterval(timeId: number | undefined) {
|
|
178
|
+
try {
|
|
179
|
+
if (timeId != null) {
|
|
180
|
+
WorkerClearInterval(timeId);
|
|
181
|
+
}
|
|
182
|
+
} catch {
|
|
183
|
+
// TODO
|
|
184
|
+
} finally {
|
|
185
|
+
this.windowApi.clearInterval(timeId);
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
/**
|
|
189
|
+
* 判断是否是元素列表
|
|
190
|
+
* @param $ele
|
|
191
|
+
*/
|
|
192
|
+
isNodeList($ele: any): $ele is any[] | NodeList {
|
|
193
|
+
return Array.isArray($ele) || $ele instanceof NodeList;
|
|
194
|
+
},
|
|
195
|
+
/** 获取 animationend 在各个浏览器的兼容名 */
|
|
196
|
+
getAnimationEndNameList() {
|
|
197
|
+
return ["webkitAnimationEnd", "mozAnimationEnd", "MSAnimationEnd", "oanimationend", "animationend"];
|
|
198
|
+
},
|
|
199
|
+
/** 获取 transitionend 在各个浏览器的兼容名 */
|
|
200
|
+
getTransitionEndNameList() {
|
|
201
|
+
return ["webkitTransitionEnd", "mozTransitionEnd", "MSTransitionEnd", "otransitionend", "transitionend"];
|
|
202
|
+
},
|
|
203
203
|
};
|
package/src/DOMUtilsData.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* 数据 */
|
|
2
2
|
const DOMUtilsData = {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/** .on添加在元素存储的事件 */
|
|
4
|
+
SymbolEvents: Symbol("events_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)),
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
export { DOMUtilsData };
|