检查拖放内容是否为图像
Check if drag / drop content is image
我想检查拖放到区域上的内容是否是图像。我的代码可以在Chrome和Firefox中使用,但不能在Safari中使用。我想这是因为Safari没有图像的dataTransfer类型text/html/em>。Safari有变通办法吗?
document.addEventListener( 'drop', function( e ) {
var contentHtml;
if( e.dataTransfer ){
contentHtml = (e.originalEvent || e).dataTransfer.getData('text/html');
if($(contentHtml).is('img')){
// do some things, then let the standard drop happen
return true;
} else {
// do other things, prevent drop
return false;
}
}
});
您可以使用DataTransfer.files属性来获取丢弃文件的mime类型,并根据已知的允许图像类型列表进行检查。
在这个片段中,我必须禁用文档上的默认dragover
事件处理,以防止浏览器在检查DataTransfer
对象之前仅显示图像。
document.addEventListener('dragover', function(e) {
e.preventDefault();
})
document.addEventListener('drop', function(e) {
// set your image types
var imageTypes = ['image/png', 'image/gif', 'image/bmp', 'image/jpeg'];
if (e.dataTransfer && e.dataTransfer.files) {
// e.dataTransfer.files is a FileList
// e.dataTransfer.files[0].type is a Blob.type
var fileType = e.dataTransfer.files[0].type;
if (imageTypes.includes(fileType)) {
window.alert('dropped file is an image');
} else {
window.alert('dropped file is not an image');
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
以下是MDN:相关文档的一些链接
- FileList文档
- Blob类型文档
相关文章:
- 如何检查图像是否已加载
- Javascript检查图像是否在数组中
- 交换 img src 或显示/隐藏多个图像是否更快
- 检测 jpg 图像是否正确加载
- 检查图像是否正确加载了Quit
- 检查上传的图像是否经过压缩
- 如何检查图像是否已注释
- 检查运行到CORS的图像是否存在
- 如何检查数组中的所有图像是否已加载
- 如何使用微调上传器确定图像是否可在当前浏览器中预览
- Javascript 检查画布上的透明图像是否已被单击
- 图像是否保证至少具有 1 个宽度和 1 个高度
- 如何检查图像是否有属性
- 检查图像是否在游戏循环之前加载
- 测试以查看具有 json 值的图像是否损坏/不存在,并替换为“无照片”图像
- 检查显示的(随机)图像是否与上一个(随机)图像(jQuery和JavaScript)相同
- JavaScript-如何查看图像是否已被单击
- 检查图像是否从缓存或服务器加载
- 检测图像是否损坏
- 如何检查图像是否已被查看