Modernizr在IE8上测试draganddrop

onl*_*mon 3 html5 internet-explorer drag-and-drop internet-explorer-8 modernizr

我正在测试拖放API支持

    if (!Modernizr.draganddrop) {
    alert('No!');
}
else { 
    alert('Yes');
     } 
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

Spu*_*ley 8

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

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

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

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

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

if (!!window.FileReader && Modernizr.draganddrop) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

但是,我也在阅读有关这种技术给Safari带来假阴性的报道,所以请耐心等待.

参考:

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