【发布时间】:2020-06-16 04:22:09
【问题描述】:
我的应用程序需要功能,有一个按钮调用“冻结”,当它点击时我想冻结 web 视图。冻结 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
}
}
【问题讨论】:
-
不幸的是我不能这样做,我需要捕获点击的元素。如果用户点击了一个链接,我想使用 JavaScript 界面捕获该事件。
-
你可以尝试从
shouldOverrideUrlLoading返回消费,即真实。看看This thread。 -
是的,我这样做了,它适用于链接和表单,但不适用于 javascript 页面加载。例如,当我单击视频时单击冻结按钮后,youtube 会切换到该页面,这意味着它正在加载视频。
-
谢谢,在那个链接中,我找到了适合我的解决方案的 JavaScript 版本。我将其发布为这个问题的答案。