链接
可以查看具体的情况。
本文将以一个
例子
详细讲解实现拖拽的全部细节。
第一步,需要明确拖拽的参与对象。
1 2 3 4 5 6 7
function dragenterHandler(event){ event.target.classList.add("dragenter"); } function dragleaveHandler(event){ event.target.classList.remove("dragenter"); }
仔细一看
,原来为了安全,dragstart时存入信件后,邮包上了一把大锁头,要一直到drop才能打开。为了
安全
,我还能说什么?难道这个问题就无解了吗?我不相信制定标准的那些大脑袋没有想到这个需求。在
这里
找到了一个答案。原来他们发现,虽然这个时候得到了邮包不能读信,但是可以透过邮包的透明盒子看到信封的内容。问题一下明朗了,在dragstart时多发一封信,用信封的信息表示匹配信息就行了。
比如我在dragstart时
1
dragEvent.dataTransfer.setData('typeA','');
在dragover时不读取’typeA‘对应的内容,而是检查有没有’typeA‘:
1 2 3 4
if (dragEvent.dataTransfer.types.includes('typeA')) { ... dragEvent.preventDefault(); }
这样,不包含’typeA‘内容的被拖拽物就被过滤掉了。