如何在使用“文本/纯文本”进行粘贴时保持换行符?

时间:2019-04-15 16:01:36

标签: javascript html

编辑:不是重复

实际上,甚至提到了标记为重复的问题并在此处链接。问题的标题和目的彼此完全不同。另一个问题的答案之一(可以说是用来回答这个问题)是出于完全不同的原因(与IE兼容),因此很难被理解为对该问题的答案。


原始问题

我从这个Javascript trick for 'paste as plain text` in execCommand

中获得了以下代码

我按预期工作。它给我纯文本。

但是我想摆脱所有文本格式,但是我想仅保留复制文本的换行符吗?有没有办法解决此代码以实现此行为?

注意:作为示例,似乎我们在此处在Stack Overflow上编写问题的问题编辑器的工作原理完全一样。摆脱一切,但遵守换行符。

// ALLOW TEXT ONLY ON PASTE
  function onPaste(e) {
    e.preventDefault();
    // GET TEXT REPRESENTATION OF CLIBOARD DATA
    const text = (e.originalEvent || e).clipboardData.getData('text/plain');
    // INSERT TEXT MANUALLY
    document.execCommand("insertHTML", false, text);
  }

SNIPPET

function onPaste(e) {
    e.preventDefault();
    // GET TEXT REPRESENTATION OF CLIBOARD DATA
    const text = (e.originalEvent || e).clipboardData.getData('text/plain');
    // INSERT TEXT MANUALLY
    document.execCommand("insertHTML", false, text);
}

document.getElementById("root").addEventListener("paste", onPaste);
#root {
  border: 1px dotted blue;
  
}
<div>Below is a contenteditable DIV</div>
<div id="root" contenteditable>

</div>

<div><br><br>Copy both paragraphs to the contenteditable div</div>
<p>First <b>Paragraph</b></p>
<p>Second Paragraph</p>

1 个答案:

答案 0 :(得分:2)

使用命令insertText代替命令insertHTML