【问题标题】:Google search links in the webview of my app opening of a blank page ..!谷歌搜索链接在我的应用程序打开一个空白页面的 webview ..!
【发布时间】:2012-09-25 00:26:42
【问题描述】:

在我的 android 应用程序中加载了带有谷歌搜索结果链接的 webview,当我点击链接时,它打开了一个空白屏幕。

我认为,这与结果页面中每个 href 链接附带的 onmousedown 事件有关。

如果我能提供一种方法来处理这个问题并让 webview 真正打开我点击的链接,我将非常感激。

【问题讨论】:

    标签: android webview href google-search onmousedown


    【解决方案1】:

    我查看了您的 Vuwize 应用程序。与将 www.google.com 直接嵌入 WebView 不同,您似乎拥有自己的搜索表单,运行 Google 搜索,然后自己呈现结果页面。这可以解释您的问题,因为来自 Google 的搜索结果中的结果链接不是指向原始页面的直接 href 链接。要了解有关您的问题的更多信息,有必要了解您到底在做什么以及如何从服务器端运行 Google 搜索。

    如果您只是像这样直接将 www.google.com 嵌入到 WebView 中:

        setContentView(R.layout.main);
    
        mWebView = (WebView) findViewById(R.id.webview);
    
        mWebView.getSettings().setJavaScriptEnabled(true);
    
        mWebView.loadUrl("http://www.google.com");
    
        mWebView.setWebViewClient(new HelloWebViewClient());
    

    用户可以直接在 Google 中输入搜索并获得结果页面,其中链接都可以在同一个 WebView 中点击。

    【讨论】:

    • 感谢SSGG的回复。我没有使用任何自定义表单。我所做的正是您在上面发布的内容,除了一件事。我没有在加载时直接在 webview 中加载 google.com url。如果用户在我的 url 框中输入正确的 url,那么我要求 webview 导航到该 url,否则,我要求 webview 加载“google.com/search?q=<whatever 用户在 url 框中给出的单词>”跨度>
    • 但是在用户直接在 url 框中输入 google.com 并搜索某些内容的任何一种情况下,我都会看到这个空白页面问题......或者我将用户带到带有搜索词的上述 url。令人惊讶的是,当我在手机上尝试此应用时,我没有看到此空白页问题,但当我从平板电脑上尝试此应用时,问题仍然存在。
    【解决方案2】:

    我也有同样的问题。当我在运行 4.1.1 的 Asus Transformer TF700 的 Web 视图中单击 Google 搜索结果时,我得到了“关于:空白”页面。我的 Acer A100 平板电脑或其他手机不会发生这种情况。

    当我从平板电脑切换到 Google 搜索主页面底部的经典版本时,我注意到结果链接有效。

    https://www.google.com/?nota=1

    如果您删除上述 URL 中的 ?nota=1,您将不会在 PC 中看到“平板电脑”选项。然而,在您的平板电脑中,默认的 google.com URL 会在底部显示“平板电脑”选项。

    如果您在搜索结果页面中使用 nota=1,链接将起作用。像这样:

    http://www.google.com/search?nota=1&q=amazon

    我知道这并不完美。我们希望默认的 Google 搜索结果页面的链接能够正常工作。 Google 在平板电脑版本上做了一些华硕 Transformer 似乎不喜欢的时髦!

    我会在找出导致此问题的原因后发布更新。哦! Android 的乐趣 :)

    【讨论】:

      【解决方案3】:

      这是另一个解决方案。在 Google 完成加载空白页面后,您使用 WebView 的标记或成员变量将 WebView 与上一页(这是实际结果)一起加载。像这样:

      @Override
      public void onPageFinished(WebView view, String url)
      {
          System.out.println("onPageFinished: " + url);
          if ("about:blank".equals(url) && view.getTag() != null)
          {
              view.loadUrl(view.getTag().toString());
          }
          else
          {
              view.setTag(url);
          }
      }
      

      这是我的 LogCat:

      I/System.out(13182): onPageFinished: http://www.google.com/#hl=en&sugexp=les%3B&gs_rn=1&gs_ri=tablet-gws&cp=2&gs_id=9&xhr=t&q=amazon...
      I/System.out(13182): onPageFinished: http://www.amazon.com/
      I/System.out(13182): onPageFinished: about:blank
      I/System.out(13182): onPageFinished: http://www.amazon.com/
      

      【讨论】:

        【解决方案4】:

        这是另一种处理在 Jelly Bean 中引起的空白页的解决方案。我发现了 2 个导致空白页的 URL。覆盖 loadUrl(String) 并且根本不加载它们。

        @Override
        public void loadUrl(String url)
        {
            if (url != null && !(url.startsWith("file:///android_asset") || "about:blank".equals(url)))
            {
                super.loadUrl(url);
            }
        }
        

        【讨论】:

          【解决方案5】:

          我想将此作为评论添加到 Stan Texan 的回答中,但我没有足够的代表点...

          我正在运行 Honeycomb (3.1) 的旧平板电脑(LG Optimus Tab/DoCoMo L-06c/T-Mobile G-Slate/Rogers LG V909)上进行测试,而我的 WebView 在 Google 网站上也遇到了同样的问题。

          Google 自己的浏览器在导航到 www.google.com 时运行良好,但是当我在应用程序的 WebView 中使用该 url 时,链接都是“about:blank”。 0_o

          因此,如果用户想去谷歌的搜索页面,我将url改写如下:

          //get the url from the user..
          inUrl = urlAddressEditText.getText().toString();
          // make sure it's properly formatted...
          ...
          // then add the "/?nota=1&" if it's a Google domain. 
          String outUrl = inUrl.replaceFirst("(www\\.google\\..*/?)(\\??)", "$1/?nota=1&");
          webView.loadView(outUrl);
          

          到目前为止,这是可行的,但我还没有针对每种情况进行测试。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-05-12
            • 1970-01-01
            • 2013-02-17
            • 2021-07-28
            • 1970-01-01
            • 1970-01-01
            • 2014-12-10
            • 2018-09-13
            相关资源
            最近更新 更多