当前位置: 首页 > Web前端 > vue.js

event.path参数被浏览器删除,如何一劳永逸解决

时间:2023-04-01 01:41:29 vue.js

问题与国内其他chromium内核浏览器无任何变化),官方升级记录日志记录。\早在21年前,我们就从官方issue得知,chromium内核团队认为Event.path是一个非标准的API,一些地方已经开始删除event.path数组参数。\而event.path是Chrome核心仅支持的属性,不在MDN标准中。所以在兼容性上还是有不足的。方案一(不推荐):varcomposed=Event.composedPath();MDN中有一个composedPath方法,但是根据网上一些网友的反馈,也有可能返回一个空数组(目前还没找到原因)。方法二(推荐):遵循composedPath()方法的原理,逐层收集当前所有冒泡的parentNode元素。在推送到阵列。constcomposedPath=(e:Record)=>{//目前有直接returnletpathArr=e.path||(e.composedPath&&e.composedPath());//优先判断Event.composedPath()方法为空数组if((pathArr||[]).length){returnpathArr;}//不存在则遍历目标节点lettarget=e.targete.path=[]while(target.parentNode!==null){e.path.push(target)target=target.parentNode}//最后添加文档和窗口对象e.path.push(document,window)returne.path;};