修改警告框(alert())标题(Android Webview中的Javascript)

8

截图:文件://

有没有办法修改警告框标题?非常感谢您的帮助。 :)


2
不,你无法控制那个。浏览器作为一项安全措施会自行处理。 - Pointy
4个回答

13

确实可以使用以下代码封装它:

    final Context myApp=this;

    webView.setWebChromeClient(new WebChromeClient(){
    @Override
    public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
    {
        new AlertDialog.Builder(myApp)
        .setTitle("Simmon says...")
        .setMessage(message)
        .setPositiveButton(android.R.string.ok,
                new AlertDialog.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int wicht)
            {
                result.confirm();
            }
        }).setCancelable(false)
        .create()
        .show();
        return true;
    };
    });

代码来源在这里

gl


不知道为什么,但这个方法在我的应用程序中被忽略了。 - Luis A. Florit
这个链接上的答案实际上非常有效。 - David Refoua

2

3种类型的js提示框:

  • alert box - 带有一个确定按钮。
  • confirm box - 带有确定/取消按钮。
  • prompt box - 获取用户输入的值,然后选择确定/取消

  • 使用onJsAlert来处理alertBox
  • 使用onJsConfirm来处理confirmBox
  • 使用onJsPrompt来处理promptBox

我已添加了onJsConfirm的示例代码,

        webViewLayout.setWebChromeClient(new WebChromeClient(){
        @Override
        public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {

            AlertDialog dialog =new AlertDialog.Builder(view.getContext()).
                    setTitle("Confirm").
                    setIcon(ContextCompat.getDrawable(view.getContext(),R.drawable.image)).
                    setMessage(message).
                    setNegativeButton("No", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            result.cancel();
                        }
                    }).
                    setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            FlashMessage("JS");
                            result.confirm();
                        }
                    })
                    .create();
            dialog.show();
            return true;
        }
    });

0

是的,这是可能的,我曾经做过

   webview.setWebChromeClient(new WebChromeClient() {




        public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
        {
            new AlertDialog.Builder(activity)
            .setTitle("Calendário App...")
            .setMessage(message)
            .setPositiveButton(android.R.string.ok,
                    new AlertDialog.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int wicht)
                {
                    result.confirm();
                }
            }).setCancelable(false)
            .create()
            .show();
            return true;
        };
            });

1
不知道为什么,但这个方法在我的应用程序中也被忽略了。 - Luis A. Florit
1
在我看来,也许是 onJsComfirm 被调用了,而不是 onJsAlert。 - ohyes

0
@Pointy表示,由于浏览器的安全措施,这是不可能的。

这并非事实,有一些变通方法可以实现它。请参阅其他答案。 - David Refoua
这并不是事实,有办法可以实现。请查看其他答案。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接