如果是SPA,则不调用shouldOverrideUrlLoading方法

时间:2019-01-07 01:09:04

标签: android webview

使用WebView构建android应用,遇到了问题。

我想将一个用react.js构建的单页面应用程序放到WebView中,并在通过shoudOverrideUrlLoading()方法加载页面之前通过跟踪URL对其进行控制。但是shoudOverrideUrlLoading()从未被调用。

但是,对于非单页面应用程序,它可以正常工作。

WebView和SPA之间是否有问题?我猜应该是,但是没有参考。

1 个答案:

答案 0 :(得分:1)

shouldOverrideUrlLoading()仅用于渲染器启动导航。这基本上意味着:

  • 用户点击了链接
  • 页面上的JS单击了链接或尝试导航(例如window.location.href
  • 用于其他导航的HTTP重定向(一些3xx HTTP代码)

与渲染器启动的导航相反的是浏览器启动的导航。这将包括任何loadUrl() / loadData() / etc。方法-shouldOverrideUrlLoading()不会被调用。

单页应用程序无法导航,因此为什么不调用API。您可以改为使用addJavascriptInterface()研究一种解决方案,其中用户单击将触发对注入的JavascriptInterface的方法调用(而不是直接调用AJAX)。