Używam młota do przeciągania i robi się niestabilny podczas ładowania innych rzeczy, jak mi mówi ten komunikat ostrzegawczy.
Obsługa zdarzenia wejściowego „touchstart” została opóźniona o X ms ze względu na zajęty główny wątek. Rozważ oznaczenie modułu obsługi zdarzeń jako „pasywnego”, aby strona była bardziej responsywna.
Próbowałem więc dodać „pasywną” do słuchacza w ten sposób
Hammer(element[0]).on("touchstart", function(ev) {
// stuff
}, {
passive: true
});
ale wciąż otrzymuję to ostrzeżenie.
preventDefault()
- czy można ukryć to ostrzeżenie?Ukrywa to komunikat ostrzegawczy:
źródło
preventDefault()
, powinieneś to określićpassive: false
. Jeśli nie, określpassive: true
. Otrzymasz ostrzeżenie tylko, jeśli nie określisz żadnego z nich. Jeśli określiszpassive: true
ipreventDefault()
zostaniesz wywołany, spowoduje to błąd, a ustawienie domyślne nie zostanie zablokowane. Określaniepassive
nie jest tutaj hackowaniem. To jest rozwiązanie . O to prosi ostrzeżenie!Spotkaj się z tym również we wtyczce rozwijanej select2 w Laravel. Zmiana wartości zgodnie z sugestią Alfreda Wallace'a z
do
rozwiązuje problem. Dlaczego ma głos negatywny, nie wiem, ale to działa dla mnie.
źródło
Dla tych, którzy utknęli ze starszymi problemami, znajdź linię zgłaszającą błąd i dodaj
{passive: true}
- np .:staje się
źródło
W przypadku jquery-ui-drag z jquery-ui-touch-punch naprawiłem to podobnie jak Iván Rodríguez, ale z jeszcze jednym zastąpieniem zdarzenia dla touchmove:
źródło
Znalazłem rozwiązanie, które działa na jQuery 3.4.1 slim
Po cofnięciu minimalizacji dodaj
{passive: true}
do funkcji addEventListener w linii 1567 w następujący sposób:t.addEventListener(p, a, {passive: true}))
Nic się nie psuje, a audyty latarni morskich nie narzekają na słuchaczy.
źródło