仅为某些网页调用shouldOverrideUrlLoading

时间:2012-03-12 15:41:23

标签: javascript android webview anchor webviewclient

我正在使用方法shouldOverrideUrlLoading为多个客户端个性化的应用程序。每个客户都有自己的网页,希望加载到网页浏览中。我的问题是:该应用程序适用于客户端A及其网页,但不适用于客户端的B网页(与客户端A无关)。正如我所测试的那样,区别在于客户端的B情况下,在加载的内容中访问的链接进入webview,shoulOverrideUrlLoading不起作用(永远不会被调用),并且客户端的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>

1 个答案:

答案 0 :(得分: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);
        }
    }