如何取消contenteditable div中的选择?

时间:2017-11-08 20:42:49

标签: javascript html selection

在我的网页上,我有一个contenteditable div元素。按下特定键时,执行一个函数:

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

getSelectionHtml()检查用户是否选择了某些内容。 replaceSelectedText(text)用给定的字符串替换选定的文本。这两个功能都正常工作 替换所选文本后,我想取消'用户的选择,因为选择现在等于“' new'字符串,所以只是删除文本不是一个选项。

我试过了:

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

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

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

1 个答案:

答案 0 :(得分:1)

我认为您想完全删除选择。一旦用

替换了字符串,就可以这样做
window.getSelection().removeAllRanges()

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