WebView中删除JS中confirm框上的The page at "file".....


相信在webview中调用confirm的js确认选择框的人都有过这种情况,

框顶总出现一串英文,不过在页面端就不是这样显示的


那么,我们如何在webview调用JS代码的时候,去除上面的英文呢?

其实只能通过重写方法去除.

因为webview中有方法是跟JS中的confirm对应的,

WebChromeClient->onJsConfirm方法,可以使用以下方法重写


代码:

先在asset中创建一个html页面



代码如下:

<html>
<head>
    <title>nihao</title>
</head>
<body>
<button id="bt1" οnclick="alert('fffff')">alert</button><br/>
<button id="bt2" οnclick="confirm('fffff')">confirm</button><br/>
<button id="bt3" οnclick="prompt('input something','this is text')">prompt</button><br/>
</body>
</html>

MainActivity的代码:

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;
    private static final String[] HIDE_DOM_IDS = {"head","s_tab"};
    private TextView textView;
    private Handler mHandler = new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.myweb);
        textView = (TextView) findViewById(R.id.mytv);

        WebSettings webSettings = mWebView.getSettings();
        webSettings.setSavePassword(false);
        webSettings.setSaveFormData(false);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportZoom(false);
        mWebView.setWebChromeClient(new MyWebChromeClient());

        mWebView.addJavascriptInterface(new DemoJavaScriptInterface(),"android");
        mWebView.loadUrl("file:///android_asset/page.html");

    }
    final class DemoJavaScriptInterface {
        DemoJavaScriptInterface() {}
    }

    /**
     * 继承WebChromeClient类
     * 对js弹出框时间进行处理
     *
     */
    final class MyWebChromeClient extends WebChromeClient {
        /**
         * 处理alert弹出框
         */
        @Override
        public boolean onJsAlert(WebView view,String url,
                                 String message,JsResult result) {

            textView.setText("Alert:"+message);
            //对alert的简单封装
            new AlertDialog.Builder(MainActivity.this).
                    setTitle("Alert").setMessage(message).setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            //TODO
                        }
                    }).create().show();
            result.confirm();
            return true;
        }

        /**
         * 处理confirm弹出框
         */
        @Override
        public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
            textView.setText("Confirm:"+message);

           //下面几行是加进去的,目的就是把confirm变化成alert,且去掉英文page
		   //当然,由于是一个Dialog,你可以将其改变成你需要的Dialog即可,这里就不详细谈了
            new AlertDialog.Builder(MainActivity.this).
                    setTitle("Alert").setMessage(message).setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            //TODO
                        }
                    }).create().show();
            result.confirm();//congfirm是必须的,因为要确认
			//下面注释的两句是原本confirm就需要的
			//result.confirm();
           // return super.onJsConfirm(view, url, message, result);
            return true;
        }
       
        @Override
        public boolean onJsPrompt(WebView view, String url, String message,String defaultValue, JsPromptResult result) {
            textView.setText("Prompt input is :"+message);
            result.confirm();
            return super.onJsPrompt(view, url, message, message, result);
        }
    }
}

当然自己要自定义什么对话框,自己可以确定,这里就不细说了





可以通过kongplusjun@163.com联系本人







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值