android - 在 SPA 的情况下不调用 shouldOverrideUrlLoading 方法

标签 android webview

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

我想将一个用 react.js 构建的单页应用程序放入 WebView,并在通过 shoudOverrideUrlLoading() 加载页面之前控制它在更改 url 上> 方法。但是 shoudOverrideUrlLoading() 从未被调用。

但是,如果是非单页应用,它就可以正常工作。

是不是WebView和SPA之间的问题?我猜是的,但没有引用资料。

最佳答案

shouldOverrideUrlLoading() 仅在renderer initiated 导航时被调用。这基本上意味着:

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

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

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

关于android - 在 SPA 的情况下不调用 shouldOverrideUrlLoading 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54067458/

相关文章:

java - 通过 Android 应用程序将音频文件上传到 Parse.com 时遇到问题

android - 无法在 Android 中调整 Web View 的大小

javascript - 当 WebView 位于 ScrollView 内时,ScrollTo() 方法不起作用

android - 如何使网页 View 与其内容一样大?

Android - 如何将图片从 webview.capturePicture() 转换为 byte[] 并返回位图

android - 如何在monodroid中获取Camerapreview数据

android - 在 AVD 设备上检测 chromecast

java - 那么如何将一个int数组添加到android中的微调器

java - 如何在没有服务器的情况下在多个设备中的同一个应用程序之间共享数据库

android - 如何将 WebView 滚动到 Android 上的特定点