美文网首页
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