我有一个基于execCommand的基本编辑器,遵循这里介绍的示例.在execCommand区域内粘贴文本有三种方式:

  • Ctrl+V
  • Right Click -> Paste
  • Right Click -> Paste As Plain Text

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

Possible Solution:我能想到的方法是为(Ctrl+V)设置按键事件的侦听器,并在粘贴之前剥离HTML标记.

  1. 这是最好的解决方案吗?
  2. 避免粘贴任何HTML标记是防弹的吗?
  3. How to add listener to Right Click -> Paste?

推荐答案

It will intercept the paste event, cancel the paste, and manually insert the text representation of the clipboard:
http://jsfiddle.net/HBEzc/. This should be the most reliable:

  • 它捕获各种粘贴(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);
});

Html相关问答推荐

HTML::Element endtag为br和IMG生成结束标签>

如何将值从Google Sheets侧边栏中的表单中的输入传递到Google Sheets单元格中使用Textile()

R中的动态Webscraping

如何正确使用counter()、counter—increment()和counter—reset()嵌套标题?

你能让Cypress测试为p—fileUpload做文件上传吗?

Vue.js复选框对齐问题:在表格单元格中居中复选框

如何在不影响子列表的情况下在HTML(OL Li)上同时加数字和列表?

Chrome和Safari浏览器中的CSS3动画不同

将ANGLE模板高效地迁移到ANGLE 17中引入的新语法

为所有必填字段添加所需的占位符文本(Angular Material)

带下划线的文本应该有延长的下划线,以使其图像悬停

rmarkdown HTML数字不适用于针织衫_1.44

:after 伪元素没有出现,即使它有 content 属性

在 html 和 css 中绘制表格内的倾斜线

如何使背景 colored颜色 逐渐渐变成另一种 colored颜色 ?

在包含 html 标签的字符串的子字符串中应用不同的样式

如何制作一个空的网格模板行来填充剩余空间?

两部分问题 - 是什么导致了这个空白?

Bootstrap 5 英雄

CSS 网格自动高度不适用于特定网格区域