当前位置: 首页 > 知识库问答 >
问题:

javascript - js如何在粘贴文本到指定组件之前做内容替换?

南宫正阳
2023-07-22

js如何在粘贴文本到指定组件之前做内容替换?

共有2个答案

罗翰
2023-07-22

试试这几个方法能实现你想要的不

  // 获取剪贴板中的纯文本内容  var clipboardData = event.clipboardData || window.clipboardData;  var plainText = clipboardData.getData("text/plain");  // 使用正则表达式替换HTML和JS代码,替换掉所有的HTML标签和script标签  var cleanText = plainText.replace(/<[^>]+>/g, "");  // 插入替换后的文本到目标组件中  document.execCommand("insertHTML", false, cleanText);
马俊
2023-07-22

可以使用粘贴事件监听器或者一个新特性 ClipboardEvent.clipboardData

因为 clipboardData 还处于实验阶段,以下解决方案兼容性有待考证(但根据浏览器兼容性列表,主流浏览器都有实现,所以问题不大)

// 获取富文本编辑器const editorElement = document.getElementById('rich-text-editor');// 监听粘贴事件editorElement.addEventListener('paste', function(event) {  // 阻止默认的粘贴行为  event.preventDefault();  // 获取剪贴板中的文本数据  const clipboardData = event.clipboardData || window.clipboardData;  const pastedText = clipboardData.getData('text/plain');  // 清除HTML和JavaScript代码,只保留纯文本部分  const plainText = stripTagsAndScripts(pastedText);  // 在富文本编辑器中插入纯文本内容  insertPlainText(editorElement, plainText);});// 清除HTML和JavaScriptfunction stripTagsAndScripts(text) {   // 正则表达式清除不需要的元素,只保留纯文本部分。   return text.replace(/<[^>]+>/g, '').replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');}// 向富文本中插入内容(根据需求自定义)function insertPlainText(element, content) {   // 这里我只是简单地追加   element.innerText += content;}

上面只是简单实现插入,如果想具体插入到光标所在位置等更复杂的需求可以参考下方 Selection 链接自行完善

参考
clipboardData MDN
Selection MDN
 类似资料:
  • 问题内容: 我正在寻找一个如何将文本复制到iOS剪贴板的干净示例,然后可以在其他应用程序中使用/粘贴该文本。 此功能的优点是可以快速复制文本,而无需传统文本复制的标准文本突出显示功能。 我假设键类在其中,但是在它们提供的代码示例中找不到相关的区域。 问题答案: 如果您只需要纯文本,则可以使用属性。它既可读又可写: (从剪贴板中 读取数据时 ,UIPasteboard文档还建议您首先检查一下,“以避

  • 问题内容: 将Java代码生成的内容(或文本)粘贴到excel中时遇到问题。问题是我的Java代码生成了包含多行的字符串,即包含换行符()。当我尝试复制此内容并将其粘贴到Excel文件中时,出现带有方框符号的多行文本。我知道Windows不仅用于换行,还用于换行。我试图取代我用并粘贴生成的文本,但我在我的Excel文件中得到同样的方框。这是我的示例代码: 我使用了 “” 来包装文字。当我尝试在Ex

  • 问题内容: 这是Web上RTE的常见问题之一。您能否指导我完成以下步骤: 粘贴为纯文本 保留HTML,但删除WORD / HTML样式 我想直接在粘贴(paste_preprocess回调)上执行此操作,而无需打开粘贴插件提供的对话框。 有什么想法/经验吗? 谢谢, 问题答案: 这就是我要做的粘贴纯文本。 1. paste_preprocess设置(在tinymce init中) 2.函数stri

  • 问题内容: 我在Web应用程序的根目录有一个文本文件,我想将其加载到javascript .. groovy中的变量中,我可以这样做: 如何在javascript中获得类似的结果? 问题答案: XMLHttpRequest,即AJAX,不带XML。 具体执行的方式取决于您使用的JavaScript框架,但是如果我们忽略互操作性问题,您的代码将类似于: 但是,通常来讲,并不是所有平台上都提供XMLH

  • 问题内容: 根据下面介绍的示例,我有一个基本的编辑器。有三种方法可以在区域内粘贴文本: + 右键单击->粘贴 右键单击->作为纯文本粘贴 我想只粘贴没有任何HTML标记的纯文本。如何强制前两个动作粘贴纯文本? 可能的解决方案: 我想到的方法是为(+ )的keyup事件设置侦听器,并在粘贴之前剥离HTML标记。 这是最好的解决方案吗? 避免粘贴任何HTML标记是否安全? 如何将侦听器添加到右键单击-