Javascript文档粘贴事件-在FireFox中获取粘贴的文本

Javascript文档粘贴事件-在FireFox中获取粘贴的文本,javascript,firefox,paste,Javascript,Firefox,Paste,在这里已经被问过很多次了,根据我的研究,Firefox有一个粘贴事件,但是你不能直接读取粘贴文本的内容,如下图所示: 在这里: 在IE和Chrome中,你可以检查clipboardData字段,而在FireFox中则不能 关于这一点有很多解决方案,但没有一个是好的 那么问题来了: 您可以在粘贴之前和之后读取文档/元素的内容,因此您可以拥有这两个字符串。问题是,是否有人编写了一个简单的diff函数来确定粘贴到文档中的内容 或者,有谁知道firefox中有更好的方法来确定粘贴了什么 我的最终目标

在这里已经被问过很多次了,根据我的研究,Firefox有一个粘贴事件,但是你不能直接读取粘贴文本的内容,如下图所示:

在这里:

在IE和Chrome中,你可以检查clipboardData字段,而在FireFox中则不能

关于这一点有很多解决方案,但没有一个是好的

那么问题来了:

您可以在粘贴之前和之后读取文档/元素的内容,因此您可以拥有这两个字符串。问题是,是否有人编写了一个简单的diff函数来确定粘贴到文档中的内容

或者,有谁知道firefox中有更好的方法来确定粘贴了什么

我的最终目标是能够找出粘贴的内容,并从粘贴的文本中剥离标签和其他碎片,然后手动重新粘贴已清理的版本


任何帮助都将不胜感激。

只是想提供更多关于这方面的信息——因为这很烦人

首先,firefox不允许在粘贴时获取剪贴板内容(尽管它通常支持获取剪贴板数据——例如拖放)

我从典型的猜测开始,对吗?Webkit允许在粘贴时执行以下操作:

event.clipboardData.getData('text/plain')
因此,有人可能会认为firefox也会如此。不是真的

然而,有一种方法可以完成同样的事情,这让我相信这是一个愚蠢而过时的限制。我的意思是,如果我可以得到粘贴的内容,为什么要麻烦的限制?如果用户粘贴到一个我可以访问的元素中,很好,如果我知道这个事件,我应该可以访问粘贴的内容——我的意思是,如果你不能访问被粘贴的内容,为什么要粘贴这个事件

这是其他人的解决方案——这是提交给我的一个项目的,并且在过去的几年中进行了一些迁移。它使用jQuery

onPaste:

var hijacker = $('<div contenteditable="true" style="visibility:hidden"/>');
hijacker.appendTo(document.body).focus();
setTimeout(function() {
  console.debug(hijacker.html());
  hijacker.remove();
}, 1);
var-hijacker=$('');
appendTo(document.body.focus();
setTimeout(函数(){
调试(jacker.html());
劫机者;
}, 1);

在您可以console.debug hicker元素的html时,您可以对它执行任何需要的操作。Firefox有什么优势?现在已经好几年了--只需为它提供剪贴簿数据,这样我就不必添加像这样的黑客代码。

现在已经修复,从Firefox 22开始,这将在粘贴事件中起作用:

event.clipboardData.getData('text/plain')

请参阅错误:

对于完全不支持粘贴事件的浏览器如何?另外,您是否关心实际粘贴的内容,或粘贴后的更改内容?(注意,如果已经选择了某些文本,它将被替换。)对于您的最终目标,从整个字段中删除标记可能更简单。对我来说,这只需要在FX中工作。是的,它可能是文本以及新粘贴数据的替代品。也许差异化不是一个很好的方法,希望有其他的方法。也许可以在粘贴之前和之后获得插入符号的位置,并使用索引提取粘贴的文本?