Drag & Drop Javascript

Per la serie: "Perché non posso usare (roba a caso) nella mia fichissima web application?" La roba a caso di oggi è il drag & drop.

Senza stare a reinventare l'acqua calda e senza usare Script.aculo.us o altre "cosacce" di dubbia comprensione e di pesantezza inaudita, mi permetto di consigliare la libreria di YoungPup.net. Il download è corredato di 6 esempi (presenti anche sul sito), che vi permetteranno di utilizzare subito DOM-Drag.
Perchè proprio DOM-Drag? E' presto detto:

  • E' leggera, circa 100 righe di codice
  • Funziona con qualsiasi browser recente, su Windows, Linux e Mac (cosa non da poco)
  • E' semplice da usare, e si produce subito qualcosa di carino
  • Ha 5 anni, e se una cosa funziona dopo 5 anni è senz'altro un ottimo prodotto. Sì, anche nel web che ci si creda o no...
  • Rispetta gli standard
  • La documentazione è scarna. Vi costringe a lavorarci sopra e a comprenderla pienamente prima di poterci lavorare sfruttando tutte le sue potenzialità. L'esercizio mentale serve sempre
  • E' chic. Chi è contro Script.aculo.us avrà un argomento in più nelle conversazioni tra amici, colleghi e sui forum

Vediamo ora una piccola panoramica, come al solito con esempi liberamente utilizzabili, delle potenzialità di questa libreria.

DRAG & DROP

Il semplice drag & drop di un'oggetto si realizza in pochissimi passi. Basta includere il file JavaScript della libreria, assegnare un id all'elemento da dover "muovere" (deve avere per forza l'attributo CSS position impostato ad "absolute" o "relative") e inizializzare il tutto con la chiamata:

Drag.init(document.getElementById("id oggetto"));

La libreria, in un centinaio di righe di codice si occupa di gestire tutti gli eventi associati all'oggetto che si sta spostando. Possiamo trascinare qualunque oggetto sia dotato di id come ad esempio immagini, campi di moduli, oggetti di liste, elementi div, celle di tabelle, ecc...

Anche in questo caso un esempio vale più di 1000 parole.

E' possibile definire eventi all'inizio del Drag, durante il Drag e alla fine con una sintassi molto semplice, basta dare un'occhiata al secondo esempio.

document.getElementById("id oggetto").onDragStart = function(x,y) { corpo funzione }
document.getElementById("id oggetto").onDragEnd = function(x,y) { corpo funzione }

FINESTRE

Ultimamente va di moda realizzare piccole finestrelle trascinabili all'interno della finestra del browser, basti pensare alla homepage personalizzata di Google, o ad altre pagine simili.

Con Dom-drag creiamo una finestra trascinabile tramite la barra del titolo in poche righe:

Drag.init(document.getElementById("id handler"),document.getElementById("id finestra"));

In questo caso la funzione Drag.Init viene chiamata utilizzando due parametri: il primo si riferisce all'oggetto che funzionerà da maniglia, il secondo è l'id dell'oggetto che verrà spostato. Ovviamente per far sì che tutto funzioni il primo ogetto deve essere incapsulato nel secondo, date un'occhiata al terzo esempio...

CONCLUSIONI

La libreria, per quanto semplice, è davvero utilissima e permette di creare oggetti trascinabili davvero con poco. Scaricatela, capitela ed usatela, non ve ne pentirete!!!

, , ,
1 Star2 Stars3 Stars4 Stars5 Stars (5 voti, media: 4.4)
Loading ... Loading ...
Condividi

Articoli che potrebbero interessarti

A letto presto stasera
Fare il resize di una textarea
20 Links JavaScript
DHTML suite for applications
Pensi di conoscere JavaScript?

12 Commenti per “Drag & Drop Javascript”

  1. MyAvatars 0.2 Emanuele ha detto:

    Il sito coretto è http://boring.youngpup.net/2001/domdrag/project

  2. MyAvatars 0.2 stefano ha detto:

    ci sono problemi con i form all’interno dei div draggabili

  3. MyAvatars 0.2 Napolux ha detto:

    @Stefano
    Sii più preciso:

    • Quale browser?
    • Quale problema?
    • Hai un esempio da farmi vedere?

    Ti chiedo questo perché sinceramente ho usato il drag&drop anche con moduli e non ho mai avuto problemi…

  4. MyAvatars 0.2 stefano ha detto:

    Mi pare qualcuno l’abbia segnalato anche sul sito ufficiale.
    Ti descrivo la situazione che ho provato: form all’interno del div, con campi text e select.
    Testato con Safari e Firefox; sul primo non si apre la select, su ff il campo di testo è come se fosse disabilitato.
    Non sono andato a fondo nella questione. Magari è una sciocchezza.
    Se risolvo ti faccio sapere.

  5. MyAvatars 0.2 Napolux ha detto:

    Posso dirti che il campo input l’ho utilizzato e funziona . Può essere che abbia utilizzato qualche cavolo di hack, ma funziona. Devo controllare.

    Per la select sinceramente non ho mai provato…

  6. MyAvatars 0.2 Keep In Tech » Blog Archive » Portlet riposizionabili alla Google: dom-drag.js ha detto:

    [...] Per due articoli interessanti sul tema eccovi i link1 e link2 [...]

  7. MyAvatars 0.2 Whisher ha detto:

    Ciao.
    Complimenti per l’oggettino ;)
    Amore a prima vista
    function initLibrary(){
    var target= document.getElementsByTagName(’div’);
    for(var i=0;i

  8. MyAvatars 0.2 evelina ha detto:

    ciao forse puoi darmi una mano….
    ho da poco creato un blog..
    su blogger..
    ma non riesco a trascinare gli elementi pagina….
    cosa devo fare?
    javascript dev’essere attivato o non c’entra nulla?mhà?
    a presto

  9. MyAvatars 0.2 Napolux ha detto:

    Eh sì, ci vuole JS abilitato ;)

  10. MyAvatars 0.2 Evelina ha detto:

    si ma è attivato!!!
    te ne intendi di linguaggio html?

  11. MyAvatars 0.2 Luca ha detto:

    E’ possibile trascinare un div con all’interno un iframe?
    e se sì, come?
    io ci ho provato ma non trascina….

  12. MyAvatars 0.2 Alessandro ha detto:

    Ciao,
    ho scaricato la libreria che hai consigliato ed è veramente fatta bene :wink:
    Solo che ora ho un altro problema, dato che non sono molto esperto in materia di DRAG AND DROP, mi servirebbe sapere come fare per riconoscere se l’oggetto che ho spostato, è stato spostato in un riquadro giusto. Del tipo, ho un’immagine e due riquadri, l’immagine può essere spostato solo in uno dei due riquadri, come si fa a riconoscere se il riquadro è quello giusto???

Lascia un commento



Chiudi
Invia e-mail