在粘贴之前删除某些文本

Remove certain text before pasting it

我有一个粘贴事件,我得到了某些纯文本,所以我想从复制的文本中删除一个文本并粘贴它。

文本已复制到 Clipboard

<p style="font:10pt Times New Roman, Times;" pid="123">
    This Amendment contains only the Cover Page, this Explanatory Note.
</p>

所以我想删除的是 pid="123" ,我怎么可能做到呢?

    myTextArea.addEventListener('paste', (e) => {
     let html = e.clipboardData.getData('text/plain');
                
     console.log('i pasted', html);
    });

您需要先创建一个元素才能更改属性。

否则您将不得不使用循环或 Regex 进行字符串操作。

let htmlAsText = `<p style="font:10pt Times New Roman, Times" pid="123">
    This Amendment contains only the Cover Page, this Explanatory Note.
</p>`;

let div = document.createElement("div");
div.innerHTML = htmlAsText;
div.querySelector("p").removeAttribute("pid");

document.querySelector("body").appendChild(div)

createElement() removeAttribute()

您可以使用正则表达式模式和 replace 方法来获取正确的字符串。这是代码:

myTextArea.addEventListener('paste', (e) => {
 let html = e.clipboardData.getData('text/plain');
 let transformed_html = html.replace(/pid=\"[0-9]*\"/, "");
 console.log('i pasted', transformed_html);
 
 const selection = window.getSelection();
 if (!selection.rangeCount) return false;
 selection.deleteFromDocument();
 selection.getRangeAt(0).insertNode(document.createTextNode(transformed_html));

 event.preventDefault();
});