與我的Android應用程序中加載的谷歌搜索結果鏈接的webview,當我點擊鏈接,它打開一個空白的屏幕。谷歌搜索鏈接在我的應用程序的web視圖中打開一個空白頁。
我想,這是與結果頁面中的每個href鏈接附加的onmousedown事件有關。
將非常感激,如果我提供了一種方法來處理這個問題,並使web視圖實際打開我點擊的鏈接。
與我的Android應用程序中加載的谷歌搜索結果鏈接的webview,當我點擊鏈接,它打開一個空白的屏幕。谷歌搜索鏈接在我的應用程序的web視圖中打開一個空白頁。
我想,這是與結果頁面中的每個href鏈接附加的onmousedown事件有關。
將非常感激,如果我提供了一種方法來處理這個問題,並使web視圖實際打開我點擊的鏈接。
我遇到同樣的問題。當我點擊運行4.1.1的Asus Transformer TF700中的WebView中的Google搜索結果時,我會看到「about:blank」頁面。這不會發生在我的宏基A100平板電腦或其他手機。
我注意到在Google搜索頁底部從平板電腦切換到經典版時,結果鏈接可以正常工作。
https://www.google.com/?nota=1
如果去掉?在上面的URL諾塔= 1,你不會看到在您的PC平板選項。然而,在您的平板電腦中,默認的google.com網址會在底部顯示平板電腦選項。
如果您在搜索結果頁面中使用nota = 1,則鏈接將起作用。就像這樣:
http://www.google.com/search?nota=1&q=amazon
我知道這是不完美的。我們希望Google搜索結果頁面的默認鏈接有效。谷歌在華碩變壓器似乎不喜歡的平板電腦版上做了一些時髦的事情!
我會發佈一個更新,當我弄清楚是什麼導致了這一點。哦!與Android的樂趣:)
我看了一下你的Vuwize應用程序。不是直接將www.google.com嵌入到WebView中,而是似乎擁有自己的搜索表單,運行Google搜索,然後自己渲染結果頁面。這可以解釋您的問題,因爲來自Google的搜索結果中的結果鏈接不是直接鏈接到原始頁面的鏈接。要更多地瞭解您的問題,有必要了解您究竟在做什麼以及如何從服務器端運行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標記或成員變量將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/
這裏的另一種解決方案來處理空白頁引起了果凍豆。我發現了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);
}
}
我想添加爲斯坦德克薩斯的答案評論,但我沒有足夠的代表處點...
我在一箇舊片(LG擎天柱選項卡測試/ DoCoMo L-06c/T-Mobile G-Slate/Rogers LG V909)運行Honeycomb(3.1),我的WebView在Google網站上遇到同樣的問題。
當瀏覽到www.google.com時,Google自己的瀏覽器工作得很好,但當我在我的應用程序的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);
到目前爲止,這工作,但我還沒有測試它的每一個場景。
謝謝你的回覆SSGG。我沒有使用任何自定義窗體。我所做的就是你上面發佈的內容,除了一件事。我不是在加載時直接在webview中加載google.com網址。如果用戶在我的url框中輸入正確的url,那麼我要求webview以其他方式導航到該url,我要求webview加載「http://www.google.com/search?q=「 –
但是,在用戶直接在url框中輸入google.com並搜索某些內容的情況下,我看到這個空白頁問題......或者我將用戶帶到上面的url與搜索詞。令人驚訝的是,當我從手機上試用這款應用程序時,我沒有看到這個空白頁面的問題,但是當我從平板電腦上試用這個應用程序時,問題依然存在。 –