我正在使用chrome扩展程序,并且想对页面上选定的文本(由用户突出显示)进行处理。为此,我需要一种方法来删除选定的文本,例如输入字段中的文本。
我找到了一种“清除”所选文本的方法,这意味着它将被取消选择: Clear Text Selection with JavaScript但这似乎不是我想要的。
这只会删除文本中的突出显示:
window.getSelection().empty();
我要删除所选的文本(如果它是可编辑的文本)。 JavaScript可以做到这一点吗?
答案 0 :(得分:2)
您可以使用deleteFromDocument
方法:
window.getSelection().deleteFromDocument()
这将立即从文档中删除所选内容,并因此清除选择。
如MDN web docs中所述:
Selection接口的deleteFromDocument()方法从文档的DOM中删除所选文本。
如果您希望能够从input
元素中删除文本,则需要使用其他API:
var activeEl = document.activeElement;
var text = activeEl.value;
activeEl.value = text.slice(0, activeEl.selectionStart) + text.slice(activeEl.selectionEnd);
从我这里编辑Synn Ko:要覆盖输入字段,文本区域和内容可编辑内容,请使用以下方法:
var selection = window.getSelection();
var actElem = document.activeElement;
var actTagName = actElem.tagName;
if(actTagName == "DIV") {
var isContentEditable = actElem.getAttribute("contenteditable"); // true or false
if(isContentEditable) {
selection.deleteFromDocument();
}
}
if (actTagName == "INPUT" || actTagName == "TEXTAREA") {
var actText = actElem.value;
actElem.value = actText.slice(0, actElem.selectionStart) + actText.slice(actElem.selectionEnd);
}