当页面加载时,shouldOverrideUrlLoading不起作用/捕获链接点击

cot*_*aws 14 android android-webview webviewclient

我正在使用WebViewClient.shouldOverrideUrlLoading来捕获WebView中的任何链接点击.这大约有95%的时间都有效,但有时它根本就没有被调用.

我在这三种情况下都注意到了这一点:

  1. 当链接指向他们已经在的页面时.这个并不是什么大问题,并且报告了一个错误.
  2. 当页面仍在加载时,如果用户单击链接,则很少捕获该链接.它只会在没有打电话的情况下打开链接shouldOverrideUrlLoading.
  3. 随机.在过去几个月的实验中,我注意到有时它只是没有抓住它.这种情况很少见,但确实发生了.

现在我的问题主要是如何解决问题2,因为其他问题不是很重要.但是,如果有人解决了1或3,我很乐意听到它.

另外,我应该提一下,我已经尝试了不同的返回值,shouldOverrideUrlLoading并且我注意到总是返回true似乎具有最好的结果,但上述问题仍然发生.

Com*_*are 7

如果HTML是您自己的,您可以将所有传统链接替换为对您自己的Java对象的调用,并将其注入到WebViewvia中addJavascriptInterface().那你就不再依赖了shouldOverrideUrlLoading().

否则,可能会尝试阻止用户与页面进行交互,直到onPageFinished().

我没有遇到过这个问题,但我也没有广泛使用WebView任意内容.

  • @ThomasW很久以前,我很确定我找到了一个我回归虚假的地方.我相信你必须绝对总是在shouldOVerrideUrlLoading()中返回true以避免这个问题.在该方法中,如果您发现不需要覆盖加载,只需调用webview.loadUrl(url)而不是返回false. (2认同)

Gra*_*hew 5

尝试使用修改页面上的js更改网页时,我遇到了类似的问题window.location.事实证明,修改url方案/协议会使webview成为现实shouldOverrideUrlLoading.我知道这不会帮助你,因为你没有HTML,但我认为它会帮助其他任何偶然发现这个问题的人.