在我的页面上,我有一个contenteditable div元素。当按下特定键时,将执行以下功能:

function bla(element) {
  if (getSelectionHtml() != "") {
    replaceSelectedText("text");
  }
}


getSelectionHtml()检查用户是否选择了某些内容。 replaceSelectedText(text)用给定的字符串替换所选文本。两种功能均正常运行。
替换选定的文本之后,我想“取消”用户的选择,因为选择现在等于“新”字符串,因此仅删除文本是不可行的。

我尝试了这个:

element.style.userSelect = "none";
element.style.userSelect = "text;


但这没有用,因为userSelect: none似乎没有用contenteditable更改div元素中的任何内容。同样,对于这样一个简单的问题,此解决方案看起来很难看。

那么,如何取消用户的选择?

最佳答案

我认为您想完全删除选择。一旦将字符串替换为,就可以这样做

window.getSelection().removeAllRanges()


因此,基本上,一旦选择了内容范围,就可以使用window.getSelection()方法获得范围,该方法返回有关所选内容的详细信息集。它具有许多功能,可以更改范围并完全删除范围。要了解更多信息,您可以简要阅读所有受支持的方法Selection API

10-01 03:59
查看更多