Internet Explorer上的粘贴事件侦听器获取错误的参数

时间:2015-05-08 14:02:15

标签: javascript html5 internet-explorer clipboard internet-explorer-11

我正在处理粘贴事件,contenteditable在粘贴之前清除所有HTML标记。所有工作都在FirefoxChrome中正常工作。但是当我在IE11中测试我的代码时,传递的event object不是ClipboardEvent而是DragEvent

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

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

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

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

4 个答案:

答案 0 :(得分:12)

修改

$(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

答案 1 :(得分:4)

在IE上,

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

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

答案 2 :(得分:2)

e.originalEvent.clipboardData.getData('text/plain')适用于在iPad上的Safari,Chrome,Firefox和chrome浏览器。

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

答案 3 :(得分:0)

$("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')
}
}
});