php 7.3 不参与前端拖放逻辑,纯由 javascript 实现;需为元素设 draggable="true"、在 dragstart 中调用 setdata()、目标区监听 dragover 并 preventdefault()、drop 时 getdata() 插入内容;移动端不支持原生拖放。

PHP 7.3 本身不参与前端拖放逻辑,它只是后端运行环境;文字拖放是纯前端行为,用原生 JavaScript 就能完成,和 PHP 版本无关。你只需确保 HTML 页面能被 PHP 7.3 正常输出(比如通过 .php 文件),然后在其中写标准的 JS 拖放代码即可。
让文字元素可拖:加 draggable="true" 并设数据
原生拖放要求目标元素显式声明可拖动,并在拖拽开始时提供数据:
- 给要拖的文字容器(如
<span></span>或<div>)加上 <code>draggable="true"属性 - 必须监听
dragstart事件,在里面调用e.dataTransfer.setData('text/plain', 文本内容或ID) - 漏掉
setData(),Chrome/Firefox 会静默禁用拖拽——看着能按住,实际拖不动 - 需监听
dragover事件,并在回调中写e.preventDefault() - 只在
drop里preventDefault()是无效的——太晚了,浏览器早已跳过投放流程 - 可同时监听
dragenter和dragleave来加/去高亮样式,提升体验 - 在
drop回调中调用e.dataTransfer.getData('text/plain')拿到文字 - 推荐直接追加到目标区:
targetElement.textContent += data或targetElement.innerHTML += '<div>' + data + '</div> - 如果拖的是带样式的 HTML 片段,可用
getData('text/html'),但要注意 XSS 风险,建议过滤或用textContent优先 - 所有现代桌面浏览器(Chrome、Firefox、Edge、Safari)都完整支持原生拖放
- iOS Safari 和 Android Chrome 等移动端浏览器不支持原生 drag/drop API,拖文字会完全失效
- 若需移动支持,得用
touchstart/touchmove手动模拟,或引入interact.js这类库 - PHP 版本对这个过程零影响——哪怕你用 PHP 8.3 或 PHP 5.6,只要输出的 JS 正确,桌面端效果一致
让目标区接收文字:dragover 必须 preventDefault()
任何想接收拖入文字的区域(比如空 <div id="drop-area"></div>),默认是“拒收”的:
在 drop 里读取并插入文字
松手瞬间触发 drop,这时才能安全获取数据并更新页面:
兼容性提醒:移动端不支持,PHP 不影响前端
PHP 7.3 只管把 HTML+JS 正确返回给浏览器,真正执行拖放的是用户设备上的浏览器:











