我正在实现jQuery File Upload并试图找出检测客户端是否可以支持拖放的最佳方法,这样我只有在实际可以实现的情况下才能呈现类似'Drag & drop files here to upload'的内容 .
在插件代码中,我可以看到一个函数 isXHRUploadCapable
几乎与拖放支持相关,但我认为这比任何事情更巧合 . (它使用iFrames发布上传而不是IE和Opera的 XMLHTTPRequest
上传) . 无论是事件发生还是不发生事件 .
文档说“Windows版本的Safari不支持拖放.MSIE和Opera不支持拖放,多文件选择或上传进度指示 . ”那么,也许只是Windows版本的Safari支持XMLHTTPRequest上传,但不能拖放?
无论如何 - 我试图找出最好的方法来检测浏览器是否支持使用此插件拖放上传,我不知道如何做到这一点 . 拖放功能是否可以轻松测试?我该怎么办?这个功能是依赖于浏览器,还是Jquery Upload是否特别支持该浏览器?
4 回答
Modernizr是事实上的浏览器支持检测插件,支持拖放检测 .
Source
我在同一个问题,尝试检查window.FileReader && Modernizr.draganddrop如你所说 . 这是我的测试输出:
因此,您的条件取出了D&D不支持的浏览器IE和OPERA . 但它还会降低支持拖放的SAFARI .
在这种情况下,我们可以添加jQuery.browser检查以删除IE和OPERA .
Modernizr的当前版本2.6.2包括对FileReader的测试 .
filereader
测试位于 Non-core detects 部分下 .draganddrop
位于 HTML5 部分 . 访问Modernizr download page .它有点棘手 . iOS7报告它支持
FileReader
和draganddrop
图片上传 . 由于我正在寻找一个我不能用iOS做的更通用的文件上传,我需要另一个答案 .Modernizr第57期here讨论了这个问题 . 现在Windows 8允许触摸和鼠标,这是棘手的 . 我成功使用了chriskeeble中间的代码 . 它依赖于Modernizr和代理检测 .