@poslannikD
Java/C/C++ Programmer

Почему javascipt в webview работает не полностью?

Есть страница которая загружается с помощью библиотеки okHttp,
после этого парсится html и извлекаются нужные данные.
Далее происходит загрузка страницы в webview
webView.loadDataWithBaseURL(null, result, "text/html", "UTF-8", null);

После некоторых манипуляций с данными пытаюсь их инжектить обратно на страницу и они таки инжектятся, только есть проблема в том что не нажимается кнопка отправки сообщения. Ни с помощью скрипта ни в самом webview.
Вот javascript код отвечающий за вставку данных и нажатие кнопки
@Override
        public void onPageFinished(WebView view, String url) {
            view.loadUrl(
                    "javascript:(" +
                            "window.onload = function ready() { " +
                            "var btnOpen = document.getElementsByClassName('btn btn-primary js-ask');" +
                            "btnOpen[0].click();" +
                            "var btnSend = document.getElementsByClassName('btn btn-primary pull-right');" +
                            "var question = document.getElementById('id_question').value=" + question + ";" +
                            "var name = document.getElementById('id_user_name').value='" + name + "';" +
                            "var email = document.getElementById('id_email').value='" + email + "';" +
                            "var captchaEdit = document.getElementById('id_captcha_1').value='" + captcha + "';" +
                            "console.log('btnSend[0]);" +
                            "btnSend[0].click();" +
                            "})()");
        }

Вывод в консоль из метода onPageFinished
"about:blank#", source: about:blank (1)
"[object HTMLInputElement]", source: about:blank (1)
  • Вопрос задан
  • 448 просмотров
Решения вопроса 1
@poslannikD Автор вопроса
Java/C/C++ Programmer
После загрузки данных из интернета (webView.loadUrl("http://...");) и инжектирования все работало нормально. Для тех кто столкнется с этой ситуацией: грузите страницу сразу из инета без плясок с бубном.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Во-первых, складывается ощущение, что ваш код - это всё ж таки не url, и запихивать его в loadUrl - как минимум странно. Хз, не гуру вебвью %)
Во-вторых, надо попробовать включить JavaScript, по-моему, он по умолчанию выключен:webView.getSettings().setJavaScriptEnabled(true);
Ответ написан
ImangazalievM
@ImangazalievM
Android-программист
Попробуй библиотеку Scripto. Она решит твои проблемы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы