javascript - shouldOverrideUrlLoading 仅针对某些网页被调用

标签 javascript android webview anchor webviewclient

我将 shouldOverrideUrlLoading 方法用于针对多个客户端进行个性化设置的应用程序。每个客户端都有自己的网页,需要加载到 webview 中。我的问题是:该应用程序非常适合客户 A 和他的网页,但不适用于客户 B 的网页(与客户 A 没有任何关系)。正如我所测试的,不同之处在于,在客户端 B 的情况下,对于在加载到 web View 中的内容中访问的链接,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>

最佳答案

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);
        }
    }

关于javascript - shouldOverrideUrlLoading 仅针对某些网页被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9670136/

相关文章:

java - UDP 客户端向服务器发送数据,但没有收到响应

java - android 互联网连接可用性

Javascript - 缓存和 cookie 问题

javascript - 有什么方法可以在 ViewChildren 中获取 ElementRef 和 Component ref 吗?

javascript - ReactJS:用函数定义样式属性

Android - webview 中断

android - 如何从资源设置 Webview 链接颜色

javascript - 如何理解下划线源码中的 "return obj === void 0"?

java - 使用 HttpURLConnection 的 Android 应用程序在 connect() 处崩溃

android - 找不到 com.android.tools.lint :lint-gradle Android Studio 3