2012-11-04 50 views
0

我有一个网站的一部分依赖于HTML5中的拖放操作。我希望网站在主页上提醒用户他们的浏览器是否支持它,并且我试图使用Modernizr但没有成功。使用Modernizr检测拖放

我已经使用modernizr网站创建一个自定义文件(包含在此实例中的文件包含所有HTML5选项),但它什么也不做。我尝试过创造几个但没有快乐。

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
<script src="js/modernizr.custom.75231.js"></script> 
<script> 

    if(Modernizr.draganddrop){ 
     alert("Your browser supports drag and drop!!"); 
    }else{ 
     alert("Sorry, browser does not support drag and drop!"); 
    } 

</script> 

</head> 

<body> 
Some text 
</body> 
</html> 

我错过了什么吗?

感谢

只是为了更新,我创建了Modernizr的文件又包括所有的CSS选择,现在它检测到每一个浏览器包括IE 7拖放兼容

js/modernizr.custom.18141.js 

回答

1

我改变

if(Modernizr.draganddrop) 

if (window.FileReader && Modernizr.draganddrop) 

然后它工作正常

+0

查看原图 - http://stackoverflow.com/a/19551180/28321 Modernizr 2.6。x在非核心检测下测试filereader – aix

0

它有点棘手。 iOS7报告说它支持FileReader和拖放图片上传。由于我正在寻找一种更加通用的文件上传方式,而我无法使用iOS,所以我需要另一个答案。

Modernizr问题57在here谈论这个问题。现在与Windows 8和触摸和鼠标,它的棘手。由于我成功地使用了可信的中间代码。它依赖于Modernizr和代理检测。

0

Modernizr的返回一个假阳性的拖放在Windows的Safari浏览器v5.1.7(最新! - 和现在希望是最终版本)。这并不奇怪,因为(我被告知)以前的版本(v5.0.x)具有功能拖动&拖放基础设施(Modernizr检测到)。 Modernizr不会轻易发现事件失火错误(这暗示了一个正确的检测方案可能需要合并一些URL数据库查询)。

注:Safari浏览器v5.1.7不火的ondrop事件(相反,它往往 失火虚假ondragleave事件,这几乎可以肯定是破坏了 任何代码赎回的努力来解决此漏洞如果转向。 jQuery来解决一个版本的一个浏览器,你可能也投降的JavaScript离不开它。

我所希望的(对所有希望)Modernizr的检测可能使一些聪明的补救措施,但与苹果拉支持从Windows Safari(错误,恕我直言),我他仍然想知道为什么现在的基础设施迫使开发者支持有缺陷的产品;正确的补救措施是对版本进行全面的召回,开发人员的责任是在用户使用具有已知缺陷的浏览器版本时提醒用户 - 即使这是每个浏览器(注意:每个浏览器的每个版本都应该证明有缺陷,需要更好的规格)。