下面是一些非常基本的 JQuery 代码,我收到一个无法解释的错误。
event.currentTarget 按预期记录,event.target 也是如此。
但是composedPath()方法调用失败。与错误 “未捕获的类型错误:event.composedPath 不是函数”
代码是
$(window).on('click', function(event) {
console.log(event.currentTarget);
console.log(event.target);
event.composedPath().forEach((affected) => console.log(affected));
});
任何人都可以发现我做错了什么,或者想到错误的任何原因吗?希望我遗漏了一些非常明显的东西。
https://api.jquery.com/category/events/event-object/
jQuery的事件系统根据W3C标准规范事件对象。事件对象保证被传递到事件处理程序。 原始事件中的大多数属性都会被复制并标准化为新的事件对象。
在这种情况下,jQuery 事件不包含composedPath
/*
$(window).on('click', function(event) {
// console.log(event.currentTarget);
// console.log(event.target);
console.log(event.composedPath)
// event?.composedPath().forEach((affected) => console.log(affected));
});
*/
window.addEventListener('click', function(event) {
// console.log(event.currentTarget);
// console.log(event.target);
console.log(event.composedPath)
event?.composedPath().forEach((affected) => console.log(affected));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
解决方法
$(window).on('click', function(event) {
if (event.originalEvent && typeof event.originalEvent.composedPath === 'function') {
console.log(event.originalEvent.composedPath());
} else {
console.log('composedPath is not available');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>