【发布时间】:2022-01-05 01:08:46
【问题描述】:
我需要在后台加载动态生成的页面,然后获取结果html。我会为此使用 WebView,但如果不附加到 xml 布局,它就不起作用。 此示例不起作用:
val browser = WebView(this)
browser.visibility = View.INVISIBLE
browser.settings.javaScriptEnabled = true
browser.settings.blockNetworkImage = false
browser.settings.domStorageEnabled = true
browser.settings.cacheMode = WebSettings.LOAD_NO_CACHE
browser.settings.loadsImagesAutomatically = true
browser.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
Log.e("page", "finished")
val javascript = "javascript:window.JSBridge.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
browser.evaluateJavascript(javascript, null)
} else {
browser.loadUrl(javascript)
}
}
}
browser.loadUrl("https://github.com")
但这有效:
val browser = findViewById<WebView>(R.id.browser)
browser.visibility = View.INVISIBLE
browser.settings.javaScriptEnabled = true
browser.settings.blockNetworkImage = false
browser.settings.domStorageEnabled = true
browser.settings.cacheMode = WebSettings.LOAD_NO_CACHE
browser.settings.loadsImagesAutomatically = true
browser.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
Log.e("page", "finished")
val javascript = "javascript:window.JSBridge.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
browser.evaluateJavascript(javascript, null)
} else {
browser.loadUrl(javascript)
}
}
}
browser.loadUrl("https://github.com")
那么,有没有什么方法可以通过 WebView 加载页面而不附加到 xml 布局文件?
【问题讨论】: