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

发布于 2024-12-11 18:33:12 字数 90 浏览 0 评论 0原文

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

谢谢!

is there a way to strip specific tags from coming into tiny MCE through a copy+paste from an external source (e.g. Word)? I'd like to prevent font-family and image tags from being copy+pasted over, but have no problem with font-size etc.

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

猫性小仙女 2024-12-18 18:33:12

您无法真正阻止某人粘贴某些内容,因此我相信您最好的选择是通过调用表单提交上的函数或微小的 MCE 文本区域的 onchange 来过滤掉不需要的标签。然后您可以使用一些正则表达式替换来删除不需要的标签。

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

You can't really stop someone from pasting something, so I believe your best bet would be to filter out the unwanted tags by calling a function on form submit, or onchange of the tiny MCE textarea. Then you could use some regular expression replacement to get rid of the unwanted tags.

EDIT: Actually there is a simple way. check the TinyMCE documentation.

孤者何惧 2024-12-18 18:33:12

以下是类似 SO 问题的链接,其中详细描述了如何删除不需要的标签: TinyMCE Paste作为纯文本

Here is the link to a similar SO question with a detailed description of howto strip out unwanted tags: TinyMCE Paste As Plain Text

爱她像谁 2024-12-18 18:33:12

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

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

I don't know how useful this will be, but you might want to take a look at this jQuery plugin which allows you to filter tags and attributed from the text your are pasting.

FilteredPaste.js - A jQuery Plugin To Filter & Clean Pasted Input

不喜欢何必死缠烂打 2024-12-18 18:33:12

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

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

看看这个:

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 ()
})

Although "You can't really stop someone from pasting something" indeed, you can transform what your web app inserts into your TinyMCE textbox (or any other input).

  1. Listen to the browser's native paste event.
  2. Parse the clipboard's text/html string with DOMParser.
  3. Make changes in the generated DOM tree.
  4. Set the textbox content to the stripped content.
  5. Prevent the paste default action.

Check this out:

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 ()
})

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文