Mam powiązane zdarzenia do różnych elementów, a kiedy przeciągam je we wszystkich przeglądarkach, oprócz Firefoksa, działa zgodnie z oczekiwaniami. W firefoxie to jednak nie działa. Jedynym zdarzeniem, które wystrzeliwuje jest dragstart
i żadne inne zdarzenie nie zostanie wywołane. Co się dzieje?Dlaczego funkcja przeciągania i upuszczania HTML5 nie działa w Firefoksie?
Odpowiedz
nie używam jQuery, więc usunął część originalEvent i zmienił format tekstu (lub IE miał problem), i to działa:
event.dataTransfer.setData('text', 'anything');
W innych wydarzeń upewnij się, aby zadzwonić:
event.preventDefault();
Lub przejdzie do anything.com w przypadku niektórych zdarzeń.
z 'event.dataTransfer.setData ('text/html', 'anything')' to nie będzie przeskoczyć do anything.com – pykiss
dla każdego, kto walczy z przeciąganiem i upuszczaniem na FF, to prawdopodobnie będzie również istotne dla ciebie, niezwiązane z tym konkretnym problemem: https: // stackoverflow.com/questions/11656061/event-clientx-show-as-0-in-firefox-for-dragend-event –
Musisz również upewnić się, że wywołasz metodę preventDefault() w module obsługi zdarzeń upuszczania, aby zapobiec próbie nawigować. Nie jestem pewien, co myślała Mozilla, kiedy dokonali tej okropnej implementacji. –
Firefox wymaga, aby użytkownik uruchomił funkcję dataTransfer.setData
w wydarzeniu.
Dla was jQuery
użytkowników, co oznacza, że następujący kod powinien rozwiązać problem:
function dragstartHandler(event){
event.originalEvent.dataTransfer.setData('text/plain', 'anything');
}
przyszłych zdarzeń na tej samej ulicy będzie teraz prawidłowo ogień, jak oczekiwano. Oczywiście można zastąpić argumenty setData
bardziej przydatnymi danymi.
Użyj "text" zamiast "text/plain", jeśli chcesz, aby działał w IE. Zobacz http://stackoverflow.com/questions/12803235/drag-and-drop-not-working-in-ie-javascript-html5 – David
To działa, ale na dzień dzisiejszy dokumentacja Drag MDN nadal mówi, że DragEvent ma właściwość dataTransfer. Brak wzmianki o konieczności odwoływania się do originalEvent. –
@LexLindsey, originalEvent jest dla jQuery, jak wskazano w odpowiedzi. – swiss196
Możesz użyć tego jako punktu odniesienia dla tego rozwiązania pytania dotyczącego przekierowań, które występują w przeglądarce Firefox.
Musisz zapobiec domyślnej akcji w metodzie upuszczania, aby rozwiązać ten problem.
function drop(e) {
if(e.preventDefault) { e.preventDefault(); }
if(e.stopPropagation) { e.stopPropagation(); }
//your code here
return false;
}
Mam to rozwiązanie od this link.
FF ma długie problemy z jedzeniem niektórych zdarzeń myszy, które pochodzą z elementów, które mają przepełnienie ustawione na automatyczne lub przewijanie.
W moim przypadku miałem dobrze wykorzystaną bibliotekę do przeciągania i upuszczania, która działała idealnie w próbkach i w mojej aplikacji na każdej przeglądarce, ale w Firefoksie. Po wykopaniu przez biletów związanych z tym, znalazłem rozwiązanie, które w pełni kredytową do przyczyniającym się do tego biletu https://bugzilla.mozilla.org/show_bug.cgi?id=339293
którym jest ustawiony -moz-user-select: brak
na przewijane elementem bycia przeciągnięty z. Rozwiązał mój szczególny problem.
- 1. Nieoczekiwane zachowanie przeciągania i upuszczania obrazu HTML5
- 2. Sterowanie wyglądem efektu przeciągania i upuszczania HTML5
- 3. Wykrywanie folderów HTML5 metodą przeciągania i upuszczania w Firefoksie. Czy to możliwe?
- 4. Funkcja przeciągania nie działa
- 5. Jak symulować zdarzenia przeciągania i upuszczania HTML5 w javascript?
- 6. Przesyłanie plików przy użyciu przeciągania i upuszczania HTML5 w Asp.net
- 7. Samouczek do przeciągania i upuszczania HTML5 - lista do sortowania
- 8. Jak ograniczyć ruch podczas używania metody przeciągania i upuszczania HTML5?
- 9. wyłączanie przeciągania i upuszczania tekstu
- 10. Wdrażanie strefy przeciągania i upuszczania w Swift
- 11. Zdarzenie przeciągania i upuszczania pliku w jquery
- 12. HTML5 Przeciąganie i upuszczanie getData() działa tylko w przypadku upuszczania w przeglądarce Chrome?
- 13. Dodawanie plików cookie do przeciągania i upuszczania
- 14. Dlaczego .innerText nie działa w Firefoksie?
- 15. Wyjątek połknięcia podczas przeciągania i upuszczania
- 16. Ograniczenie przeciągania i upuszczania pliku pyside qtreewidget
- 17. Przenoszenie obrazów podczas przeciągania i upuszczania
- 18. Uzyskaj pozycję myszy podczas przeciągania i upuszczania
- 19. ContentEditable DIV - wyłączanie przeciągania i upuszczania
- 20. Czy można używać funkcji przeciągania i upuszczania HTML5 w dynamicznie tworzonych elementach?
- 21. Funkcja dropEffect nie działa podczas przeciągania plików do przeglądarki Firefox
- 22. Czy istnieje zdefiniowana kolejność między zdarzeniami przeciągania i upuszczania?
- 23. Czy mogę używać przeciągania i upuszczania html5 na urządzeniach mobilnych z phonegap?
- 24. Tworzenie listy do sortowania, przeciągania i upuszczania w języku Javascript
- 25. Interfejs API przeciągania i upuszczania HTML5 na urządzeniach z ekranem dotykowym
- 26. Nagrywanie w HTML5 nie działa w Firefox
- 27. Dlaczego funkcja pyplot.show() nie działa?
- 28. Funkcja powiększania i przeciągania w SurfaceView
- 29. Dlaczego funkcja Process.WaitForInputIdle() nie działa?
- 30. Dlaczego funkcja CallBack nie działa?
Przykładowy kod i wersja przeglądarki Firefox? –
Miało to opublikować odpowiedź w tym samym czasie, ale nie ... nie wiem dlaczego. – RandallB