【问题标题】:Javascript on paste: check if pasted content comes from word粘贴上的 Javascript:检查粘贴的内容是否来自 word
【发布时间】:2021-09-21 14:04:20
【问题描述】:

是否可以检查粘贴内容的来源? 因为我需要检查粘贴的内容是否是从word文件中复制的...

那么,javascript中有没有类似的东西:

  example.on('paste', function (event) {
     if (event.source == "Word") {
        // do something
     }
  }

提前致谢!

【问题讨论】:

  • 看起来这个问题属于XY problem。如果可能的话,这将是一个相当大的安全和隐私问题。您究竟需要如何处理这些信息?除了文本之外还复制格式?粘贴为图像?见DataTransferClipboard API
  • 你可以试试if (clipboardContent.indexOf('“') !=-1)...(弯引号)如果这让你感到困扰
  • @SebastianSimon 我需要删除所有办公代码。这些是以 Mso 开头的类属性...
  • 不可能,也许你可以从剪贴板中读取文本并测试富文本格式。
  • @Vektor 如何检查富文本格式?

标签: javascript event-handling copy-paste paste word


【解决方案1】:

我需要删除所有办公代码。这些是以 Mso 开头的类属性

为什么不检查您需要修复的内容?

const text = (event.clipboardData || window.clipboardData).getData('text')
if (text && text.toUpperCase().match(/"MSO/)) ...

【讨论】:

  • 是的,这是更好的选择!感谢这个想法。
【解决方案2】:

不,这在 web 中是不可能的,因为如果您从任何来源复制任何文本,它将是相同的,而且您只是在复制该文本,而不是来源信息, 所以这是不可能的

【讨论】:

    【解决方案3】:

    我不这么认为,您需要剪贴板 API,而且您只能执行复制和粘贴命令。这将只允许您读取或写入内容。

    https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard

    如果您查看剪贴板 API,您只会得到一个读取字符串或一个 DataTransfer 实例。其中不包含有关剪贴板内容来源的任何信息。

    https://developer.mozilla.org/en-US/docs/Web/API/Clipboard

    【讨论】:

    • 虽然这在理论上可以回答问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    • 你是对的,我在编辑中建立我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多