使默认双击行为将零宽度空格视为单词字符



我有一个 html 页面,其中有些单词被​分割,所以它们看起来像​​F​Rig​V​M​External​Variable,但在代码中它们实际上是F​Rig​V​M​External​Variable​的。问题是,当我单击单词时,它只选择以​为边框的部分,而理想的行为是选择整个单词

如何覆盖 JS 中的默认双击行为,以便它将​视为单词边界?

您可以双击以选择整行/段落。否则,​是本问题中所述的单词分隔符,因此双击时的默认浏览器操作是选择光标下的单词。

<!DOCTYPE html>
<html lang='pt-br'>
<head>
<title>Teste</title>
</head>
<body>
a&#8203;better&#8203;test with spaces<br>
a&#8203;better&#8203;test with spaces<br>
</body>
</html>

我找到了一个解决方案,它保留了单词在特定位置被软分解的能力,但不会干扰选择。它是标签</wbr>.当我在</wbr>上替换&#8203;时,单词可能会在</wbr>处被软破坏,但是当我单击单词的任何部分时,整个单词都会被选中。

F<wbr/>Rig<wbr/>V<wbr/>M<wbr/>External<wbr/>Variable<wbr/>

如果你不需要零宽度的空格,你应该使用.replace()和正则表达式标志u删除它们,这使正则表达式方法能够识别 Unicode。零宽度空间的 Unicode 是:U+200B在 JavaScript 的土地上是:u200B

function noZero(string) {
return string.replace(/u200B/gu, '');
}
const str = document.querySelector(".zero").innerHTML;
const result = noZero(str);
document.querySelector(".clean").insertAdjacentHTML("beforeend", result);
<p class="zero">Try <u>s​e​l​e​c​t​i​n​g</u> the underlined word.</p>
<p class="clean"></p>

最新更新