我试图检测是否在dragover或dragenter事件中拖动文件夹或文件.
在这种情况ondrop下,有一个名为的参数MouseEvent,它有一个名为的字段dataTransfer,其中列出了文件(.files)或项目(.items),具体取决于浏览器,我可以在Chrome和Firefox中阅读.但是,对于dragover和dragenter事件,这些字段(.files和.items)是空的.问题是我在拖动时需要这些信息,而不是丢弃.
注意:对于文件和文件夹event.dataTransfer.types[i] === "Files"都是true.
我发现以下答案部分适合我的问题:
WebKit,以及Chrome,对你什么时候打电话有很大的限制
getData.你不允许在里面dragstart或者里面做dragover.我认为这是规范的错误.
但答案是从2012年开始,我无法找到有关该主题的实际更新信息,因此我正在寻找有关此问题的最新信息.
我正在努力让拖拉机工作,但我似乎完全忽略了getData/setData的工作原理.
我正在使用此代码(http://jsfiddle.net/ASKte/218/)
var el = angular.element(document.getElementById('drag'));
el.attr("draggable", "true");
el.bind("dragstart", function(e) {
e.dataTransfer.setData('text', 'Where have you gone?!?!')
});
var target = angular.element(document.getElementById('drop'));
target.bind("dragover", function(e) {
if (e.preventDefault) {
e.preventDefault(); // Necessary. Allows us to drop.
}
return false;
});
target.bind("dragenter", function(e) {
console.debug(e.dataTransfer.types);
console.debug(e.dataTransfer.getData('text'));
});
Run Code Online (Sandbox Code Playgroud)
我在这里使用AngularJS,因为这是一段更大的代码片段.
出于某种原因,当拖动底部正方形的顶部正方形时,getData('text')的值始终为空,但我不知道为什么......
有任何想法吗?
提前致谢.
从我目前所见,我们可以使用该onPaste事件来验证/阻止粘贴到<input>字段中的内容。同样,如果我们想验证/防止按键按下,我们可以使用该onkeydown事件。我很好奇ondrag和ondrop。
具体来说,我们如何检索用户拖动到文本中的内容<input>?如果我们想获取整个更新的输入,我们可以使用onchangeoronblur事件。不过,我很好奇抓住刚刚拖动文本-类似于我们如何能够利用event.which抢刚按下的键。
文本数据是否存储在event某处用于ondrag或ondrop- 并且它是我们可以检索的格式?
javascript ×3
angularjs ×1
browser ×1
directory ×1
dom-events ×1
html ×1
html5 ×1
validation ×1