Как дождаться загрузки страницы и выполнить код Javascript в Android WebViewClient - PullRequest
0 голосов
/ 24 ноября 2018

Я хочу, чтобы processHTML был запущен после завершения загрузки веб-страницы.Я думаю, мне нужно:

document.load = 

для этого.Но я не знаю правильный синтаксис для того, чтобы поместить его в loadUrl:

    class JavaScriptTokenSubstractInterface {
        @JavascriptInterface
        @SuppressWarnings("unused")
        fun processHTML(html: String) {
            Log.d("","html shown is loading and not the result.")
        }
    }

    val webView: WebView = findViewById(R.id.webView)
    webView.settings.javaScriptEnabled = true
    webView.settings.useWideViewPort = true
    webView.requestFocus(View.FOCUS_DOWN)
    webView.addJavascriptInterface(JavaScriptTokenSubstractInterface(), "HTMLOUT")
    webView.webViewClient = object : WebViewClient() {

        override fun onPageFinished(webView: WebView?, url: String?) {
            super.onPageFinished(webView, url)
            Thread.sleep(3000)
            webView?.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');")
        }
    }

    webView.loadUrl("www.someWebPageThatIsLoading.nl")

Что происходит: 1. Показывается загрузка страницы 2. Запускается processHTML и отображается HTMLстраницы загрузки 3. Проходит несколько секунд и страница загружается

processHTML должен запускаться после завершения загрузки.

...