当用户点击音频播放器(如播放、暂停按钮)导致文本域失去焦点时,可通过监听音频元素的 focus 事件,主动将焦点重新设回 textarea,确保输入体验连续不中断。
在 HTML 表单中嵌入 元素时,浏览器默认会将焦点转移到音频控件(尤其在点击播放/暂停/进度条等可交互区域时),导致原本聚焦的
✅ 正确做法是:监听音频元素自身的 focus 事件(而非 click),并在回调中调用 textarea.focus()。该事件会在音频控件获得焦点时可靠触发(包括鼠标点击、Tab 导航进入、键盘操作激活等场景):
Your browser does not support the audio element.
const textarea = document.getElementById("input_tr");
const audioPlayer = document.getElementById("audio-player");
// 监听音频元素获得焦点时,立即将焦点交还给 textarea
audioPlayer.addEventListener("focus", () => {
// 延迟执行确保 DOM 状态稳定(可选
,但推荐用于兼容性)
setTimeout(() => textarea.focus(), 0);
});⚠️ 注意事项:
通过该方案,用户无论点击播放按钮、拖动进度条,还是使用空格/Enter 键控制音频,焦点都会无缝回归至文本域,真正实现“所见即所写”的沉浸式输入体验。