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

Vic*_*tor 12 javascript clipboard html5 internet-explorer internet-explorer-11

我正在处理粘贴事件,contenteditable以便在粘贴之前清除所有HTML标记.所有工程罚款FirefoxChrome.但是当我测试我的代码时IE11,event object传递的不是一个ClipboardEvent而是一个DragEvent.

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

editable.addEventListener('paste', pasteHandler, false);
Run Code Online (Sandbox Code Playgroud)

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

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

wil*_*idi 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);
});
Run Code Online (Sandbox Code Playgroud)

在这里我也处理IE版本和其他浏览器.

的jsfiddle


cod*_*key 8

e.clipboardData 在IE上对我而言始终为null,因此我提出了以下建议:

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