Intereting Posts
Edittext разрезает текст с центральными и левыми выравниваниями Динамический контроль действий / пунктов меню в ActionBar Панель действий Android – динамическое удаление панели действий Утечка памяти растрового изображения Android Открытие службы с помощью смартфона android и других устройств FragmentStatePageAdapter: несколько элементов, видимых одновременно – как центрировать определенную страницу? Как сосредоточить индикатор прогресса в ProgressDialog легко (когда заголовок / текст не прошел) DrawerLayout, NavigationView и android: Theme.Material.Light несовместим? Изображение кнопки Android растягивается с помощью тем для ActionBar или ActionBarSherlock Получение значения null из 'getLastKnownLocation' на SDK Как заставить элементы внутри фиксированного позиционного элемента реагировать на события onclick javascript в веб-браузере Android? Связать два apk в один apk? Error: Ошибка: типы строк недопустимы (в 'entries' со значением 'array / list') Изменение цвета текста в WebView? IOS / Objective-C эквивалент AsyncTask от 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); } 

спасибо

Напишите следующий код в 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); } }); }