首页 文章

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

提问于
浏览
5

我正在实现jQuery File Upload并试图找出检测客户端是否可以支持拖放的最佳方法,这样我只有在实际可以实现的情况下才能呈现类似'Drag & drop files here to upload'的内容 .

在插件代码中,我可以看到一个函数 isXHRUploadCapable 几乎与拖放支持相关,但我认为这比任何事情更巧合 . (它使用iFrames发布上传而不是IE和Opera的 XMLHTTPRequest 上传) . 无论是事件发生还是不发生事件 .

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

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

4 回答

  • 1

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

    在Modernizr 1.5中,我们测试以下拖动事件:drag dragstart dragenter dragover dragleave dragend drop

    Source

  • 5

    我在同一个问题,尝试检查window.FileReader && Modernizr.draganddrop如你所说 . 这是我的测试输出:

    IE window.FileReader==undefined && Modernizr.draganddrop==true
    OPERA window.FileReader==window.FileReader && Modernizr.draganddrop==false
    CHROME window.FileReader==window.FileReader && Modernizr.draganddrop==true
    FIREFOX window.FileReader==window.FileReader && Modernizr.draganddrop==true
    SAFARI window.FileReader==undefined && Modernizr.draganddrop==true
    

    因此,您的条件取出了D&D不支持的浏览器IE和OPERA . 但它还会降低支持拖放的SAFARI .

    在这种情况下,我们可以添加jQuery.browser检查以删除IE和OPERA .

  • 2

    Modernizr的当前版本2.6.2包括对FileReader的测试 .

    Modernizr.filereader && Modernizr.draganddrop
    

    filereader 测试位于 Non-core detects 部分下 . draganddrop 位于 HTML5 部分 . 访问Modernizr download page .

  • 0

    它有点棘手 . iOS7报告它支持 FileReaderdraganddrop 图片上传 . 由于我正在寻找一个我不能用iOS做的更通用的文件上传,我需要另一个答案 .

    Modernizr第57期here讨论了这个问题 . 现在Windows 8允许触摸和鼠标,这是棘手的 . 我成功使用了chriskeeble中间的代码 . 它依赖于Modernizr和代理检测 .

相关问题