You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Safari中window的blur事件composedPath返回空数组问题

Safari 15中blur事件composedPath()返回空数组的问题分析

问题现象

给window绑定blur事件后,调用事件对象的composedPath()方法:

  • Chrome浏览器返回包含window对象的数组(长度为1)
  • Safari 15浏览器返回空数组

示例代码:

JavaScript代码

window.addEventListener('blur', (e)=>{
    debugger;
    console.log("Composed Path" , e.composedPath());
});

HTML代码

<head>
    <title>Example</title>
</head>
<body>
    <p>This is an example of a simple HTML page with one paragraph.</p>
</body>

原因分析

这是Safari的已知实现差异:针对全局window的blur事件,Safari并未构建完整的事件传播路径,因此composedPath()返回空数组。并非Safari不支持blur事件本身,而是事件路径处理逻辑与Chrome不同,MDN文档目前未明确标注这一细节。

解决方案

由于是window的blur事件,直接使用事件对象的target属性即可获取目标(在Safari和Chrome中均返回window),完全可以替代composedPath()的结果。如果需要统一跨浏览器的composedPath返回格式,可以做兼容处理:

window.addEventListener('blur', (e) => {
    // 兼容Safari的空数组情况
    const eventPath = e.composedPath().length > 0 ? e.composedPath() : [e.target];
    console.log("Composed Path", eventPath);
});

注:若为DOM元素(如输入框)绑定blur事件,Safari的composedPath()行为与Chrome一致,仅全局window的blur事件存在此差异。

内容的提问来源于stack exchange,提问作者Sultan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:32:22