0

我正在使用 HTML5 制作拖放系统。将图像从屏幕左侧拖到右侧(这些被标识为window1window2。图像存储在一个数组中并附加到一个隐藏的输入元素,因此我可以通过 a 将它们发送到下一页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);
4

1 回答 1

0

HTML5 规范不考虑拖动多个项目。结果(您似乎已经注意到上面的这一点)各种 HTML5 事件不会表明已拖动多个项目。

您没有在问题中明确说明这一点,但我的猜测是您认为(或认为,这是一个较旧的问题)由于浏览器自动生成的“幽灵”图像,多个项目被拖动。这些图像当然可以给人一种正在拖动多个元素的印象。

这些“幽灵”图像以及浏览器生成它们的方式存在许多已知问题。特别是在拖动开始时会生成重影图像,这意味着您定义适当拖动的代码甚至都没有运行。即浏览器不知道您是否正在拖动一个大元素,一个小元素,或者您在拖动之前不小心选择了很多文本......它会生成它所看到的任何图像,这就是你得到的.

在某些浏览器(不是 IE)中,您可以将拖动图像替换为更合适的内容。如果您不关心 IE,这通常会奏效,但如果您确实关心 IE,那么您就会发现人们对 HTML5 API 感到恼火的原因。

于 2016-03-24T16:32:00.103 回答