首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理webview确认对话框?

如何处理webview确认对话框?
EN

Stack Overflow用户
提问于 2010-04-28 10:01:08
回答 2查看 25.4K关注 0票数 25

我在WebView中显示网页,网页上有一个按钮。当你点击这个按钮时,一个确认对话框应该会弹出来,但它并没有显示在我的WebView中。如果我在android浏览器中转到相同的网页,它确实会弹出。有谁知道如何在WebView中处理来自网页的弹出对话框?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-28 10:41:09

好了,找到答案了,这就是答案!

为了处理来自WebView中网页的弹出确认,您需要覆盖WebChromeClient中的onJsConfirm方法,以将弹出显示为Android Alert对话框。下面是执行此操作的代码。

代码语言:javascript
复制
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 ...

代码语言:javascript
复制
    mWebView.setWebChromeClient(new MyWebChromeClient());

注意..这不是我的代码,但我找到了它,它可以很好地处理WebView中的javascript确认对话框!

干杯!

票数 52
EN

Stack Overflow用户

发布于 2018-07-11 00:24:42

感谢Brockoli的方法。我需要这个给Xamarin.Android

代码语言:javascript
复制
 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)

代码语言:javascript
复制
web_view.SetWebChromeClient(new MyWebChromeClient(this));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2726377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档