防止HTML5拖放功能来自同一元素的多个drop

时间:2012-06-15 10:53:26

标签: javascript html5

我正在使用HTML5制作拖放系统。将图像从屏幕左侧拖动到右侧(这些图像标识为window1window2。图像存储在一个数组中并附加到隐藏的输入元素,以便我可以将它们发送到通过submit的下一页。问题是我只希望脚本检测window2中丢弃的内容,而且我不想要多个条目。

function drop(ev)
{
//append the hidden child
number.toString();
var hidden = document.createElement("input");
hidden.type = "hidden";
hidden.name = "option"+number;
hidden.value = my_images;
var f = document.getElementById("select");
f.appendChild(hidden);
number++;

var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
ev.preventDefault();    
}

我正在考虑一个简单的if statement,但我应该寻找什么?如何查看我当前放弃图像的位置?

编辑:使用onmouseover事件以某种方式检查我当前悬停的元素是不是一个想法?如果是这样我怎么做到这一点?目前我写了这段小代码

var current = document.mouseover;
current = document.getElementById(this);

1 个答案:

答案 0 :(得分:0)

HTML5规范不考虑拖动多个项目。因此(您似乎已经注意到上述情况)各种HTML5事件不会表示已拖动多个项目。

你没有在你的问题中明确说出这一点,但我的猜测是你认为(或者认为这是一个较老的问题)由于“鬼”而导致多个项目被拖拽。浏览器自动生成的图像。这些图像肯定会给人以拖拽多个元素的印象。

这些"鬼"存在许多已知的问题。图像以及浏览器生成它们的方式。特别是在拖动开始时生成重影图像,这意味着您定义合适拖动的代码都没有运行。即浏览器不知道你是在拖动一个巨大的巨大元素,一个小元素,还是你在拖拽之前不小心选择了很多文本......它会生成任何它看到的图像,并且#39你得到了什么。

在某些浏览器(不是IE)中,您可以使用更合适的内容替换拖动图像。如果您不关心IE,这通常可以解决,但如果您关心IE,那么您刚刚发现人们为什么对HTML5 API感到恼火。