用JavaScript模拟剪切功能?

时间:2019-04-06 21:24:35

标签: javascript

我正在使用chrome扩展程序,并且想对页面上选定的文本(由用户突出显示)进行处理。为此,我需要一种方法来删除选定的文本,例如输入字段中的文本。

我找到了一种“清除”所选文本的方法,这意味着它将被取消选择: Clear Text Selection with JavaScript但这似乎不是我想要的。

这只会删除文本中的突出显示:

window.getSelection().empty();

我要删除所选的文本(如果它是可编辑的文本)。 JavaScript可以做到这一点吗?

1 个答案:

答案 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);
}