[英]Drag and drop Javascript HTML5
我正在尝试使用javascript和HTML5进行拖放功能,没有jQuery。 我只是看不出有什么问题。 一直在看这个很长一段时间,看不到我失败的地方。 有人能找到吗?
function doFirst(){
mypic = document.getElementById('dragapple');
mypic.addEventListener("dragstart", startDrag, false);
leftbox = document.getElementById('leftbox');
leftbox.addEventListener("dragenter", function(e){e.preventDefault}, false);
leftbox.addEventListener("dragover", function(e){e.preventDefault}, false);
leftbox.addEventListener("drop", dropped, false);
}
function startDrag(e){
var code = '<img id="dragapple" src="stealeripsum.png">';
e.dataTransfer.setData('Text', code);
}
function dropped(e){
e.preventDefault();
leftbox.innerHTML = e.dataTransfer.getData('Text');
}
window.addEventListener("load", doFirst, false);
谢谢
.gegData('Text')
或.getData('Text')
?
function dropped(e){
e.preventDefault();
leftbox.innerHTML = e.dataTransfer.getData('Text');
}
最终总是抓住我们的小事情。 在“dragover”事件监听器的定义中,您需要为e.PreventDefault提供一个参数列表()
:
leftbox.addEventListener("dragenter", function(e){e.preventDefault();}, false);
leftbox.addEventListener("dragover", function(e){e.preventDefault();}, false);
这样,浏览器将停止默认事件响应(即禁止丢弃)并让您的放置操作完成。 这是我愚蠢的jsFiddle演示,说明成功。 蓝色方块是#dragapple
。
html5拖放api有很多奇怪的边缘情况。 我刚刚编写了一个非常通用的低级api,可以轻松实现拖放。 以下是您在示例中的操作方法:
function doFirst(){
var mypic = document.getElementById('dragapple')
dripDrop.drag(mypic, {
image: true,
start: function(setData) {
setData('Text', '<img id="dragapple" src="stealeripsum.png">')
}
})
var leftbox = document.getElementById('leftbox')
dripDrop.drag(leftbox, {
drop: function(data) {
leftbox.innerHTML = data.Text
}
})
}
window.addEventListener("load", doFirst, false);
在这里查看: https : //github.com/fresheneesz/drip-drop
您需要对接收拖动的元素进行ondragover和ondrop事件,并且拖动的元素需要draggable =“true”。
例如:
<div ondragover="allowDrop(event);" ondrop="drop(event);">
function allowDrop(x) { x.preventDefault(); }
function drop(x) { x.preventDefault(); var data=x.dataTransfer.getData("text"); ... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.