javascript - 如何判断粘贴的数据是否是从我的页面复制的?

标签 javascript html events contenteditable paste

我正在尝试编写一个所见即所得的编辑器。我不希望人们能够粘贴外国 html,所以我想我可以将其转换为文本。但我仍然希望粘贴来自同一元素的 html(或者如果可能的话跨网站)。

那么有没有办法从粘贴事件中检测内容的来源?

最佳答案

检测复制事件 ( https://developer.mozilla.org/en-US/docs/Web/API/Element/copy_event )。

使用setData API包含自定义数据类型,例如文本/任何内容。这可以包括几乎所有内容,例如用户从何处复制、何时复制等。您甚至可以在其中上传自己的自定义数据表示形式。

粘贴时,抓取相应的事件并查找您的自定义数据类型。

编辑:我的错,没有仔细阅读有关必须阻止默认的信息。

document.addEventListener('copy', (event) => {

    event.clipboardData.setData('text/test', 'sum text here');
    const selection = document.getSelection();

    // Essentially brute force copying selection.
    const range = selection.getRangeAt(0);
    const div = document.createElement('div');
    div.appendChild(range.cloneContents());
    const copy = div.innerHTML;

    event.clipboardData.setData('text/html', copy);
    event.preventDefault();
});

document.addEventListener('paste', (event) => {
    const clipboard = (event.clipboardData || window.clipboardData);
    let pasteTest = clipboard.getData('text/test');
    let paste = clipboard.getData('text/html');
    console.log (paste, '@@@@@@@@@@@', pasteTest);
});


关于javascript - 如何判断粘贴的数据是否是从我的页面复制的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56764037/

相关文章:

java - 使用 HtmlUnit 时出错

javascript - 使用外部对象包装 D3 树中节点的文本

javascript - Cck 编辑器未显示在弹出的 javascript 中

c# - 你如何控制 C# 中的事件触发?

javascript - ng-重复日期范围过滤器

javascript - php非登录情况下session超时如何避免?

php - 单击星标时无法正常工作

javascript - <option> 的图像在 firefox 中有效,但在其他浏览器中无效

jquery - Kendo UI窗口关闭事件: prevent window close

jquery - 我可以将 jQuery 的事件函数与普通的旧对象一起使用吗?