W mojej aplikacji Android użytkownik może przeglądać niektóre strony HTML za pomocą ViewPager, a użytkownik może dotknąć elementu, aby go podświetlić.Android - JavaScript: zdarzenie touchstart nie zostało uruchomione do momentu powiększenia lub przewinięcia strony
Problem polega na tym, że próbując uzyskać zdarzenie dotykowe za pomocą javascript za pomocą następującego kodu, elementFromPoint zwraca wartość null podczas nawigacji do nowej strony, ale po powiększeniu lub przewinięciu strony przez użytkownika działa poprawnie.
Znalazłem rejestr zdarzenia touchstart po powiększeniu lub przewiń stronę. tak to działa zaraz po tym, chociaż jest on zarejestrowany na $ (document) .ready()
$(document).ready(function(){
document.addEventListener("touchstart", touchstart, false);
});
function touchstart(e) {
var x = e.targetTouches[0].clientX;
var y = e.targetTouches[0].clientY;
el = document.elementFromPoint(x, y);
}
dziękuję
Dziękuję, ten kod działa dobrze, ale dlaczego? –
Czuje się dość hacky, ale działa. Przy okazji, jeśli animujesz swój WebView z poza ekranem, musisz uruchomić te linie kodu po zakończeniu animacji. Konfiguruję go w metodzie onAnimationEnd Animator.AnimatorListener() i działa świetnie. Potwierdziłem również, że działa nawet wtedy, gdy zawartość strony nie jest wystarczająco duża, aby wymagać przewijania. –
Brian - czy pamiętasz, jeśli widok sieci był biały, jeśli nie czekałeś na zakończenie animacji i wywołałeś metody powiększania/pomniejszania? –