我需要在我的应用程序中使用功能,有一个名为“冻结”的按钮,单击该按钮时,我想冻结Webview。冻结webview的意思是冻结后的webview不应导航到任何其他页面,例如,如果用户单击链接或提交表单,则不应执行任何操作。
我尝试使用WebViewClient
和shouldOverrideUrlLoading
方法阻止请求。但这不起作用,还有其他方法可以实现吗?
shouldInterceptRequest
正如我在webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
if (!isFroze) {
return super.shouldOverrideUrlLoading(view, request)
}
return false
}
override fun shouldInterceptRequest(
view: WebView?,
request: WebResourceRequest?
): WebResourceResponse? {
if (!isFroze) {
return super.shouldInterceptRequest(view, request)
}
return null
}
}
上返回true
时ADM所评论的那样,解决了链接和表单提交问题,但JavaScript页面无法像YouTube中那样加载。因此,要解决此问题,我需要执行一个小片段JavaScript,即shouldOverrideUrlLoading
stopPropagation