JavaScript HTML5:类似gmail的上传界面的拖放问题

时间:2012-01-06 11:06:05

标签: javascript jquery html5 file-upload drag-and-drop

我界面的截图:

enter image description here

树的每个元素都是<li><a>

每个文件夹都是文件上传的dropzone,就像gmail上传拖放一样。

当我在包含来自我的机器的文件的文件夹上“拖动输入”时,我添加了一种样式:

enter image description here

此代码:

var dropZoneElement = document.getElementById($this.attr('id'));

dropZoneElement.addEventListener('dragenter', onDragEnter, false);
dropZoneElement.addEventListener('dragleave', onDragLeave, false);
dropZoneElement.addEventListener('drop', onDrop, false);

function onDragEnter(event) {
  event.preventDefault();
  event.stopPropagation();
  $this.addClass('gmail-like');
}

function onDragLeave(event) {...}
function onDrop(event) {...}

但问题是,当我在文件夹上拖动链接(<a>)时(即使是没有目的地的假链接test,请参见屏幕截图),页面添加要上传的样式(否)上传,它只是视觉上的:

enter image description here

  • 为什么?
  • 有任何想法禁用此功能吗?

我希望这种风格仅在我从机器上拖放文件时适用。

1 个答案:

答案 0 :(得分:2)

基本上,您需要检查drag data item kind并验证确实是文件而不是其他内容。此外,您可以禁用

查看描述拖放过程的HTML5 draftThis tutorial也可以提供一些帮助。

最后,following SO问题应该给你一些具体的提示。