防止HTML5拖放功能多次放置同一元素
preventing HTML5 drag and drop function from multiple drops of the same element
我正在用HTML5制作一个拖放系统。将图像从屏幕左侧拖动到右侧(这些图像被标识为window1
和window2
. 图像存储在数组中并附加到隐藏的输入元素中,因此我可以通过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);
HTML5 规范不考虑拖动多个项目。因此(您似乎已经在上面注意到了这一点),各种HTML5事件不会指示已拖动多个项目。
您在问题中没有明确说明这一点,但我的猜测是,您认为(或认为,这是一个较老的问题)由于浏览器自动生成的"幽灵"图像而拖动了多个项目。这些图像肯定会给人一种正在拖动多个元素的印象。
这些"幽灵"图像以及浏览器生成它们的方式存在许多已知问题。具体来说,重影图像是在拖动开始时生成的,这意味着定义适当拖动的代码甚至还没有运行。即浏览器不知道您是在拖动一个大的巨型元素,还是一个小元素,或者您在拖动之前不小心选择了很多文本......它生成它看到的任何东西的图像,这就是你得到的。
在某些浏览器(不是IE)中,您可以将拖动图像替换为更合适的图像。如果你不关心IE,这通常可以解决,但如果你关心IE,那么你就发现了为什么人们对HTML5 API感到恼火。
相关文章:
- 从所有元素中删除HTML5验证
- iPad没有加载所有HTML5元素
- 在IE8上使用jQuery克隆HTML5元素和事件
- HTML5在提交并显示所需标签后显示隐藏的表单元素
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- <的自定义进度条;音频>并且<进度>HTML5元素
- 在keydown(JS,Jquery)上更改HTML5 Canvas元素
- 条形图元素的HTML5 JavaScript锚点
- HTML5-画布元素&自定义光标
- 无法为HTML5中具有画布和图像的可拖动元素设置“拖动图像”
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- HTML5上下文菜单-当菜单项被点击时,访问最初被点击的元素
- 将HTML5画布(视频)元素分割成若干块
- .play();不适用于HTML5媒体元素
- HTML5<视频>元素在Firefox、Opera和Safari中不起作用
- HTML5画布中的可拖动和可调整大小元素
- 如何使用HTML5的全屏API检查元素是否在全屏中
- 将类添加到画布元素HTML5和CreateJS
- 在画布元素 html5 中创建多个可拖动矩形
- 使用Javascript播放音频元素(html5)