首页 > web前端 > js教程 > 正文

如何用javascript实现拖放功能_需要哪些事件?

夢幻星辰
发布: 2025-12-19 20:17:07
原创
262人浏览过
JavaScript原生拖放功能需设置draggable="true",监听dragstart(设数据)、dragenter/dragover(必须preventDefault)、drop(取数据)等6个事件,注意事件触发顺序与角色分工。

如何用javascript实现拖放功能_需要哪些事件?

用 JavaScript 实现拖放功能,核心是监听并合理处理一组特定的拖放事件,配合元素的 draggable 属性。不需要第三方库,原生 API 就够用,关键是理清事件触发顺序和各阶段该做什么。

必须设置 draggable 属性

只有显式设置了 draggable="true" 的元素才能被拖动(默认为 false<img alt="如何用javascript实现拖放功能_需要哪些事件?" ><a></a> 除外):

拖我试试

关键拖放事件(共 6 个)

拖放过程分“拖动源”和“放置目标”两个角色,不同事件在不同元素上监听:

  • dragstart:在被拖元素上触发,**唯一可设置拖拽数据的地方**(用 event.dataTransfer.setData()
  • drag:拖动中持续触发(一般不用)
  • dragend:拖动结束(无论是否放下),适合清理状态
  • dragenter:被拖元素进入目标区域时触发(第一次进入)
  • dragover:**必须阻止默认行为**(event.preventDefault()),否则 drop 不会触发
  • drop:在目标元素上松开鼠标时触发,用 event.dataTransfer.getData() 取数据

一个最小可用示例

把 A 区域的文本拖到 B 区域:

稿定抠图
稿定抠图

AI自动消除图片背景

稿定抠图 80
查看详情 稿定抠图

立即学习Java免费学习笔记(深入)”;

Hello

Drop here

<script><br> const source = document.getElementById('source');<br> const target = document.getElementById('target');<br> <br> source.addEventListener('dragstart', e => {<br> e.dataTransfer.setData('text/pl<a style="color:#f60; text-decoration:underline;" title= "ai"href="https://www.php.cn/zt/17539.html" target="_blank">ain', e.target.textContent);<br> });<br> <br> target.addEventListener('dragenter', e => e.preventDefault());<br> target.addEventListener('dragover', e => e.preventDefault()); // 必须<br> <br> target.addEventListener('drop', e => {<br> e.preventDefault();<br> const text = e.dataTransfer.getData('text/plain');<br> e.target.textContent = text;<br> });<br> </script>

实用提示

  • 拖动时鼠标图标自动变手型,但可自定义:body.style.cursor = 'grabbing'(在 dragstart 里设,dragend 恢复)
  • dataTransfer 支持多种类型('text/plain''text/html''files'),传文件需配合 FileReader
  • 想高亮目标区域?在 dragenter 加 class,dragleave 移除(注意:dragleave 在子元素上也会触发,需判断 e.relatedTarget
  • 移动端不支持原生 drag/drop,需用 touchstart/move/end 模拟

基本上就这些。不复杂但容易忽略 preventDefault()setData() 的时机。

以上就是如何用javascript实现拖放功能_需要哪些事件?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号