@whitesev/domutils 1.4.7 → 1.4.8
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 +27 -26
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +27 -26
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +27 -26
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +27 -26
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +27 -26
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +27 -26
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/DOMUtilsEvent.ts +28 -31
package/dist/index.system.js
CHANGED
|
@@ -267,44 +267,45 @@ System.register('DOMUtils', [], (function (exports) {
|
|
|
267
267
|
* @param event
|
|
268
268
|
*/
|
|
269
269
|
function domUtilsEventCallBack(event) {
|
|
270
|
-
let eventTarget = listenerOption.isComposedPath
|
|
271
|
-
? event.composedPath()[0]
|
|
272
|
-
: event.target;
|
|
273
270
|
if (selectorList.length) {
|
|
274
271
|
/* 存在子元素选择器 */
|
|
272
|
+
// 这时候的this和target都是子元素选择器的元素
|
|
273
|
+
let eventTarget = listenerOption.isComposedPath
|
|
274
|
+
? event.composedPath()[0]
|
|
275
|
+
: event.target;
|
|
275
276
|
let totalParent = DOMUtilsCommonUtils.isWin(elementItem)
|
|
276
277
|
? DOMUtilsContext.windowApi.document.documentElement
|
|
277
278
|
: elementItem;
|
|
278
|
-
|
|
279
|
-
|
|
279
|
+
let findValue = selectorList.find((selectorItem) => {
|
|
280
|
+
// 判断目标元素是否匹配选择器
|
|
280
281
|
if (eventTarget.matches(selectorItem)) {
|
|
281
282
|
/* 当前目标可以被selector所匹配到 */
|
|
282
|
-
|
|
283
|
-
checkOptionOnceToRemoveEventListener();
|
|
284
|
-
break;
|
|
283
|
+
return true;
|
|
285
284
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
// 这里尝试使用defineProperty修改event的target值
|
|
292
|
-
try {
|
|
293
|
-
OriginPrototype.Object.defineProperty(event, "target", {
|
|
294
|
-
get() {
|
|
295
|
-
return $closestMatches;
|
|
296
|
-
},
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
catch (error) { }
|
|
300
|
-
listenerCallBack.call($closestMatches, event, $closestMatches);
|
|
301
|
-
checkOptionOnceToRemoveEventListener();
|
|
302
|
-
break;
|
|
303
|
-
}
|
|
285
|
+
/* 在上层与主元素之间寻找可以被selector所匹配到的 */
|
|
286
|
+
let $closestMatches = eventTarget.closest(selectorItem);
|
|
287
|
+
if ($closestMatches && totalParent.contains($closestMatches)) {
|
|
288
|
+
eventTarget = $closestMatches;
|
|
289
|
+
return true;
|
|
304
290
|
}
|
|
291
|
+
return false;
|
|
292
|
+
});
|
|
293
|
+
if (findValue) {
|
|
294
|
+
// 这里尝试使用defineProperty修改event的target值
|
|
295
|
+
try {
|
|
296
|
+
OriginPrototype.Object.defineProperty(event, "target", {
|
|
297
|
+
get() {
|
|
298
|
+
return eventTarget;
|
|
299
|
+
},
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
catch (error) { }
|
|
303
|
+
listenerCallBack.call(eventTarget, event, eventTarget);
|
|
304
|
+
checkOptionOnceToRemoveEventListener();
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
else {
|
|
308
|
+
// 这时候的this指向监听的元素
|
|
308
309
|
listenerCallBack.call(elementItem, event);
|
|
309
310
|
checkOptionOnceToRemoveEventListener();
|
|
310
311
|
}
|