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

时间:2011-02-26 19:08:25

标签: android android-webview webviewclient

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

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

  1. 当链接指向他们已经在的页面时。这个并不是什么大问题,而且有一个bug reported for it
  2. 当页面仍在加载时,如果用户单击链接,则很少捕获该链接。它只会打开链接而不会调用shouldOverrideUrlLoading
  3. 随机。在过去几个月的实验中,我注意到有时它只是没有抓住它。这种情况很少见,但确实会发生。
  4. 现在我的问题主要是如何解决问题2,因为其他问题不是很重要。但是,如果有人解决了1或3,我很乐意听到它。

    另外,我应该提一下,我在shouldOverrideUrlLoading尝试了不同的返回值,我注意到总是返回true似乎有最好的结果,但上面的问题仍然会发生。

2 个答案:

答案 0 :(得分:7)

如果HTML是您自己的HTML,您可以通过调用自己的Java对象替换所有传统链接,并通过WebView注入addJavascriptInterface()。那么你将不再依赖shouldOverrideUrlLoading()

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

我没有遇到过这个问题,但我也没有充分利用WebView任意内容。

答案 1 :(得分:5)

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