首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >阻止浏览器加载拖放文件

阻止浏览器加载拖放文件
EN

Stack Overflow用户
提问于 2011-07-20 11:09:19
回答 9查看 83.4K关注 0票数 219

我正在向我的页面添加一个html5拖放上传器。

当一个文件被放入上传区时,一切都会正常工作。

但是,如果我不小心将文件放在上载区域之外,浏览器会加载本地文件,就好像它是一个新页面一样。

我怎样才能防止这种行为?

谢谢!

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-07-20 11:27:21

您可以向窗口添加一个事件侦听器,该侦听器在所有拖放事件上调用preventDefault()

示例:

代码语言:javascript
复制
window.addEventListener("dragover",function(e){
  e = e || event;
  e.preventDefault();
},false);
window.addEventListener("drop",function(e){
  e = e || event;
  e.preventDefault();
},false);
票数 348
EN

Stack Overflow用户

发布于 2016-02-09 00:08:19

在反复尝试之后,我发现这是最稳定的解决方案:

代码语言:javascript
复制
var dropzoneId = "dropzone";

window.addEventListener("dragenter", function(e) {
  if (e.target.id != dropzoneId) {
    e.preventDefault();
    e.dataTransfer.effectAllowed = "none";
    e.dataTransfer.dropEffect = "none";
  }
}, false);

window.addEventListener("dragover", function(e) {
  if (e.target.id != dropzoneId) {
    e.preventDefault();
    e.dataTransfer.effectAllowed = "none";
    e.dataTransfer.dropEffect = "none";
  }
});

window.addEventListener("drop", function(e) {
  if (e.target.id != dropzoneId) {
    e.preventDefault();
    e.dataTransfer.effectAllowed = "none";
    e.dataTransfer.dropEffect = "none";
  }
});
代码语言:javascript
复制
<div id="dropzone">...</div>

在窗口上无条件地设置effectAllowdropEffect会导致我的拖放区域不再接受任何d-n-d,无论属性是否设置为新的。

票数 44
EN

Stack Overflow用户

发布于 2015-10-24 21:11:20

要仅允许在某些元素上进行拖放,您可以执行以下操作:

代码语言:javascript
复制
window.addEventListener("dragover",function(e){
  e = e || event;
  console.log(e);
  if (e.target.tagName != "INPUT") { // check which element is our target
    e.preventDefault();
  }
},false);
window.addEventListener("drop",function(e){
  e = e || event;
  console.log(e);
  if (e.target.tagName != "INPUT") {  // check which element is our target
    e.preventDefault();
  }  
},false);
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6756583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档