确定浏览器是否具有拖放能力?

Jam*_*rgy 6 jquery drag-and-drop file-upload

我正在实现jQuery文件上传,并试图找出检测客户端是否可以支持拖放的最佳方法,这样我就可以渲染类似"拖放文件到这里上传"的内容,只有他们能够实际执行此操作.

在插件代码中,我可以看到一个isXHRUploadCapable几乎与拖放支持相关的函数,但我认为这比任何事情更巧合.(它使用iFrames发布上传而不是XMLHTTPRequest上传IE和Opera).如果支持拖放,看不到任何让我知道的东西,所以我怀疑它只是一个事件发生或不发生.

文档说"Windows版本的Safari不支持拖放.MSIE和Opera不支持拖放,多文件选择或上传进度指示." 那么,也许只是Windows版本的Safari支持XMLHTTPRequest上传,但不能拖放?

无论如何 - 我试图找出最好的方法来检测浏览器是否支持使用此插件拖放上传,我不知道如何做到这一点.拖放功能是否可以轻松测试?我该怎么办?这个功能是依赖于浏览器,还是Jquery Upload是否特别支持该浏览器?

And*_*ndy 6

Modernizr是事实上的浏览器支持检测插件,支持拖放检测.

在Modernizr 1.5中,我们测试以下拖动事件:

  • 拖动
  • 的dragstart
  • 的dragenter
  • 的dragover
  • dragleave
  • dragend
  • 下降

资源

  • 确定检查拖放事件是不够的,这似乎是这样做的:`if(window.FileReader && Modernizr.draganddrop)` (8认同)
  • 这看起来很棒.然而,它是`Modernizer.draganddrop`在IE8上报告`true`并且绝对不支持...至少通过jquery文件上传.这些事件的存在与支持拖放文件检测的能力之间是否存在一些差异? (2认同)