WebViewにWebページを表示していますが、そのWebページにボタンがあります。ボタンをクリックすると、確認ダイアログがポップアップするはずですが、WebViewに表示されません。アンドロイドブラウザで同じウェブページに行くとポップアップします。WebView内のWebページからのポップアップダイアログを処理する方法を知っている人はいますか?
25705 次
2 に答える
52
わかりました、答えを見つけました、そしてここにあります!
WebViewのWebページからのポップアップ確認を処理するには、WebChromeClientのonJsConfirmメソッドをオーバーライドして、ポップアップをAndroidアラートダイアログとして表示する必要があります。これを行うためのコードは次のとおりです。
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;
}
}
WebViewでWebChromeClientを設定することを忘れないでください...
mWebView.setWebChromeClient(new MyWebChromeClient());
注..これは私のコードではありませんが、私はそれを見つけ、WebViewでjavascript確認ダイアログを処理するために完全に機能します!
乾杯!
于 2010-04-28T02:41:08.747 に答える
2
メソッドを提供してくれたBrockoliに感謝します。Xamarin.Androidにこれが必要でした
public class MyWebChromeClient : WebChromeClient
{
private Context mContext;
private JsResult res;
public MyWebChromeClient(Context context)
{
mContext = context;
}
public override bool OnJsConfirm(WebView view, string url, string message, JsResult result)
{
res = result;
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.SetTitle("Confirm:");
builder.SetMessage(message);
builder.SetPositiveButton(Android.Resource.String.Ok, OkAction);
builder.SetNegativeButton(Android.Resource.String.Cancel, CancelAction);
builder.Create();
builder.Show();
return true;
//return base.OnJsConfirm(view, url, message, result);
}
private void CancelAction(object sender, DialogClickEventArgs e)
{
res.Cancel();
}
private void OkAction(object sender, DialogClickEventArgs e)
{
res.Confirm();
}
}
これは、webviewが作成されるアクティビティ(web_view)に戻ります。
web_view.SetWebChromeClient(new MyWebChromeClient(this));
于 2018-07-10T16:24:42.240 に答える