Как изменить или удалить элементы сайта в Android WebView?
Есть такой сайт: ссылка
(обязательно нажмите на кнопку toggle device toolbar в инструментах разработчика перед его просмотром, ведь моё приложение работает на андройде). Мне нужно убрать все тэги nav и их детей.
Я попробовал такой код, но почему-то ничего не получилось:
public void editWeapons(Context context) {
try {
Toast.makeText(context, "Loading page... Please wait!", Toast.LENGTH_SHORT).show();
System.out.println("Ready");
weapon.webViewA.evaluateJavascript("(function(){const navs = document.querySelectorAll('nav');navs.forEach(el => {el.remove();console.log(el)})}())", null);
} catch (Exception e) {
Toast.makeText(context, "Connection problems!", Toast.LENGTH_LONG).show();
}
}
Я проверял в браузерной консоли на сайте js код:
(function(){const navs = document.querySelectorAll('nav');navs.forEach(el => {el.remove();console.log(el)})}())
И он прекрасно работал, а точнее удалял все nav и писал всё в консоли, но, когда я пытаюсь запустить его в webView.evaluateJavascript() он ничего не делает при загрузке страницы.
Консоль выводит ошибку [ERROR:gl_surface_egl.cc(342)] eglChooseConfig failed with error EGL_SUCCESS и [INFO:CONSOLE(25)] "Error: Minified React error #425;, и ссылку, содержащую ещё одну ошибку:
Text content does not match server-rendered HTML, думаю стоит добавить тег HTML в вопрос.
Как сделать так, чтобы код заработал?
Ответы (1 шт):
Оказывается сайт просто не успевал прогрузиться, если кому-то надо вот конечный код:
public void editWeapons() {
try {
Toast.makeText(site.context, "Loading page... Please wait!", Toast.LENGTH_SHORT).show();
System.out.println("Ready");
site.webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView webView, String url) {
site.webView.evaluateJavascript("(function(){const navs = document.querySelectorAll('nav');navs.forEach(el => {el.remove();console.log(el)})}())", null);
System.out.println("okay");
}
});
} catch (Exception e) {
Toast.makeText(site.context, "Connection problems!" + e, Toast.LENGTH_LONG).show();
}
}