美文网首页
JS同WebView交互

JS同WebView交互

作者: RoyAlex | 来源:发表于2018-02-27 10:09 被阅读3次

    WebView调起javascript function的方法1:
    使用webview.loadUrl("javascript:FuncName()");

    注意事项:1:必须在onPageFinished()之后再调用上面的方法。
            2:拦截alert方法的时候需要重写WebChromeClient的onJsAlert方法。
    

    下面是示例代码

    WebSettings settings = webView.getSettings();
            //允许javascript
            settings.setJavaScriptEnabled(true);
            settings.setJavaScriptCanOpenWindowsAutomatically(true);
            webView.setWebChromeClient(new WebChromeClient(){
                @Override
                public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
                    AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this);
                    b.setTitle("Alert");
                    b.setMessage(message);
                    b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            result.confirm();
                        }
                    });
                    b.setCancelable(false);
                    b.create().show();
                    return true;
                }
            });
            webView.loadUrl("file:///android_asset/framework.html");
            webView.setWebViewClient(new WebViewClient(){
                @Override
                public void onPageFinished(WebView view, String url) {
                    webView.post(new Runnable() {
                        @Override
                        public void run() {
                            webView.loadUrl("javascript:spawnNumber()");
                        }
                    });
                }
            });
        }
    

    WebView调起javascript function的方法2:
    使用webView.evaluateJavascript("javascript:func",CallBack c)来调起javascript

    注意:1:此方法只能在api 19及之后调用。
        2:此方法也需要再onPageFinished()后面调用
    

    下面是具体的代码

    webView.evaluateJavascript("javascript:spawnNumber()", new ValueCallback<String>() {
                            @Override
                            public void onReceiveValue(String s) {
                                Toast.makeText(MainActivity.this, "current api is above 19:" + s, Toast.LENGTH_SHORT).show();
                            }
                        });
    

    相关文章

      网友评论

          本文标题:JS同WebView交互

          本文链接:https://www.haomeiwen.com/subject/bgdpxftx.html