Intereting Posts
Как сохранить изображение в базе данных SQLite Ссылка MapView в SupportMapFragment Дополнительная ошибка межстрочного интервала на пользовательском шрифте Android – общие переходы элементов с завершением активности вызова () Как инструмент HierarchyViewer от android studio знает свойства просмотров экрана Android Отсутствует функция телефонии в AVD с поддержкой GSM Как добавить звук уведомления приложения в список звуков уведомлений? Android sqlite двунаправленная синхронизация sqlite Проверка программной версии приложения на Android-рынке Как настроить Spinner в Android Попытка вручную подписать пакет android с помощью jarsigner.exe и установить с помощью adb.exe Проверка показывает исключение нулевого указателя, пока я проверяю нулевую вероятность Внедрение Google In-app billing – Какой учебник Google является правильным? Переключатели активности / фрагментов совместимы с устройствами до Lollipop? Как установить SD-карту на эмулятор Android (1.6)

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); } }); }