拖拉事件

最后更新于:2022-04-02 03:26:31

[TOC] ## 拖拉事件 ```
此区域可拖拉
``` ### 事件种类 被拖拉的节点事件 * `drag`:拖拽时,不断触发(相隔几百毫秒)。 * `dragstart`:开始拖拉,的`target`属性就是被拖拽的值。 * `dragend`:拖拉结束,,`target`属性是与`dragstart`相同,做结束拖拉的样式 放置目标节点的事件 * `dragenter`:在可放置的节点触发,触发,`target`为当前节点 * `dragover`:在可拖拉处,不放置,则持续触发。 * `dragleave`:离开可放置的目标节点时触发 * `drop`:放置时触发 ## 拖拉文件 ### DataTransfer.files ``` // html
// js var div = document.getElementById('output'); div.addEventListener("dragenter", function( event ) { div.textContent = ''; event.stopPropagation(); event.preventDefault(); }, false); div.addEventListener("dragover", function( event ) { event.stopPropagation(); event.preventDefault(); }, false); div.addEventListener('drop', function(e) { e.preventDefault(); e.stopPropagation(); var fileList = e.dataTransfer.files; if (fileList.length > 0) { var file = fileList[0]; var reader = new FileReader(); reader.onloadend = function(e) { if (e.target.readyState === FileReader.DONE) { var content = reader.result; div.innerHTML = 'File: ' + file.name + '

' + content; } } reader.readAsBinaryString(file); } }); ``` ### DataTransfer.types `DataTransfer.types`属性是一个只读的数组,里面是拖拉的数据格式(通常是 MIME 值)。比如,如果拖拉的是文字,对应的成员就是`text/plain` ### DataTransfer.getData() ``` function onDrop(event) { var data = event.dataTransfer.getData('text/plain'); event.target.textContent = data; event.preventDefault(); } ```
';