gpt4 book ai didi

javascript - 在 contentEditable 中将 HTML 转换为纯文本

转载 作者:技术小花猫 更新时间:2023-10-29 12:11:15 31 4
gpt4 key购买 nike

我有一个 contentEditable 并且我通过捕获事件去除了粘贴内容的格式 on('paste') 。然后我聚焦一个文本区域,将内容粘贴到那里,然后复制值。几乎来自 here 的答案.问题是我不能这样做:

$("#paste-output").text($("#area").val());

因为那样会用粘贴的文本替换我的全部内容。所以我需要将内容粘贴到插入位置。我整理了一个执行此操作的脚本:

pasteHtmlAtCaret($("#area").val());

// pastes CTRL+V content at caret position
function pasteHtmlAtCaret(html) {
var sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(), node, lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);

if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if (document.selection && document.selection.type != "Control") {
document.selection.createRange().pasteHTML(html);
}
}

唯一的问题是它使用 html 变量将 HTML 内容粘贴到插入位置。我怎样才能将其转换为纯文本?我尝试将 jQuery .text(html) 添加到变量,但没有成功。这样的事情可能会有所帮助:

el.textContent||el.innerText;

任何想法或更好的解决方案?谢谢!


编辑:感谢下面的答案,我修改了我的代码并解决了这个问题。我基本上是将 textarea 的值复制到 div 中,然后只抓取它的 .text():

// on paste, strip clipboard from HTML tags if any
$('#post_title, #post_content').on("paste", function() {
var text = $('<div>').html($("#area").val()).text();
pasteHtmlAtCaret(text);
}, 20);
});

最佳答案

  1. 创建一个外部 div,
  2. 将您的 html 放在该 div 中,
  3. 从那个 div 复制文本
  4. 将其插入到光标位置。

关于javascript - 在 contentEditable 中将 HTML 转换为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15125217/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com