javascript - 强制文本选择(突出显示)至少为一个完整的空格分隔的单词

标签 javascript css

我正在尝试使 div 一次只能突出显示一个单词。

例如,从上面的句子中,我可以突出显示/选择仅突出显示,但不能仅高亮。如果我将鼠标放在 highli 的位置,它要么还没有选择 highlighted,要么选择了整个 highlighted已经。

为了澄清,通过突出显示/选择我的意思是当您单击一个单词,按住鼠标按钮,然后拖动到文本中的另一个点时会发生什么。

我还没有找到任何这样的例子,但我也觉得我以前见过类似的东西。有没有一种简单的方法可以做到这一点,例如一些 CSS 规则?或者是推出一些自定义 JavaScript 处理文档选择的唯一方法?

最佳答案

可以通过将每个单词包装到一个 span 元素中并使用 user-select:all 强制选择元素范围来强制选择单词

    <style>
        .word {
            user-select: all;
        }
    </style>

<span class="word">this</span>
<span class="word">test</span>
<span class="word">is</span>
<span class="word">a</span>

现在手动执行此操作可能会很烦人,因此 javascript 可以来救援,例如:

<style>
    .word {
        -moz-user-select: all;
        -webkit-user-select: all;
        -ms-user-select: all;
        user-select: all;
    }
</style>

<p class="selected-by-word">Hello this is a text where selection should be word-wide.</p>
<p class="selected-by-word">Another text with word-wide selection.</p>

<script>
    let textToSplit = document.getElementsByClassName('selected-by-word')

    Array.prototype.forEach.call(textToSplit, function (anElement) {
        anElement.innerHTML = anElement.innerHTML.replace(/\w+/g, "<span class='word'>$&</span>")
    })
</script>

所有具有按单词选择类的元素都将设置为全单词选择。

关于javascript - 强制文本选择(突出显示)至少为一个完整的空格分隔的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49549695/

相关文章:

javascript - 在 Node 中导出和要求不起作用,说类未定义

html - 我的 iPhone 6 上的 Safari 忽略了 overflow-x : hidden

html - 在表格行的中间排列图标

HTML全屏背景图片

html - Div 背景不会显示嵌套子项

javascript - 如何通过ref获取输入(StyledComponent)值

javascript - 未捕获的语法错误 : Invalid or unexpected token load-scripts. php:343 - WordPress 小部件

javascript - 返回已解决的 promise 和仅处理解决的常规 promise 之间的区别

javascript - 文字被沙吹走动画

html - 响应式幻灯片 - 调整大小时与另一个 div 重叠