3

我正在测试支持的拖放 API

    if (!Modernizr.draganddrop) {
    alert('No!');
}
else { 
    alert('Yes');
     } 

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

提前致谢

4

1 回答 1

8

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

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

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

然而,这些拖放事件并不是全部。还有从浏览器窗口外部拖动文件并将其放入浏览器的概念。这完全是一个不同的拖放操作,并且是一个更新的功能。它目前列在Modernizr 的“不可检测”页面中,因为它无法准确检测。

据我所知,最接近检测它的人是将 Modernizr 拖放检查与 FileReader API 上的辅助检查相结合,如下所示:

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

但是,我也在阅读有关此技术对 Safari 造成假阴性的报告,因此请谨慎对待。

参考:

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

于 2012-10-01T20:22:39.020 回答