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

调用window.focus()时focus事件未触发,是否为预期行为?

问题解答

这是预期行为,原因和浏览器对焦点事件的触发规则直接相关:

  • 浏览器会限制脚本对窗口焦点的强制操控,只有当窗口实际从失焦状态切换到聚焦状态时,才会触发focus事件。
  • 你代码里的window.blur()是脚本主动调用的,浏览器不会真的让窗口失去系统级焦点(除非这个操作是由用户交互触发的,比如点击按钮)。
  • 1秒后调用window.focus()时,窗口其实一直处于激活状态,自然不会触发focus事件。

如果想要验证触发逻辑,可以做个测试:

  1. 运行你的代码后,手动点击其他窗口让当前页面失焦
  2. 等待1秒后,脚本调用window.focus()就会触发focus事件了

你的测试代码:

window.addEventListener("focus", (event) => console.warn(event));
window.blur();
setTimeout(() => {
    window.focus();
}, 1000);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:34:50