在不使用标签的情况下以输入形式突出显示某些单词?

时间:2019-10-25 19:10:30

标签: javascript

在用户输入推文时,我需要在Twitter输入表单中突出显示某些单词,但显然Twitter拥有一个脚本来保护表单并删除我在其中输入的所有HTML标签。不用标签就可以做到吗?

1 个答案:

答案 0 :(得分:2)

我能想到的唯一方法是使用getBoundingClientRect()并在用户书写时在框上绘制覆盖物。

getBoundingClientRect()昂贵,但是以用户键入速度运行实际上并不成问题。

它将从窗口的顶部/左侧边缘返回元素的绝对位置,因此您可以在框上创建一个绝对(或我猜是固定的)元素,并将接收到的位置设置为元素。

我想最快的方法是像现在一样处理文本并创建HTML标签,然后获取getBoundingClientRect()并创建每个标签的覆盖图。然后,Twitter会将输入重置为所需的任何内容,但是只要您在创建标签时在同一事件循环中执行此操作(在Twitter进行任何更改之前),您就已经获得了getBoundingClientRect()

重要提示:请不要忘记将pointer-events CSS添加到none,这样叠加层就不会捕获任何鼠标单击。

pointer-events documentation here

getBoundingClientRect documentation here