-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
富文本编辑器复制拖拽图片 #114
Comments
Paste事件ClipboardEvent
QQ裁剪截图到编辑框
e.items[0]
复制系统图片到编辑框
e.items[0]
Drop事件DragEvent
拖放系统图片到编辑框
e.items[0]
|
DataTransfer是一种什么数据格式?
一些关键标准属性DataTransfer.dropEffect获得当前选中的"drag""drop"操作的类型,或者设置操作成新的类型。值类型包括none, copy, link, move。 DataTransfer.effectAllowed所有的允许的操作类型。包括none,copy,copyLink,copyMove,link,move,all或者uninitialized。 DataTransfer.files包括所有的在data transfer中的可用的本地文件。如果drag操作不涉及拖动文件,这个属性将为空。 DataTransfer.items(只读)包括了所有drag数据的DataTransferItemList对象。 DataTransfer.types(只读)在dragstart事件中设置的字符串格式。 一些关键标准方法DataTransfer.clearData()清除特定类型的数据,若不传参,则清除所有类型的数据。 DataTransfer.getData()查询特定类型的数据。 DataTransfer.setData()为特定类型设置数据。可以覆盖。 DataTransfer.setDragImage()设置一个拖动图像。 |
clipboardData和dataTransfer区别是什么?其实从字面意思就可以理解。
举个例子:
|
|
formData是一种什么数据格式?
由于是duck typing,所以出现一个新的类型的对象,无外乎是对属性的增删改查,并且在一些特定的方法。那么FormData的crud是什么呢? FormData.append()create,update某个属性值。与FormData.set()功能类似。 当我们引入qiniu,oss等第三方云存储平台的时候,可以直接将file传入,sdk会帮助我们去构造FormData并且发送XHR。 |
究极demodemo地址:https://jsfiddle.net/betterbetter/tgLsowp7/8/ <div id="app">
<div
class="editor"
@paste="imageImport"
@drop="imageImport"
contenteditable>
</div>
</div> new Vue({
el: "#app",
methods: {
imageImport(e) {
e.preventDefault();
const transfer = e.clipboardData || e.dataTransfer;
const file = transfer.files[0];
const xhrData = new FormData();
xhrData.append('image',file);
document.execCommand('insertImage',true, "http://ov6jc8fwp.bkt.clouddn.com/D43AA1E7-29E9-4C1B-B615-7D4172907531.png");
console.log(e);
// 上传接口,可由node提供,也可由java提供,go也行,python也行,看您心情
}
}
}) |
意外收获
浏览器中的clipboard是什么?Clipboard在用户授权的情况下,具有操作系统的剪贴板的read和write的权限。 Clipboard Interface与Clipboard API区别是什么?Clipboard APIClipboard API提供了一种异步读取和写入到操作系统clipboard的能力,从而响应clipboard中的cut,copy,paste命令。在Permission API后面访问剪贴板的内容;在用户不允许的情况下,读取或者修改clipboard中的内容是不被允许的。 Clipboard Interface(异步粘贴板API)提供了一个从操作系统的剪贴板读写文本和数据的interface。这是一个Secure context。在Async Clipboard API。
什么是ClipboardEvent Interface(粘贴板事件API)?代表了剪贴板修改的事件,包括cut,copy,paste事件。在Clipboard Event API。 Clipboard Interface 与 ClipboardEvent Interface区别?
什么是Permission API?自动拒绝或者允许API权限,询问用户是否拒绝或者允许API权限。 |
起初想只记录司空见惯的浏览器事件,例如复制,粘贴,剪切等等。但后续由于业务需求,更新为富文本编辑器复制拖拽图片的一次尝试。
Document.execCommand()
是什么?The text was updated successfully, but these errors were encountered: