Обнаружение поддержки перетаскивания HTML5 в JavaScript - PullRequest
21 голосов
/ 18 мая 2010

Я пытаюсь обнаружить поддержку перетаскивания HTML5 в JavaScript. Модернизр, похоже, не справился с этим контрольным примером.

Ответы [ 4 ]

37 голосов
/ 18 мая 2010
13 голосов
/ 03 июня 2011

Обнаружение «перетаскиваемого» в document.createElement ('span') кажется хорошей идеей, но на практике это не работает.

iOS утверждает, что Draggable находится в элементе, но не позволяет перетаскивать. (Ссылка: Руководство по веб-контенту Safari: обработка событий )

IE9 утверждает, что draggable НЕ находится в элементе, но допускает перетаскивание. (Ссылка: мое тестирование HTML5 перетащить в IE.)

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
}
10 голосов
/ 20 марта 2014

Вот как это реализовано в Modernizr

function() {
    var div = document.createElement('div');
    return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
}
0 голосов
/ 22 февраля 2012

Проверьте, поддерживаются ли «dragstart» и «drop», используя метод «isEventSupported» в Modernizr. См. Как определить поддержку браузера File API drag n drop .

...