2010-05-18 2 views

risposta

35

Si può fare questo:

if('draggable' in document.createElement('span')) { 
    alert("Drag support detected"); 
} 

You can see a quick demo test using the above check here.

Inoltre, there's a nice feature detection (not browser detection, yay!) list that's fairly well maintained here nel caso si stia cercando anche altre funzionalità HTML5.

+0

Grazie mille. Saluti, gre. – gre

+0

@gre - Se questo risolve il tuo problema, assicurati di accettare una risposta facendo clic sul segno di spunta a sinistra, lo stesso vale per le risposte future :) Se stai ancora imbattendo in qualcosa per favore commenta così posso aiutare ulteriormente –

+0

Questo doesn ' Sembra che funzioni in IE10. –

12

Rilevamento "trascinabili' in document.createElement ('arco') sembra una buona idea, ma in pratica non funziona.

iOS sostiene che trascinabile è nell'elemento ma non consente il drag and drop (Riferimento: Safari Web Content Guide: Handling Events)..

IE9 sostiene che draggable nON è nell'elemento, ma non permette il drag and drop (Riferimento: la mia resistenza test HTML5 e calo di IE.)

Modernizr è una migliore scelta perché non confonde IE. Tuttavia, afferma che il drag-and-drop HTML5 è disponibile su iOS.

Ecco come rilevo HTML5 drag and drop:

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 
} 
+0

Posso parlare della parte IE dei tuoi commenti. Sì, IE9 e versioni inferiori supportano il trascinamento della selezione (in modo hacky) con SPAN tramite il metodo dragDrop(). Vedi: http://stackoverflow.com/questions/5500615/internet-explorer-9-drag-and-drop-dnd). Tuttavia, non supporta il trascinamento dell'estensione di HTML5. E la domanda riguardava il supporto a livello HTML5. – Phil

8

Questo è come è implementato in Modernizr

function() { 
    var div = document.createElement('div'); 
    return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); 
}