Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Drag&Drop su safari

  1. #1
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361

    Drag&Drop su safari

    Salve, ho realizzato 1 applicazione che fa largo uso del Drag&Drop solo che mi da qualche problema su safari (soprattutto a livello di drop).
    Ecco un pezzetto di codice di esempio:
    codice:
    prepareDrag:function () {
    		if (Modernizr.draganddrop) {
    			var dragged = $SHS.j('a');
    			$SHS.j.each(dragged, function (index, value) {
    				value.addEventListener('dragstart', function (e) {
    					try {
    						var img = $SHS.j(this).find('img');
    						if ((img[0].nodeName).toUpperCase() == 'IMG') {
    							var commandData = img[0].src + '|' + value.href;
    							//Do Stuff
    						} else throw 'Non valido';
    					} catch (err) {
    						//Errore
    					}
    				}, false);
    				value.addEventListener('dragend', function (e) {
    					//Do Stuff
    				}, false);
    			});
    		}
    	},
    	prepareDrop:function () {
    		if (Modernizr.draganddrop) {
    			var dropper = document.getElementById('dropArea');
    			dropper.addEventListener('dragenter', function (e) {
    				$SHS.j("#dropArea").addClass('drop-over');
    			}, false);
    
    			dropper.addEventListener('drop', function (e) {
    				e.stopPropagation();
    				e.preventDefault();
    				$SHS.j("#dropArea").removeClass('drop-over');
    				//Do stuff
    			}, false);
    
    			dropper.addEventListener('dragover', function (e) {
    				e.stopPropagation();
    				if (e.preventDefault) {
    
    					e.preventDefault();
    				}
    				$SHS.j("#dropArea").addClass('drop-over');
    			}, false);
    
    			dropper.addEventListener('dragleave', function (e) {
    				$SHS.j("#dropArea").removeClass('drop-over');
    			}, false);
    
    		} else {
    			
    		}
    	},
    Il mio obiettivo è permettere il trascinamento di tutti i tag <a> che contengono un tag <img> (tutte le immagini con un link per capirci). L'app funziona a dovere su FF/Chrome/IE ma da questo problema con safari:
    Quando inizio a trascinare un oggetto e lo porto sull'area 'sensibile', questa risponde a dovere (diventando tratteggiata), quindi direi che safari riconosce che sto facendo il D&D.. ma quando rilascio l'oggetto non succede nulla.

    Avete dei consigli?
    Ti rivedrò in un'altra vita…quando saremo tutti e due gatti...

  2. #2
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Ho messo dei console.log() nei vari addEventListener del prepareDrop e ho visto che vengono riconosciuti tutti correttamente tranne il 'Drop' stesso. è l'unico evento che non viene riconosciuto.
    Magari può aiutare qualcuno ad aiutarmi
    Ti rivedrò in un'altra vita…quando saremo tutti e due gatti...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    residenza
    Pianeta Terra
    Messaggi
    1,614
    Prova a mettere e.preventDefault (); su dragenter.


    Per una bella risata vai QUI

  4. #4
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Originariamente inviato da Nobody33
    Prova a mettere e.preventDefault (); su dragenter.


    me lo hanno appena consigliato anche su stackoverflow, ma non va! il drop non viene ancora riconosciuto!
    Ti rivedrò in un'altra vita…quando saremo tutti e due gatti...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    residenza
    Pianeta Terra
    Messaggi
    1,614
    Magari il problema sta nel browser, non nello script
    Se va su chrome, è strano che non vada su safari.
    Per una bella risata vai QUI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.