当前位置: 首页 > 面试题库 >

execCommand中“粘贴为纯文本”的JavaScript技巧

杭昊空
2023-03-14
问题内容

根据execCommand下面介绍的示例,我有一个基本的编辑器。有三种方法可以在execCommand区域内粘贴文本:

  • Ctrl+V
  • 右键单击->粘贴
  • 右键单击->作为纯文本粘贴

我想只粘贴没有任何HTML标记的纯文本。如何强制前两个动作粘贴纯文本?

可能的解决方案: 我想到的方法是为(Ctrl+ V)的keyup事件设置侦听器,并在粘贴之前剥离HTML标记。

  1. 这是最好的解决方案吗?
  2. 避免粘贴任何HTML标记是否安全?
  3. 如何将侦听器添加到右键单击->粘贴?

问题答案:

它将拦截paste事件,取消paste,并手动插入剪贴板的文本表示形式:
这应该是最可靠的:

  • 它捕获各种粘贴(Ctrl+ V,上下文菜单等)
  • 它使您可以直接以文本形式获取剪贴板数据,因此您不必进行难看的修改即可替换HTML。

不过,我不确定是否支持跨浏览器。

editor.addEventListener("paste", function(e) {
    // cancel paste
    e.preventDefault();

    // get text representation of clipboard
    var text = (e.originalEvent || e).clipboardData.getData('text/plain');

    // insert text manually
    document.execCommand("insertHTML", false, text);
});


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

  • 问题内容: 我正在尝试不使用Flash复制到剪贴板,如果浏览器与javascript方法不兼容,我打算使用ZeroClipboard退回到Flash 。 我有一个类似按钮的onClick侦听器: 和一个输入字段,如下所示: 当前,这可以按预期工作,但是设计要求包含要复制的文本的字段不可见。我尝试了两种设置,但都没有成功。两者都会导致按钮选择整个页面并将整个内容复制到用户的剪贴板。 我比较有信心,原

  • 问题内容: 有没有办法在JavaScript中拦截粘贴事件并获取原始值,对其进行更改并将关联的DOM元素的值设置为修改后的值? 例如,我有一个用户试图复制并粘贴带空格的字符串,并且字符串的长度超过了我的文本框的最大长度。我想截取文本,删除空格,然后使用更改值设置文本框的值。 这可能吗? 问题答案: 您可以通过附加“ onpaste”处理程序来拦截粘贴事件,并通过在IE中使用“ ”或在其他浏览器中使

  • 在一个非Vue项目构建的、仅是普通的JavaScript项目里,只是简单地在页面引入了quill.js、vue-quill-editor.js、vue.js。 需要实现在vuequilleditor中粘贴文本时,将粘贴的富文本转换文纯文本,并插入到光标所在位置。 如果光标选中了部分内容,需要将选中的内容替换为粘贴文本。 插入文本后,需要修改光标位置到插入文本的后面 即使当前光标所在的位置(选中的文

  • 问题内容: 有没有一种方法可以使用JavaScript禁用将文本粘贴到HTML表单上的文本字段的功能? 例如,我有一个简单的注册表格,要求用户输入两次电子邮件。第二个电子邮件条目是为了验证第一个电子邮件条目中没有错别字。但是,如果用户复制/粘贴他们的电子邮件,那么这将无法达到目的,并且我一直在遇到用户的问题,因为他们输入了错误的电子邮件并复制/粘贴了它。 也许我不清楚我的问题,但我并不想阻止人们在