我正在测试拖放 API 支持
if (!Modernizr.draganddrop) {
alert('No!');
}
else {
alert('Yes');
}
但不知何故它在 IE8 中显示"is",这当然不支持 html5 D&D API。
提前致谢
最佳答案
阅读其他一些地方,似乎这可能是一个相当普遍的问题。
问题是,在浏览器上下文中“拖放”有不同的含义。
事实上,在 IE8 中 支持一组拖放事件处理程序(事实上一直回溯到 IE5),这可能是 Modernizr 所报告的真实情况在这个测试中。它们在旧版 IE 和新版浏览器中是相同的事件,因为 HTML5 标准基本上正式化了 IE 已经在做的事情。引用:Quirksmode (请原谅那里的脏话!他显然不喜欢拖放 api。但重要的是他很清楚:拖放确实存在于旧的 IE 版本中,事实上微软发明了它)
但是,这些拖放事件并不是全部。还有将文件从浏览器窗口外拖放到浏览器中的概念。这是一个完全不同的拖放操作,是一个更新得多的功能。它目前列在 Modernizr's "Undetectables" page 中, 因为无法准确检测。
据我所知,最接近检测它的人是将 Modernizr 拖放检查与对 FileReader API 的二次检查相结合,如下所示:
if (!!window.FileReader && Modernizr.draganddrop) {
....
}
但是,我也看到了有关此技术对 Safari 产生误报的报道,因此请对它持保留态度。
引用:
- SO: How to determine presence of HTML5 drag'n'drop file upload API
- SO: Determine if browser is drag-and-drop capable?
- How to detect browser support for file API and drag & drop
希望这有助于解释事情,即使它不一定会使解决方案更清晰。
关于html - Modernizr 在 IE8 上测试拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544944/