Modernizr在IE8上测试draganddrop

时间:2012-09-22 15:07:06

标签: html5 internet-explorer internet-explorer-8 drag-and-drop modernizr

我正在使用

测试拖放API支持
    if (!Modernizr.draganddrop) {
    alert('No!');
}
else { 
    alert('Yes');
     } 

但不知何故,它在IE8中显示“是”,当然不支持html5 D& D API。

提前致谢

1 个答案:

答案 0 :(得分:8)

在阅读其他一些地方时,似乎这可能是一个相当普遍的问题。

问题是,在浏览器上下文中“拖放”有不同的含义。

事实上,有一组拖放事件处理程序 在IE8中支持(实际上一直回到IE5),这可能是Modernizr报告的真实情况。在这个测试中。它们与IE浏览器的旧版本中的事件相同,因为HTML5标准基本上形式化了IE正在做的事情。参考:Quirksmode(请原谅亵渎!他显然不喜欢拖放api。但重要的是他很清楚:旧版IE中存在拖放操作,事实上微软发明了它)

但是,这些拖放事件并不是全局。还有从浏览器窗口外部拖动文件并将其放入浏览器的概念。这完全是一个不同的拖放操作,并且是一个更新的功能。它目前列在Modernizr's "Undetectables" page中,因为无法准确检测到它。

最接近任何人必须检测它我知道将Modernizr拖放检查与FileReader API上的二次检查相结合,如下所示:

if (!!window.FileReader && Modernizr.draganddrop) {
    ....
}

然而,我也在阅读有关这项技术给Safari带来假阴性的报道,所以请耐心等待。

参考:

希望这有助于解释事情,即使它不一定使解决方案更清晰。