美文网首页
WebView JavaScript

WebView JavaScript

作者: chauI | 来源:发表于2016-11-14 14:55 被阅读54次
  • WebView开启JavaScript脚本执行。
  • WebView设置供JavaScript调用的交互接口。
  • 客户端和网页端编写调用对方的代码。

Java设置与调用js

webView.loadUrl(“javascript:methodName(parameterValues)”)

String call = "javascript:HelloWord()";
webView.loadUrl(call)

methodName是js的方法名,
parameterValues是参数。

WebView webview = (WebView) findViewById(R.id.testWebview);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);// 启动js脚本

//添加与js的交互接口,起的名称与js代码中的接口名称要一致
webview.addJavascriptInterface(new JavascriptImgInterface(), "connect");
webview.setWebViewClient(new WebViewClient() {

    @Override
    public void onPageFinished(WebView view, String url) {
        //网页加载好了之后调用js的方法
        String call = "javascript:findImg()";
        webview.loadUrl(call);
        super.onPageFinished(view, url);
    }
    
});

class JavascriptImgInterface{
        /**
         * 注意: 在Android4.2极其以上系统需要给提供js调用的方法前加入一个注释:@JavaScriptInterface;
         *  在虚拟机当中 Javascript调用Java方法会检测这个anotation,
         * 如果方法被标识@JavaScriptInterface则Javascript可以成功调用这个Java方法,否则调用不成功。
         * @param img
         */
        @JavascriptInterface
        public void showImg(String img){
            //利用js传过来的参数得到图片的地址
            Log.d("HERE", "showImg: "+img);
            Intent intent = new Intent();
            intent.putExtra("ImageUrl", img);
            intent.setClass(ArticleActivity.this, ImageShowActivity.class);
            startActivity(intent);
        }
    }

js调用Java

window.jsInterfaceName.methodName(parameterValues)

jsInterfaceName是java中设置的接口的名字,上面第四行的'connect'
methodName是调用的java中的方法名,
parameterValues是参数

String javascript ="function findImg(){"+
        "var objs = document.getElementsByTagName('img');"+
        "for(var i=0;i<objs.length;i++){"+
            "objs[i].onclick=function(){" +
                "window.connect.showImg(this.src)" +
            "}"+
        "}}";

相关文章

网友评论

      本文标题:WebView JavaScript

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