知识点
- paste事件:粘贴触发该事件,该事件的事件对象存在一个实验性属性clipboardData,该属性可以获得一个DataTransfer对象
DataTransfer
对象:本用作保存拖动并放下过程中的数据,在这里也可以获取到剪贴板的数据,通过DataTransfer.items
获得一个包含所有存放数据的DataTransferItemList对象DataTransferItemList
对象:为一组保存被拖动项(在这里是复制项)的DataTransferItem对象列表DataTransferItem
对象:描述了一个拖拽项(在这里为复制项),这里用到了他的getAsFile
方法,此方法返回一个关联的File对象,当拖拽项不是一个文件时返回null
File
对象:File
对象是特殊类型的Blob
对象(谨记)
实现
在目标元素上注册paste
事件,方法名为pasteImg
1 | ele.onpaste = pasteImg |
在pasteImg方法内实现获取粘贴项File对象:
1 | function pasteImg(e) { |
其他操作
File对象拿到了,接下来可以做一些其他操作了,例如
重命名生成新的File对象
1 | const newFile = new File(file, '屏幕截图.png', {type: 'image/png'}) |
通过createObjectURL获得一个本地临时链接用于显示图片,格式:blob:https://xxx.xx/xxx-xxx-xxx-xxx
1 | const src = URL.createObjectURL(file) |
通过 FileReader 获取base64信息
1 | const fileReader = new FileReader() |