在 Internet Explorer 上粘贴事件侦听器得到错误的参数
Paste event listener on Internet Explorer getting wrong arguments
我正在处理 contenteditable
的粘贴事件,以便在粘贴前清除所有 HTML 标记。在 Firefox
和 Chrome
中一切正常。但是当我在 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版本和其他浏览器。
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')
}
}
});
我正在处理 contenteditable
的粘贴事件,以便在粘贴前清除所有 HTML 标记。在 Firefox
和 Chrome
中一切正常。但是当我在 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版本和其他浏览器。
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')
}
}
});