2

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

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

如果我有办法处理这个问题并让 webview 真正打开我点击的链接,我将非常感激。

4

5 回答 5

1

我有同样的问题。当我在运行 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 搜索结果页面的链接能够正常工作。谷歌在华硕 Transformer 似乎不喜欢的平板电脑版本上做了一些时髦的事情!

当我弄清楚导致这种情况的原因时,我会发布更新。哦!Android 的乐趣 :)

于 2013-01-16T04:43:56.980 回答
1

这是另一个解决方案。在 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/
于 2013-01-16T06:30:24.003 回答
1

我想将此作为评论添加到 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);

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

于 2013-12-04T01:03:20.010 回答
0

我查看了您的 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 中点击。

于 2012-10-05T17:09:54.460 回答
0

这是另一种处理果冻豆造成的空白页的解决方案。我发现了 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);
    }
}
于 2013-02-20T23:38:26.283 回答