【问题标题】:Android's WebView can't go back in local assetsAndroid 的 WebView 无法返回本地资产
【发布时间】:2014-11-28 15:11:31
【问题描述】:

我的 WebView 有问题。我的应用在本地资产中内置了使用 html 制作的帮助文件。我用 WebView 显示 html 文件。

我的问题是,WebView 的 goBack() 函数在尝试返回书签位置时无法返回上一页。

例如:

  • Page1 具有指向 Page1 中书签 1 的链接。
  • Page1 有指向 Page2 的链接。
  • 显示第1页并点击第2页的链接,然后goBack()可以返回第1页。很好。
  • 显示第1页并点击书签1的链接,然后点击第2页的链接,然后goBack()无法返回第1页。 WebView 显示错误,例如找不到带有 #bookmark1 的 url。

我怀疑 WebView 没有处理本地文件的查看历史记录。我使用的是 OS 4.0.3。

有什么解决办法吗?

【问题讨论】:

    标签: android webview


    【解决方案1】:

    我已经为这个问题找到了一个(妥协的)解决方案。此问题已在here 进行了讨论,可以在here 找到一个解决方案(日语页面,抱歉)。就我而言,在知道这是某些 Android 操作系统范围内的错误之后,返回上一页(而不是确切的锚点位置)就可以了。所以我最终得到了下一个代码。

    webView = (WebView)findViewById(R.id.webview);
    webView.setWebViewClient(new WebViewClient()
    {
        // https://stackoverflow.com/questions/6542702/basic-internal-links-dont-work-in-honeycomb-app
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
        {
            super.onReceivedError(view, errorCode, description, failingUrl);
            String url = failingUrl;
            int index = url.indexOf("#");
            if (index != -1)
            {
                url = url.substring(0, index);
            }
            webView.loadUrl(url);
        }
    });
    

    使用此代码,当它无法通过锚点返回上一页时,它会返回到没有锚点的上一页。我妥协了。我尝试通过使用 Java Script 的其他解决方案使其变得更好,但没有奏效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多