Javascript 如何在Chrome extension中用另一个值替换突出显示的单词

Javascript 如何在Chrome extension中用另一个值替换突出显示的单词,javascript,jquery,html,google-chrome,range,Javascript,Jquery,Html,Google Chrome,Range,我正在创建GoogleChrome扩展,用户可以在可编辑的DOM元素(如输入、文本区域)中搜索高亮显示单词的同义词。扩展名给出可能结果的列表后,用户应该能够单击其中任何一个,并且只有先前突出显示的单词将被新值替换 但是,我无法准确定位突出显示的单词。我尝试了: 使用deepestNode.innerText.replace(“旧单词”、“新单词”),但它会替换文本中出现的任何单词 使用Range接口,但无法获取startOffset和endOffset的值,因为输入节点没有length属性

我正在创建GoogleChrome扩展,用户可以在可编辑的DOM元素(如输入、文本区域)中搜索高亮显示单词的同义词。扩展名给出可能结果的列表后,用户应该能够单击其中任何一个,并且只有先前突出显示的单词将被新值替换

但是,我无法准确定位突出显示的单词。我尝试了:

  • 使用
    deepestNode.innerText.replace(“旧单词”、“新单词”),但它会替换文本中出现的任何单词
  • 使用
    Range
    接口,但无法获取
    startOffset
    endOffset
    的值,因为输入节点没有
    length
    属性

有人能帮我找到一种方法来定位一个以前高亮显示过的单词,这样它就可以被修改了

这个词是如何突出显示的?它的样式必须与周围的文本不同。例如,如果单词位于具有特定
类或
样式的
span
中,请替换该span的
innerHTML
。如果单词不再突出显示,那么替换它可能会让用户感到困惑。该单词由用户手动突出显示,但是用包含特定类的span包围该单词是一个好主意。唯一的问题是,当单词在输入区或文本区时,我如何将其环绕。哦,对了。嗯。假设您正在收听
select
事件(一段代码片段可能会有所帮助,因为我猜您是如何做到的),这样做会不会奏效?
TextArea
Input
都有
selectionStart
selectionEnd
属性。太棒了!非常感谢这解决了我的问题。不幸的是,我没有足够的声望来支持你的评论,但你救了我一命,先生!没关系,我很高兴能帮上忙。考虑到我在这方面得到了多少帮助,所以能够回馈我真是太好了。