调用js代码获取webView页面中的所有图片及点击事件
2016-11-22 17:59
751 查看
一、获取webView页面中的所有图片
关于webView初始化那些,就不做说明了,只讲js代码
1、在展示webView的activity中写一个方法和一个内部类
2、在webView的代理类的onPageFinished方法中调用
3、在初始化webView的过程中加上一句话:
如图:
这样,在webView加载完成以后,就会打印出当前网页中的所有图片的url
注:
1、不要用数据会频繁刷新的网页。如:百度网页。
我做过测试,加载百度网页的时候,打印出的图片地址,放到浏览器以后,展示的内容和手机上加载出的相同位置的图片是不一样的。因为每次刷新百度界面,展示的图片都不一样。要用内容较稳定的试。
2、注意步骤3中最后的imagelistner
——————————–分割线————————————-
点击某个图片,去另一个activity,默认展示点击的图片,同时把当前界面所有图片传过去
其他同上
关于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); } }
其他同上
相关文章推荐
- iOS WebView 如何通过js获取网页中所有图片并加入点击事件,实现浏览图片的功能
- 进击的KFC:iOS WebView 如何通过js获取网页中所有图片并加入点击事件,实现浏览图片的功能
- web view的图片添加点击事件,和获取所有图片链接
- webview 获取html中所有的图片资源并给图片添加点击事件
- 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-获取UIWebView或者WKWebView页面的左右图片链接,点击查看大图
- webview应用程序中的按钮调用html页面的js事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件
- android webview js交互, 响应webview中的图片点击事件