首页 > 解决方案 > 如何在页面加载时等待然后在 Android WebViewClient 中执行 Javascript 代码

问题描述

我想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 应该在加载完成后触发。

标签: androidkotlinwebviewclient

解决方案


推荐阅读