我正在尝试用JavaScript检测HTML5拖放支持。现代浏览器好像不能处理这个测试案例。
我正在尝试用JavaScript检测HTML5拖放支持。现代浏览器好像不能处理这个测试案例。
你可以这样做:
if('draggable' in document.createElement('span')) {
alert("Drag support detected");
}
另外,这里有一个不错的特性检测列表(而非浏览器检测),并且还相当维护良好,如果你正在寻找其他HTML5功能也可以在这里找到。
检测在document.createElement('span')中是否有"draggable"属性看起来是个好主意,但实际上并不起作用。
iOS声称元素中有draggable属性,但不允许拖放。(参考:Safari Web内容指南:处理事件)
IE9声称元素中没有draggable属性,但确实允许拖放。(参考:我在IE中测试的HTML5拖放.)
Modernizr是一个更好的选择,因为它不会困扰IE。然而,它表示HTML5拖放在iOS上可用。
以下是我检测HTML5拖放的方法:
var iOS = !!navigator.userAgent.match('iPhone OS') || !!navigator.userAgent.match('iPad');
if (Modernizr.draganddrop && !iOS) {
HTML5 drag and drop solution
} else if (Modernizr.draganddrop && iOS) {
iOS drag and drop solution
} else {
non-HTML5 drag and drop solution
}
这就是 Modernizr 的实现方式
function() {
var div = document.createElement('div');
return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
}
#1585
,删除draganddrop检测。 - BurninLeo