您的位置:首页 > 移动开发

调用js代码获取webView页面中的所有图片及点击事件

2016-11-22 17:59 751 查看
一、获取webView页面中的所有图片

关于webView初始化那些,就不做说明了,只讲js代码

1、在展示webView的activity中写一个方法和一个内部类

// 添加自定义的js
public void addLocalJs() {
webView.loadUrl("javascript:(function(){ " + "var objs = document.getElementsByTagName(\"img\");"
+ " var array=new Array(); " + " for(var j=0;j<objs.length;j++){ " + "array[j]=objs[j].src;" + " }  "
+ "window.imagelistner.getImage(array);   })()");
}


// 自定义的本地js方法
private class JsInterface {
private Context context;

public JsInterface(Context context) {
this.context = context;
}

@JavascriptInterface
public void getImage(String[] urls) {

Log.i("chen", "========进入js方法========");

if (urls != null && urls.length > 0) {
for (int i = 0; i < urls.length; i++) {
Log.i("===" + i + "===", urls[i]);
}
}
}
}


2、在webView的代理类的onPageFinished方法中调用

@Override
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);
Log.i("chen", "加载完成-----" + url);
view.getSettings().setBlockNetworkImage(false);

addLocalJs();

}


3、在初始化webView的过程中加上一句话:

webView.addJavascriptInterface(new JsInterface(context), "imagelistner");


如图:



这样,在webView加载完成以后,就会打印出当前网页中的所有图片的url

注:

1、不要用数据会频繁刷新的网页。如:百度网页。

我做过测试,加载百度网页的时候,打印出的图片地址,放到浏览器以后,展示的内容和手机上加载出的相同位置的图片是不一样的。因为每次刷新百度界面,展示的图片都不一样。要用内容较稳定的试。

2、注意步骤3中最后的imagelistner



——————————–分割线————————————-

点击某个图片,去另一个activity,默认展示点击的图片,同时把当前界面所有图片传过去

// 添加自定义的js
public void addLocalJs() {
blogWeb.loadUrl("javascript:(function(){ " + "var objs = document.getElementsByTagName(\"img\");"
+ " var array=new Array(); " + " for(var j=0;j<objs.length;j++){ " + "array[j]=objs[j].src;" + " }  "
+ "for(var i=0;i<objs.length;i++){"
+ "objs[i].onclick=function(){  window.imagelistner.openImage(this.src,array);" + "}  " + "}    })()");
}


// 自定义的本地js方法
private class JsInterface {
private Context context;

public JsInterface(Context context) {
this.context = context;
}

@JavascriptInterface
public void openImage(String nowUrl, String[] urls) {
//nowUrl是点击的图片的url,urls是当前界面的所有图片的url
Intent intent = new Intent(context, ShowWebImageActivity.class);
......
......
......
context.startActivity(intent);
}

}


其他同上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: