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

JavaScript:onblur调用alert()在Firefox/Chrome中存在异常问题

解决onblur中调用alert导致的浏览器焦点异常问题

问题原因

alert()是同步阻塞式弹窗,会打断浏览器的事件处理流程。当onblur触发时立即调用alert,浏览器还没完成焦点转移的后续操作(比如移除:focus-visible状态、更新当前焦点元素)就被弹窗阻塞,从而引发Chrome和Firefox中的各种焦点异常。

修复方案

把alert()的调用放到setTimeout中,让浏览器先完成焦点相关的处理逻辑,再执行弹窗:

// 原问题写法
inputElement.onblur = function() {
  alert('输入框失去焦点');
};

// 修复后写法
inputElement.onblur = function() {
  setTimeout(() => {
    alert('输入框失去焦点');
  }, 0);
};

说明

setTimeout会把alert的执行放到当前事件循环的末尾,给浏览器留出时间完成焦点状态的更新和管理,这样就能避免弹窗干扰焦点转移的流程,解决Chrome中无法离开输入框、Firefox中:focus-visible状态残留的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:32:00