调用js代码获取webView页面中的所有图片及点击事件
来源:互联网 发布:淘宝领券链接 编辑:程序博客网 时间:2024/06/13 09:26
一、获取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); } }
其他同上
1 0
- 调用js代码获取webView页面中的所有图片及点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件 .
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- iOS WebView 如何通过js获取网页中所有图片并加入点击事件,实现浏览图片的功能
- Android点击WebView中的图片获取指定标签段的所有图片实现缩放及滑动浏览-PhotoView
- App开发:购物车
- Android Studio 常用快捷键
- linux USB驱动层次
- 使用js将简单的字符串转数字;截取字符串
- Linux配置防火墙,开启特定端口
- 调用js代码获取webView页面中的所有图片及点击事件
- Mysql转oracle之SQL区别
- Spring学习笔记一:装配Bean
- 一个循环体引发的思考
- java操作redis数据库五:Object任意类型
- Redhat VM配置
- java中数组
- AuthNumberView -- 输入验证码
- JDK源码-java.lang.instrument-第一部分-源码学习