为何调用event.composedPath()时出现'Uncaught TypeError'错误?
解决jQuery事件中调用
event.composedPath()报错的问题 错误原因
你在jQuery事件回调里拿到的event是jQuery封装后的事件对象,并非浏览器原生的Event对象。composedPath()是原生Event对象的专属方法,jQuery封装的事件对象并未实现这个方法,因此调用时会抛出类型错误。
解决方法
jQuery提供了originalEvent属性,通过它可以获取到浏览器原生的事件对象,之后再调用composedPath()即可正常运行。修改后的代码如下:
$(window).on('click', function(event) { console.log(event.currentTarget); console.log(event.target); // 获取原生事件对象后调用composedPath event.originalEvent.composedPath().forEach((affected) => console.log(affected)); });
补充说明
jQuery封装事件对象的目的是实现跨浏览器兼容,将不同浏览器的原生事件API统一,但原生事件的部分新增方法(如composedPath())不会被纳入封装范围,这类场景下需要直接操作原生事件对象。
内容的提问来源于stack exchange,提问作者Rory Lynch
相关产品推荐
相关产品推荐

