Чтобы изменить значение / контент / стиль в HTML, используя javascript, также известный как DOM Manipulate , мы ждем, когда DOM будет готов или полностью загружен. В этом случае мы загружаем страницу в виджет WebView и затем делаем наше дело.
У меня есть пример кода, который я всегда использую в одном и том же случае,
...
final String url = "http://example.com";
final WebView webview = findViewById(R.id.my_webview);
final String myNewValue = "it works!";
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// Your custom javascript here
String myCustomJS = "document.getElementById('options').innerHTML = '" +
myNewValue + "'";
// here we execute the javascript code
webview.loadUrl("javascript:(function(){" + myCustomJS + "})()");
}
});
// and here we load the url
webview.loadUrl(url);
...
Я надеюсь, что приведенный выше код поможет вам продолжить работу ..
Обновление для Ожидание готовности DOM
Если у вас естьиспользуйте jQuery раньше, тогда вы должны знать
// example 1: jQuery way
$(document).ready(function() {
// place our logic here
});
// example 2: native javascript way
document.addEventListener('DOMContentLoaded', function() {
// place our logic here
});
Я использую этот трюк для манипулирования страницей в WebView после готовности DOM (в примере 2 нативным способом JS).
Еще один вопрос, почему не использовать runnable?
, потому что мы никогда не знаем пользователей скорости Интернета, скажем, если мы установили runnable для ожидания 3000ms
или 3sec
но сеть не отвечает после запуска. Что случилось дальше? пользователи будут иметь белый пустой экран и будут ждать.
надеюсь, это станет более понятным.
ссылка: https://developer.mozilla.org/.../DOMContentLoaded_event