2012-06-11 15 views
5

Próbuję pobrać i upuścić plik w Firefoksie i podejmuję kroki dla dzieci, aby rozpocząć. W tej chwili próbuję tylko przeciągnąć niektóre pliki do strefy zrzutów i uzyskać listę plików, które zostały odrzucone. W tym momencie nie chcę jeszcze nic robić z plikami.Plik Przeciąganie i upuszczanie w Firefoksie (wersja 10)

Kiedy przeciągam plik (w tym przypadku obraz, ale to samo dzieje się bez względu na typ pliku) z wyszukiwarki do strefy zrzutowej, widzę zdarzenia dragenter i dragexit. Kiedy upuszczam plik do strefy drop, zdarzenie drop nie uruchamia się. Zamiast tego przeglądarka otwiera obraz na swoim komputerze (np. Adres pokazuje plik: //path/to/my/image.png).

Moje javascript wygląda następująco:

dropbox = document.getElementById("standard_file_dropzone"); 

    dropbox.addEventListener("dragenter", function(){console.log('standard enter');}, false); 
    dropbox.addEventListener("dragexit", function(){console.log('standard exit');}, false); 
    dropbox.addEventListener("dragover", $.noop, false); 
    dropbox.addEventListener("drop", function (event) { 
            console.log('standard dropped'); 
            event.stopPropagation(); 
            event.preventDefault(); 

            if((typeof event.dataTransfer.files !== 'undefined') && 
             (event.dataTransfer.files.length > 0)) { 
             console.dir(event.dataTransfer.files); 

            } 
            return false; 
            }, false); 

Moje HTML wygląda następująco:

<div id="standard_file_dropzone" style="height:150px; width:150px; border:solid;"> 
     Standard Drop Files Here 
    </div> 

Więc zastanawiam się, co robię źle tutaj? Wydaje się, że nie ma niczego (przynajmniej dla mnie oczywistego) nie w porządku z powyższym kodem. Wydarzenia dragenter/exit są uruchamiane, dlaczego nie jest to zdarzenie drop? Dlaczego przeglądarka próbuje otworzyć sam plik?

Uwaga: po otwarciu strony w przeglądarce Chrome działa ona zgodnie z oczekiwaniami, więc jest to problem specyficzny dla przeglądarki Firefox.

thnx, Christoph

Odpowiedz

5

Kwestia używał $ .noop jako przewodnika dragover. Zastąpienie go funkcją, która faktycznie zatrzymuje propagację i bulgotanie, zaczęło działać zgodnie z oczekiwaniami.

Czasami jestem takim idiotą. : p

+0

To rzeczywiście działa, ale nie jest dla mnie jasne, dlaczego to jest oczywiste? – Mark

+0

@ Christopat obawiam się z tym samym problemem, możesz pomóc w tym samym. –

Powiązane problemy