在我的页面上,我有一个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