我有一个 html 页面,其中有些单词被​
分割,所以它们看起来像FRigVMExternalVariable
,但在代码中它们实际上是F​Rig​V​M​External​Variable​
的。问题是,当我单击单词时,它只选择以​
为边框的部分,而理想的行为是选择整个单词
如何覆盖 JS 中的默认双击行为,以便它将​
视为单词边界?
您可以双击以选择整行/段落。否则,​
是本问题中所述的单词分隔符,因此双击时的默认浏览器操作是选择光标下的单词。
<!DOCTYPE html>
<html lang='pt-br'>
<head>
<title>Teste</title>
</head>
<body>
a​better​test with spaces<br>
a​better​test with spaces<br>
</body>
</html>
我找到了一个解决方案,它保留了单词在特定位置被软分解的能力,但不会干扰选择。它是标签</wbr>
.当我在</wbr>
上替换​
时,单词可能会在</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>selecting</u> the underlined word.</p>
<p class="clean"></p>