18
我在WebView中顯示一個網頁,並在網頁上有一個按鈕。當你點擊按鈕時,彈出一個確認對話框,但它不會顯示在我的WebView中。如果我轉到android瀏覽器中的相同網頁,它會彈出。任何人都知道如何處理來自WebView內部網頁的彈出對話框?如何處理webview確認對話框?
我在WebView中顯示一個網頁,並在網頁上有一個按鈕。當你點擊按鈕時,彈出一個確認對話框,但它不會顯示在我的WebView中。如果我轉到android瀏覽器中的相同網頁,它會彈出。任何人都知道如何處理來自WebView內部網頁的彈出對話框?如何處理webview確認對話框?
好的,找到答案,就在這裏!
爲了處理來自WebView中網頁的彈出確認,您需要重寫WebChromeClient中的onJsConfirm方法,以將彈出窗口顯示爲Android Alert對話框。這是執行此操作的代碼。
final Context myApp = this;
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
new AlertDialog.Builder(myApp)
.setTitle("App Titler")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.cancel();
}
})
.create()
.show();
return true;
}
}
不要忘記設置你的WebChromeClient在你的WebView ...
mWebView.setWebChromeClient(new MyWebChromeClient());
注..這是不是我的代碼,但我發現它,它完全適用於處理JavaScript確認WebView中的對話框!
乾杯!
我有mvc視圖和Sign Out但不能在android模擬器上工作。我在這裏需要幫助, – 2013-04-23 12:29:55
感謝brockoli ...經過一些實驗後,似乎只需從onJsConfirm方法返回false就足以讓WebView爲您顯示一個對話框 - 至少在JellyBean中...默認情況下WebChromeClient已經返回false,所以'webView.setWebChromeClient(new WebChromeClient())''爲我完成了這項工作! – Stevie 2013-06-21 16:22:06