Pracuję nad aplikacją internetową, dla której próbuję wdrożyć w pełni funkcjonalny system okienkowy. W tej chwili wszystko idzie bardzo dobrze, napotykam tylko jeden drobny problem. Czasami, gdy idę przeciągnąć część mojej aplikacji (najczęściej narożny element div mojego okna, który ma wywołać operację zmiany rozmiaru), przeglądarka internetowa staje się sprytna i myśli, że chcę coś przeciągnąć i upuścić. Rezultat końcowy: moja akcja zostaje wstrzymana, podczas gdy przeglądarka wykonuje operację przeciągania i upuszczania.
Czy istnieje łatwy sposób na wyłączenie funkcji przeciągania i upuszczania w przeglądarce? Idealnie chciałbym móc go wyłączyć, gdy użytkownik klika określone elementy, ale włączyć go ponownie, aby użytkownicy nadal mogli korzystać z normalnych funkcji przeglądarki w zawartości moich okien. Używam jQuery i chociaż nie mogłem go znaleźć, przeglądając dokumenty, jeśli znasz czyste rozwiązanie jQuery, byłoby doskonałe.
W skrócie: muszę wyłączyć zaznaczanie tekstu w przeglądarce oraz funkcje przeciągania i upuszczania, gdy mój użytkownik ma wciśnięty przycisk myszy, i przywrócić tę funkcjonalność, gdy użytkownik zwolni mysz.
źródło
Odpowiedzi:
Spróbuj zapobiec domyślnemu zdarzeniu wyciszenia myszy:
lub
źródło
:active
pseudoklasy do elementu. Oznacza to, że tak naprawdę nie mogę go używać do moich linków.To działa ..... Spróbuj.
mam nadzieję, że to pomoże. Dzięki
źródło
<div>
elemencie.)copy paste
odbiornikiem wydaje się idealnym rozwiązaniem, aby zmusić użytkownika do wpisywania danych wejściowych zamiast wklejania / przeciągania czegoś bez negatywnego wpływu na inne części strony.Możesz wyłączyć przeciąganie, używając
draggable="false"
atrybutu.http://www.w3schools.com/tags/att_global_draggable.asp
źródło
To może zadziałać: możesz wyłączyć zaznaczanie za pomocą css3 dla tekstu, obrazu i zasadniczo wszystkiego.
Oczywiście tylko dla nowszych przeglądarek. Aby uzyskać więcej informacji, sprawdź:
Jak wyłączyć podświetlanie zaznaczenia tekstu za pomocą CSS?
źródło
div
, ale z wyłączonym przeciąganiem.Z jQuery będzie to coś takiego:
W moim przypadku chciałem uniemożliwić użytkownikowi upuszczanie tekstu na wejściach, więc użyłem „drop” zamiast „mousedown”.
Zamiast event.preventDefault () możesz zwrócić false. Oto różnica.
A kod:
źródło
To jest skrzypce, których zawsze używam w moich aplikacjach internetowych:
Zapobiegnie to przeciąganiu i upuszczaniu czegokolwiek w Twojej aplikacji. W zależności od potrzeb wycieczki możesz zastąpić selektor nadwozia dowolnym pojemnikiem, którego dzieci nie powinny ciągnąć.
źródło
Spróbuj tego
źródło
W przypadku
input
elementów ta odpowiedź działa dla mnie.Zaimplementowałem go na niestandardowym komponencie wejściowym w Angular 4, ale myślę, że można go zaimplementować za pomocą czystego JS.
HTML
Definicja komponentu (JS):
źródło
używając odpowiedzi @ SyntaxError, https://stackoverflow.com/a/13745199/5134043
Udało mi się to zrobić w React; jedynym sposobem, w jaki mogłem się zorientować, było dołączenie metod ondragstart i ondrop do ref, na przykład:
źródło
Zostawię to tutaj. Pomógł mi po tym, jak wszystkiego spróbowałem.
źródło
To JQuery działało dla mnie: -
źródło