如何处理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