Chrome在最新版本(109)的更新中,去掉了Event.path这个属性,因为它是非标准API,与其他浏览器存在兼容性问题。
其实之前在做开发的时候也有类似的问题,因为这个属性是谷歌自己定义的,在火狐及Safari进行兼容时,需要将Event.path替换成Event.composedPath()。
如果原有项目用到了大量的Event.path,处理方式也很简单,在项目的main.js里面修改Event原型即可,代码如下
// 首先对旧版本Chrome做出兼容
if (!Event.prototype.hasOwnProperty("path")) {
// 当Event原型中没有path属性时,增加该属性,赋值为composedPath(),此时考虑到path属性名后面可能会被再度启用,可定义为不常见的属性名,并在项目中全局替换
Object.defineProperty(Event.prototype, "path", {
get() {
return this.composedPath();
},
});
}