3
惨遭失败。在这个简单的例子,你应该能够拖动红色框为虚线区域。它适用于IE和Chrome,但不适用于Firefox。真奇怪的是dragstart
事件触发(导致元素被隐藏),然而没有其他事情发生 - 甚至没有发生dragend
(将其隐藏并随后不可用)。
var source = null;
document.getElementById('drag').addEventListener("dragstart",function(e) {
source = this;
e.dataTransfer.clearData();
e.dataTransfer.effectAllowed = "move";
setTimeout(function() {source.style.visibility = "hidden";},1);
});
document.getElementById('drag').addEventListener("dragend",function(e) {
this.style.visibility = "";
source = null;
});
document.getElementById('drop').addEventListener("dragenter",function(e) {
if(source) {
if(e.preventDefault) e.preventDefault();
return false;
}
});
document.getElementById('drop').addEventListener("dragover",function(e) {
if(source) {
if(e.preventDefault) e.preventDefault();
return false;
}
});
document.getElementById('drop').addEventListener("drop",function(e) {
if(source) {
this.appendChild(source);
source = null;
}
});
我知道这个代码是不是最有效(的getElementById
过度时,我应该只使用一次,复制粘贴回调dragenter
/dragover
),但它跨越获取点。
我做错了什么?
啊完美的工作,所以这是它。我知道我一定错过了一些东西,但我没有意识到Firefox至少需要设置某种形式的数据。现在一切都说得通了!谢谢! –
非常欢迎您,很高兴为您服务! –
链接不再有效......而那个小提琴不适合我。哼! – Ziggy