拖拽时需用event.target.closest('[data-project-id]')获取ID,dragover和drop中必须无条件preventDefault(),绑定后须存localStorage并页面加载时恢复。拖拽时 dragstart 事件拿不到目标元素的项目 ID?常见现象是:拖动一个便签(<div class="note">)到项目区域,但 event.target 指向的是子元素(比如标题或图标),导致 dataset.projectId 取不到。根本原因是拖拽触发点不一定是便签根节点------用户可能点在了 <span> 或 <button> 上。必须主动向上找最近的带 data-project-id 的祖先。在 dragstart 回调里用 event.target.closest('[data-project-id]') 替代直接读 event.target.dataset.projectId确保每个便签容器(不是内部文字)有 draggable="true",否则 dragstart 根本不会触发别依赖 event.dataTransfer.setData('text/plain', ...) 存 ID------字符串序列化后类型丢失,后续解析易错;改用 setData('application/json', JSON.stringify({id: 123}))drop 事件里阻止默认行为失败,拖拽直接跳转页面?这是最常被忽略的兼容性坑:Chrome/Firefox 要求 dragover 和 drop 都必须调用 event.preventDefault(),否则浏览器按默认逻辑处理(比如把文本拖进地址栏会发起搜索)。关键不是"写了没",而是"什么时候写"------dragover 必须在拖拽进入目标区域前就响应,且不能被条件语句包裹(比如 if (isProjectDropZone) preventDefault() 不行,因为浏览器在判断是否允许 drop 前就检查了)。 AI智研社 AI智研社是一个专注于人工智能领域的综合性平台
相关推荐
2301_809204701 小时前
SQL如何实现实时数据的滑动窗口分析_SQL性能调优木子墨5161 小时前
工程算法实战 | 数据库ORDER BY的底层:内存排序 → 外部归并 → 索引优化yexuhgu1 小时前
如何在 JavaScript 循环中动态构建 HTML 字符串wang3zc1 小时前
使用BERTopic对名言数据集进行批量主题建模的完整实践指南SZLSDH1 小时前
数字孪生IOC的“双引擎”架构:当业务编排遇上渲染管线,如何实现场景适配?码界筑梦坊1 小时前
361-基于Python的空气质量气候数据分析预测系统m0_609160491 小时前
Go语言如何做协程调度_Go语言协程调度原理教程【实用】2301_812539671 小时前
golang如何实现全量数据迁移_golang全量数据迁移实现详解顾随1 小时前
(2)达梦数据库--SQl基础实践