4

我将方法 shouldOverrideUrlLoading 用于为多个客户端个性化的应用程序。每个客户端都有自己想要加载到 webview 中的网页。我的问题是:该应用程序非常适合客户端 A 和他的网页,但不适用于客户端 B 的网页(与客户端 A 没有任何关系)。正如我所测试的,不同之处在于,在客户端 B 的情况下,对于在加载到 webview 的内容中访问的链接,shouulOverrideUrlLoading 不起作用(永远不会被调用),而对于客户端的 A 网页则可以完美运行。另一件事是客户端的 B 网页不仅适用于某些 Android 版本,如 2.1 或 2.3.6,但在 2.3.3、2.3.5、4.0.2 或 4.0.3 上运行良好。

所以这有点奇怪。如果你碰巧知道什么,请帮忙!谢谢!:)

编辑:我注意到当网页不通过javascript加载请求的链接时不会调用shouldOverrideLoading,并且在不使用javascript时它可以工作!!!但是当我设置 webview.setJavaScriptEnabled(false) 时它起作用了!!!我真的需要为我的应用程序启用 javascript,因为网页通常使用 javascript 来处理除了加载之外的其他事情,所以我不能仅仅因为 shouldOverrideUrlLoading 没有被调用就禁用它!

编辑2:更准确地说:

这个有效,并且 shouldOverrideUrlLoading 被调用:

<p onclick="location.href='linkHere'">
        NewLink
        <span class="icon-arrow"></span>
</p>

这个不起作用,并且 shouldOverrideUrlLoading 不会被调用:

<a class="link-inherit" href="linkHere">
        NewLink
        <span class="icon-arrow"></span>
</a>
4

1 回答 1

3

shouldOverrideUrlLoading未调用的解决方案

public void onPageStarted(WebView view, String url, Bitmap favicon) {

        if (url.contains("success")) {
            Intent intent = new Intent(WebviewActivity.this, OrderConfirmActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        } else {
            super.onPageStarted(view, url, favicon);
        }
    }
于 2013-07-05T06:13:05.260 回答