繁体   English   中英

从 TinyMCE 复制+粘贴中剥离样式?

[英]Stripping styles from TinyMCE copy+paste?

有没有办法通过从外部来源(例如 Word)复制+粘贴来将特定标签从进入微型 MCE 中剥离出来? 我想防止字体系列和图像标签被复制+粘贴,但字体大小等没有问题。

谢谢!

你不能真正阻止某人粘贴某些东西,所以我相信你最好的办法是通过在表单提交或微小 MCE textarea 的 onchange 上调用函数来过滤掉不需要的标签。 然后你可以使用一些正则表达式替换来摆脱不需要的标签。

编辑:实际上有一个简单的方法。 检查TinyMCE 文档

我不知道这会有多大用处,但您可能想看看这个 jQuery 插件,它允许您从您粘贴的文本中过滤标签和属性。

FilteredPaste.js - 用于过滤和清理粘贴输入的 jQuery 插件

这是一个类似的问题的链接,其中详细描述了如何去除不需要的标签: TinyMCE Paste As Plain Text

尽管“您确实无法阻止某人粘贴某些内容”,但您可以将Web 应用程序插入到 TinyMCE 文本框(或任何其他输入)中的内容转换。

  1. 收听浏览器的原生粘贴事件。
  2. 使用DOMParser解析剪贴板的text/html字符串。
  3. 在生成的 DOM 树中进行更改。
  4. 将文本框内容设置为剥离的内容。
  5. 防止paste默认操作。

看一下这个:

editor.on ('paste', event => {

  // Get clipboard's original HTML string
  const clipboard = event.clipboardData
  const originalHtml = clipboard.getData ('text/html')

  // Parse HTML string into a DOMElement
  const parser = new DOMParser
  const doc = parser.parseFromString (originalHtml, 'text/html')

  // Modify DOM tree
  const elems = doc.body.querySelectorAll ('*')
  elems.forEach (elem => {
    elem.style.fontFamily = ''
    // Do other modifications here...
  })

  // Set textbox content to modified HTML
  editor.setContent (doc.body.innerHTML)

  // Prevent pasting original content
  event.preventDefault ()
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM