Le glisser-déposer est une caractéristique commune, c'est-à-dire glisser vers une autre position après l'objet de capture.
Dans HTML5, Drag and Drop est une pièce standard, et tout élément peut être glisser et abandonné.
Cliquez d'abord un petit exemple: exécutez JavaScript lorsque l'utilisateur commence à faire glisser <p> des éléments
<p draggable = true onDragstart = myFunction (événement)> glisser-moi! </p>
Astuce: les liens et les images sont glissés par défaut et n'ont pas besoin de propriétés draggables.
Définition et utilisationLes événements suivants seront déclenchés pendant le processus de glisser-déposer:
Internet Explorer 9+, Firefox, Opera, Chrome et Safari Soutièrent.
Remarque: Safari 5.1.2 ne prend pas en charge la traînée;
ExemplePostez d'abord le code, puis expliquez un par un:
<! Border: 1px solide #aaaaaa;} </pyle> </ head> <body> <p> glisser img_w3slogo.gif image vers la boîte rectangulaire: </p> <div id = div1 ondrop = drop (event) ondragover = allowdrop (Même t)> </ div> <br> <img id = drag1 src = images / img_w3slogo. Ev.PreventDefalt ();} Fonction Drag (ev) {ev.datatransfer.setData (text, ev.target.id);} function drop (ev) {ev.preventDefault (); ;
L'effet de la page avant de traîner est:
Analysons la signification du code suivant ci-dessous.
Définir l'élément peut être traîné et abandonnéTout d'abord, afin de faire glisser l'élément, définissez la propriété draggable sur true:
<Img draggable = true>Quoi glisser-claire et setData ()
Il est ensuite spécifié ce qui se passe lorsque l'élément est traîné.
Dans l'exemple ci-dessus, la propriété OnDragstart appelle une fonction, glisser (événement), qui spécifie les données glissées.
Méthode datatransfer.setData () Définissez le type de données et la valeur des données de traînée de données:
Fonction Drag (ev) {ev.datatransfer.setData (texte, ev.target.id);}
Dans cet exemple, le type de données est du texte et la valeur est id (drag1) qui peut faire glisser l'élément.
Où le mettreL'événement Ondragover stipule où placer les données traînées.
Par défaut, les données / éléments ne peuvent pas être placés dans d'autres éléments. Si vous devez définir le placement autorisé, nous devons empêcher le traitement par défaut des éléments.
Il s'agit d'appeler la méthode Event.PreventDefault () de l'événement Ondragover: :):
event.preventDefault ()Mettre en place
Lorsque les données de glisser sont placées, l'événement DROP se produit.
Dans l'exemple ci-dessus, l'attribut ONDROP appelle une fonction, Drop (événement):
Fonction Drop (EV) {ev.PreventDefault ();
Explication du code:
Les résultats de la mise en œuvre sont tels que montrés sur la figure:
Objet DataTransferPendant l'opération de glisser, nous pouvons utiliser l'objet DataTransfer pour transmettre les données pour effectuer d'autres opérations sur les données lorsque l'opération de traînée est terminée.
Attribut objet:Fonction dragstart_handler (ev) {console.log (dragstart); = p1 draggable = true onDragstart = dragstart_handler (événement);> Cet élément est drawgable.Définissez les données du glisser
Fonction dragstart_handler (ev) {// ajouter les données de glisser ev.datatransfer.setdata (text / plain, ev.target.id); ;Définissez l'image de glisser
Fonction DragStart_Handler (EV) {// Créez une image, puis utilisez-la pour l'image glisser. ();Définir l'effet de traînée
Fonction dragstart_handler (ev) {// Définissez l'effet de glisser pour copier ev.datatransfer.dropeffect = copy;}Définir une zone de chute
Fonction dragover_handler (ev) {ev.preventDefault (); Élément vers les données Dominal de Target = ev.datatransfer.getData (texte); div> </ody>Problème de traînée du navigateur de Firefox
Mais allez ici et trouvez un problème dans le navigateur Firefox:
La traînée de HTML5 utilise la prévention pour empêcher la page Pop -Up POP, mais elle ne fonctionne pas sous Firefox?
Solution:
document.body.ondrop = fonction (événement) {event.PreventDefault ();
Ou pour l'exemple ci-dessus, il est également possible d'ajouter à la méthode d'onDrop:
Fonction Drop (EV) {ev.PreventDefault (); ev.Stoppropagation ();
Ce qui précède est tout le contenu de cet article.