7

我们可以检测浏览器是否支持将文件拖放到<input type="file" />.

例如,这在 Chrome 中是可能的,但在 IE8 中是不可能的。

Modernizr.draganddrop是一种可能性,但这是正确的选择吗?我没有添加任何自定义拖放事件处理程序。

更新

为了验证乔的回答,这里有一个 jQuery 示例,它应该停止文件删除。在 Chrome 和 Firefox 中验证。

$yourFileInput.on('drop', function() {
    return false; // if Joe's explanation was right, file will not be dropped
});
4

1 回答 1

2

我认为检测对给定 JavaScript 事件的支持的答案是什么?可以帮助你。调整代码以测试 Input 而不是 Div,并测试“Drop”事件对我来说似乎工作正常。

在这里转载,因此您不必单击(并稍作调整,因为您似乎只需要检测这一功能):

function isEventSupported(eventName) {
  var el = document.createElement('input');
  eventName = 'on' + eventName;
  var isSupported = (eventName in el);
  if (!isSupported) {
    el.setAttribute(eventName, 'return;');
    isSupported = typeof el[eventName] == 'function';
  }
  el = null;
  return isSupported;
}
if(isEventSupported('drop')){
  //Browser supports dropping a file onto Input
} else {
  //Fall back, men!
}
于 2012-10-27T21:22:19.520 回答