我可以使用以下代码在Chrome中成功读取剪贴板图像:
data = event.originalEvent.clipboardData;
for (var i = 0; i<data.items.length; i++){
var item = data.items[i];
if (item.type === 'image/png'){
itemFound = true;
break;
}
}
然而,这种方法在IE中不起作用。微软发布了一篇关于在IE中粘贴的博客(http://blogs.msdn.com/b/ie/archive/2013/10/24/enhanced-rich-editing-experiences-in-ie11.aspx)。该博客指出,我应该能够使用以下代码行
var fileList = clipboardData.files;
然而,fileList总是以空的形式返回。
谁知道在IE中访问剪贴板图像的方法?我可以很好地阅读文本,但不是图像。
发布于 2020-02-10 08:19:33
假设您正在使用ClipboardEvent(),您是否尝试过以下操作?
var data = event.clipboardData || event.originalEvent.clipboardData;
或者可以像更改代码以引用window
对象一样简单?
var fileList = window.clipboardData.files
发布于 2020-02-14 05:13:42
您只需监听paste事件,并使用间隔捕捉图像已创建但仍未呈现的时间点。然后,您只需获取图像源并清空编辑器即可。
下面的代码实现了这个算法。当你在IE或Firefox中运行它时,结果将与前一个示例在Chrome和Opera中的结果相同:
<script type="text/javascript">
$(document).ready(function() {
$('#editor').on('paste', function (e) {
$('#editor').empty();
var waitToPastInterval = setInterval(function () {
if ($('#editor').children().length > 0) {
clearInterval(waitToPastInterval);
$('#result').html($('#editor').find('img')[0].src);
$('#editor').empty();
}
}, 1);
});
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='editor' contenteditable=true></div>
<div id='resultcnt'>Copyed image src:<br />
<div id='result'></div>
</div>
<style type="text/css">
#editor{
width: 500px;
min-height: 40px;
border: solid 1px gray;
padding: 4px;
}
#resultcnt{
width: 100%;
margin-top: 16px;
}
#result{
display: block;
max-width: 90%;
margin: 16px 0 32px 0;
font-size: 12px;
color: blue;
overflow: visible;
word-break: break-all;
}
</style>
看看这个帖子:How do i get base64 encoded image from clipboard in internet explorer?
https://stackoverflow.com/questions/30187817
复制相似问题