Chrome更新后,点击网页文字出现闪烁光标的解决办法

今天正在编写项目代码时,无意间发现点击日历组件后,在文字中间出现了一个闪烁光标…

问题截图问题截图

最初我以为是早上更新了PrimeVue的版本导致的,于是我打开官网文档,准备从官网示例中去复现一下情况。结果无意点击到文字段落上也出现了一个闪烁光标。

点击的文字段落处也闪烁光标点击的文字段落处也闪烁光标

这在以前从未出现过,因此我认为问题可能不在于UI库,而像是浏览器本身的行为。但在进一步调查之前,我需要先排除是否由最近启用的两个Chrome插件引起的问题。

我关闭了全部的Chrome插件,但问题依旧存在我关闭了全部的Chrome插件,但问题依旧存在

于是我开始问ChatGPT,它很快给出了正确的回答以及官方推出的动机:

在 新版 Chrome(约 120+ 之后逐步放开) 中,Chrome 新版引入的一项可访问性 / 易用性行为变化,当你单击网页中的“普通文本”时,Chrome 会显示一个闪烁的文本光标(caret),看起来就像该文本“被选中并可编辑”一样。但实际上页面并没有进入编辑状态,只是浏览器层面的文本光标定位。

官方动机(为什么这么做)

这是 Chrome 推出的 “点击即定位光标(Caret Browsing Lite)” 行为,核心目的包括:

  1. 提升可访问性,方便键盘用户用方向键逐字阅读文本
  2. 提升复制体验,点击后直接 Shift + ←/→ 选中文本
  3. 与移动端行为趋同,移动端浏览器早已有类似行为

这和传统的 F7 启用“光标浏览模式” 是同一技术路线,只是:

  • 以前:需要手动开启
  • 现在:默认对鼠标点击生效(轻量化版本)

目前这个特性会影响所有<p>span<div>标签内的文本选中,除非手动关闭浏览器行为(只覆盖自己)或针对标签添加样式(覆盖所有人)。

一、手动关闭浏览器行为

在地址栏访问 chrome://settings/accessibility,关闭 “通过文本光标浏览页面”

关闭此选项关闭此选项

二、针对标签添加样式

<p>span<div>等元素添加一个no-caret样式类,禁止选中文本和设置光标的颜色为透明。

1
2
3
4
.no-caret {
user-select: none;
caret-color: transparent;
}

最后,由于对我造成的主要影响是可交互组件/按钮的文本出现光标了,所以我缩小了样式应用范围,仅针对可交互组件的文本样式进行了设置,大家可以根据情况来进行调整。

1
2
3
4
5
.button-text,
.label {
user-select: none;
caret-color: transparent;
}

Chrome更新后,点击网页文字出现闪烁光标的解决办法

作者:有点东西

链接: https://www.youdiandongxi.com/article/chrome-caret-browsing-lite.html

协议:本文采用 CC BY-NC-SA 4.0 隐私协议,转载请注明出处!

评论区