Введите javascript с jquery в веб-просмотре android - PullRequest
0 голосов
/ 05 марта 2020

Я хочу добавить некоторые javascript функции с jquery в android WebView.

Что именно я хочу сделать, так это то, как я загружаю один URL в android WebView, и в него я хочу добавить функцию javascript с jquery, которая у меня уже есть.

Я не хочу добавлять HTML с javascript.

ниже функции, которую я хочу внедрить в WebView.

$("form").each(function (index) {
        $(this).find("input").not(":input[type=radio]").not(":input[type=checkbox]").each(function (index) {
//enter code here
            });
    });

1 Ответ

0 голосов
/ 05 марта 2020
                   webView.settings.javaScriptEnabled = true
                   webView.webViewClient = object : WebViewClient() {
                      override fun onPageFinished(view: WebView, url: String) {
                        injectJS()
                     }
                   }
                   webView.loadUrl("https://www.google.com")





>   **We will use JavaScript to change some of the UI properties for
> google.com website, so the obvious thing we need to do is to allow
> webView to use JavaScript.**

        function () {
          document.getElementById("hplogo").src = "https://android.com.pl/images/user-images/2017/03/android-developer2.png";
          document.bgColor = "#454343";
          document.getElementById("lst-ib").value = "Some random text";
        }

Наша функция JS действительно проста. Использование DOM позволяет изменить некоторые свойства сайта в несколько строк кода! В Java мы обычно используем это для чтения XML файлов, но если вы не знакомы с ним - посмотрите это руководство. Очень важно вызвать inject JS () после полной загрузки сайта, потому что в этом случае функция JS основана на уже созданных элементах сайта. Однако это не мешает вам использовать jQuery или любой другой JS фреймворк, с которым вы знакомы.

        private fun injectJS() {
                try {
                    val inputStream = assets.open("style.js")
                    inputStream.bufferedReader().use(BufferedReader::readText)
                } catch (e: Exception) {
                    null
                }?.let { webView.loadUrl("javascript:($it)()")  }
            }

...