Intereting Posts
Это тестовый заказ, с которого вы не будете платить Воспроизведение mp3-файла во время загрузки? Обрабатывать onActivityResult на службе Как отключить Android-устройство? Сравнение Layer, Applozic, Quickblox & SendBird для быстрого обмена сообщениями WhatsApp в приложении для Android На Android сделайте запрос POST с данными URL-кодированной формы без использования UrlEncodedFormEntity Эффект масштабирования для Android SurfaceView Выделите искомый текст в элементах ListView Как удалить все полилинии с карты Как установить стиль шрифта полужирным, курсивом и подчеркнутым в Android TextView? RecyclerView: java.lang.IndexOutOfBoundsException: обнаружена несогласованность. Недопустимая позиция позиции Случайно удаленный файл макета Android Android: Когда разрушен контекст OpenGL? Реализовать анимацию флип анимации между двумя представлениями с использованием AnimatorSet Как показать двойную форму в качестве цены в текстовом виде в android

Android – JavaScript: событие touchstart не запускается до масштабирования или прокрутки страницы

В моем приложении для Android пользователь может просматривать некоторые HTML-страницы с помощью ViewPager, и пользователь может коснуться элемента, который нужно выделить.

Проблема заключается в попытке получить событие касания с помощью javascript, используя следующий код, elementFromPoint возвращает null при переходе на новую страницу, но после того, как пользователь увеличит страницу или прокрутит ее, она работает правильно.

Я обнаружил, что регистр события touchstart происходит после масштабирования или прокрутки страницы. Поэтому он работает сразу после этого, хотя он зарегистрирован на $ (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); } 

спасибо

Solutions Collecting From Web of "Android – JavaScript: событие touchstart не запускается до масштабирования или прокрутки страницы"

Напишите следующий код в java-коде после вызова javascript:

  myWebview.scrollTo(1, 0); myWebview.scrollTo(0, 0); 

Или использовать масштабирование, а затем уменьшить масштаб

  myWebview.zoomIn(); myWebview.zoomOut(); 

Используя решение Мохамеда Абдель Латифа (очевидно, это еще одна ошибка хроники WebView), это то, что исправлено для меня на Android 4.1.2. Примечание. Я тестировал это на Android 4.4.2, и этот хак-к-исправлению не нужен.

 @Override public void onCreate(Bundle savedInstanceState) { final WebView myWebView = (WebView) findViewById(R.id.mywebview); myWebView.setHorizontalScrollBarEnabled(false); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.loadDataWithBaseURL("file:///android_asset/", YOUR_HTML_GOES_HERE, "text/html", "utf-8", null); myWebView.setWebViewClient(new WebViewClient() { // overcome the ontouchstart registration bug ! @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); final WebView myWebView = (WebView) findViewById(R.id.mywebview); myWebview.scrollTo(1, 0); myWebview.scrollTo(0, 0); } }); }