在 Internet Explorer 上粘贴事件侦听器得到错误的参数

Paste event listener on Internet Explorer getting wrong arguments

我正在处理 contenteditable 的粘贴事件,以便在粘贴前清除所有 HTML 标记。在 FirefoxChrome 中一切正常。但是当我在 IE11 中测试我的代码时,通过的 event object 不是 ClipboardEvent 而是 DragEvent.

我的代码有问题吗? 如果我将侦听器添加为下面的代码,我是否应该获取剪贴板事件。为什么我变得拖沓?

editable.addEventListener('paste', pasteHandler, false);

http://jsfiddle.net/vepo/4t2ofv8n/

为了测试上面的示例,我从 Chrome 复制了一段文本并粘贴到 IE 中。但是我从 IE 复制任何文本都会得到同样的错误。

编辑

$(document).ready(function(){
    var editable = document.getElementById('editable-div');
    var pasteHandler = function(e){
        if(e.clipboardData && e.clipboardData.getData) {
            var pastedText = "";
            if (window.clipboardData && window.clipboardData.getData) { // IE
                pastedText = window.clipboardData.getData('Text');
            } else if (e.clipboardData && e.clipboardData.getData) {
                pastedText = e.clipboardData.getData('text/plain');
            }

            alert(pastedText);
        }
        else{
            alert('Not paste object!');
        }
    };
    editable.addEventListener('paste', pasteHandler, false);
});

这里我处理IE版本和其他浏览器。

JSFiddle

e.clipboardData 在 IE 上对我来说总是空的,所以我想出了这个:

var pastedText = '';
if (typeof e.clipboardData === 'undefined')
    pastedText = window.clipboardData.getData('Text')
else
    pastedText = e.clipboardData.getData('text/plain')

e.originalEvent.clipboardData.getData('text/plain') 适用于 safari、chrome、firefox 和 safari,chrome 适用于 Ipad。

window.clipboardData.getData('text') 适用于 Internet Explorer 和 Edge。

注意:e.originalEvent.clipboardData.getData('text') 适用于桌面浏览器,但不适用于移动浏览器。

所以最后我用了这个

var clipText;
  if (e.originalEvent.clipboardData !== undefined){
    clipText = e.originalEvent.clipboardData.getData('text/plain')
  } else {
    clipText = window.clipboardData.getData('text')
  }
$("element").on('paste', function (e)
{
if (window.clipboardData) 
{
pastedText = window.clipboardData.getData('Text')
}
else if (e.clipboardData || e.originalEvent.clipboardData != undefined)
{
pastedText = e.originalEvent.clipboardData.getData('text/plain')
}
}
});