在我的 android 应用程序中加载了带有谷歌搜索结果链接的 webview,当我点击链接时,它打开了一个空白屏幕。
我认为,这与结果页面中每个 href 链接附带的 onmousedown 事件有关。
如果我有办法处理这个问题并让 webview 真正打开我点击的链接,我将非常感激。
在我的 android 应用程序中加载了带有谷歌搜索结果链接的 webview,当我点击链接时,它打开了一个空白屏幕。
我认为,这与结果页面中每个 href 链接附带的 onmousedown 事件有关。
如果我有办法处理这个问题并让 webview 真正打开我点击的链接,我将非常感激。
我有同样的问题。当我在运行 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 的乐趣 :)
这是另一个解决方案。在 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/
我想将此作为评论添加到 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);
到目前为止,这是可行的,但我还没有针对每种情况进行测试。
我查看了您的 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 中点击。
这是另一种处理果冻豆造成的空白页的解决方案。我发现了 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);
}
}