当前位置:Gxlcms > html代码 > html中如何给图片添加点击事件的详解

html中如何给图片添加点击事件的详解

时间:2021-07-01 10:21:17 帮助过:829人阅读

首先使用jQuery选择器获取到想要绑定click事件的img元素,然后可以直接绑定click方法,也可以通过bind方法绑定。这里详细介绍一下bind方法。

jQuery 事件 - bind() 方法 —— 定义和用法

  bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。

jQuery 事件 - bind() 方法 ——将事件和函数绑定到元素

  规定向被选元素添加的一个或多个事件处理程序,以及当事件发生时运行的函数。

jQuery 事件 - bind() 方法——语法

  1.   $(selector).bind(event,data,function)

jQuery 事件 - bind() 方法——参数描述

  event 必需。规定添加到元素的一个或多个事件。由空格分隔多个事件。必须是有效的事件。

  data 可选。规定传递到函数的额外数据。

  function 必需。规定当事件发生时运行的函数。

实例:

  1. //直接给所有img标签绑定click事件
  2. $("img").click(function(){
  3. alert('你点击了图片');
  4. })
  5. //使用bind方法绑定click事件
  6. $("img").bind("click",function(){
  7. alert('你点击了图片');
  8. })

Html 的img标签添加点击事件

  1. package com.topnews;
  2. import java.util.ArrayList;
  3. import android.annotation.SuppressLint;
  4. import android.app.Activity;
  5. import android.app.Fragment;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.graphics.Bitmap;
  9. import android.os.AsyncTask;
  10. import android.os.Bundle;
  11. import android.text.TextUtils;
  12. import android.util.Log;
  13. import android.view.View;
  14. import android.view.ViewGroup.LayoutParams;
  15. import android.webkit.WebChromeClient;
  16. import android.webkit.WebSettings;
  17. import android.webkit.WebView;
  18. import android.webkit.WebViewClient;
  19. import android.webkit.WebSettings.LayoutAlgorithm;
  20. import android.widget.Button;
  21. import android.widget.FrameLayout;
  22. import android.widget.ProgressBar;
  23. import android.widget.TextView;
  24. import com.topnews.base.BaseActivity;
  25. import com.topnews.bean.NewsEntity;
  26. import com.topnews.service.NewsDetailsService;
  27. import com.topnews.tool.BaseTools;
  28. import com.topnews.tool.DataTools;
  29. import com.topnews.tool.DateTools;
  30. @SuppressLint("JavascriptInterface")
  31. public class DetailsActivity extends BaseActivity {
  32. private TextView title;
  33. private ProgressBar progressBar;
  34. private FrameLayout customview_layout;
  35. private String news_url;
  36. private String news_title;
  37. private String news_source;
  38. private String news_date;
  39. private NewsEntity news;
  40. private TextView action_comment_count;
  41. WebView webView;
  42. @Override
  43. protected void onCreate(Bundle savedInstanceState) {
  44. // TODO Auto-generated method stub
  45. super.onCreate(savedInstanceState);
  46. setContentView(R.layout.details);
  47. setNeedBackGesture(true);// 设置需要手势监听
  48. getData();
  49. initView();
  50. initWebView();
  51. }
  52. /* 获取传递过来的数据 */
  53. private void getData() {
  54. news = (NewsEntity) getIntent().getSerializableExtra("news");
  55. news_url = news.getSource_url();
  56. news_title = news.getTitle();
  57. news_source = news.getSource();
  58. news_date = DateTools.getNewsDetailsDate(String.valueOf(news.getPublishTime()));
  59. }
  60. private void initWebView() {
  61. webView = (WebView) findViewById(R.id.wb_details);
  62. LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
  63. if (!TextUtils.isEmpty(news_url)) {
  64. WebSettings settings = webView.getSettings();
  65. settings.setJavaScriptEnabled(true);// 设置可以运行JS脚本
  66. // settings.setTextZoom(120);//Sets the text zoom of the page in
  67. // percent. The default is 100.
  68. settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
  69. // settings.setUseWideViewPort(true); //打开页面时, 自适应屏幕
  70. // settings.setLoadWithOverviewMode(true);//打开页面时, 自适应屏幕
  71. settings.setSupportZoom(false);// 用于设置webview放大
  72. settings.setBuiltInZoomControls(false);
  73. webView.setBackgroundResource(R.color.transparent);
  74. // 添加js交互接口类,并起别名 imagelistner
  75. webView.addJavascriptInterface(new JavascriptInterface(getApplicationContext()), "imagelistner");
  76. webView.setWebChromeClient(new MyWebChromeClient());
  77. webView.setWebViewClient(new MyWebViewClient());
  78. Log.i("info", "news_url:" + news_url);
  79. Log.i("info", "news_title:" + news_title);
  80. Log.i("info", "news_source:" + news_source);
  81. Log.i("info", "news_date:" + news_date);
  82. new MyAsnycTask().execute(news_url, news_title, news_source + " " + news_date);
  83. }
  84. }
  85. private void initView() {
  86. title = (TextView) findViewById(R.id.title);
  87. progressBar = (ProgressBar) findViewById(R.id.ss_htmlprogessbar);
  88. customview_layout = (FrameLayout) findViewById(R.id.customview_layout);
  89. // 底部栏目
  90. action_comment_count = (TextView) findViewById(R.id.action_comment_count);
  91. progressBar.setVisibility(View.VISIBLE);
  92. title.setTextSize(13);
  93. title.setVisibility(View.VISIBLE);
  94. title.setText(news_url);
  95. action_comment_count.setText(String.valueOf(news.getCommentNum()));
  96. }
  97. @Override
  98. public void onBackPressed() {
  99. super.onBackPressed();
  100. overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
  101. }
  102. private class MyAsnycTask extends AsyncTask<String, String, String> {
  103. @Override
  104. protected String doInBackground(String... urls) {
  105. String data = NewsDetailsService.getNewsDetails(urls[0], urls[1], urls[2]);
  106. Log.i("info", "MyAsnycTask.data:" + data);
  107. return data;
  108. }
  109. @Override
  110. protected void onPostExecute(String data) {
  111. webView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
  112. }
  113. }
  114. // 注入js函数监听
  115. private void addImageClickListner() {
  116. // 这段js函数的功能就是,遍历所有的img几点,并添加onclick函数,在还是执行的时候调用本地接口传递url过去
  117. webView.loadUrl("javascript:(function(){" + "var objs = document.getElementsByTagName(\"img\");" + "var imgurl=''; "
  118. + "for(var i=0;i<objs.length;i++) " + "{" + "imgurl+=objs[i].src+',';" + " objs[i].onclick=function() " + " { "
  119. + " window.imagelistner.openImage(imgurl); " + " } " + "}" + "})()");
  120. }
  121. // js通信接口
  122. public class JavascriptInterface {
  123. private Context context;
  124. public JavascriptInterface(Context context) {
  125. this.context = context;
  126. }
  127. public void openImage(String img) {
  128. //
  129. String[] imgs = img.split(",");
  130. ArrayList<String> imgsUrl = new ArrayList<String>();
  131. for (String s : imgs) {
  132. imgsUrl.add(s);
  133. Log.i("图片的URL>>>>>>>>>>>>>>>>>>>>>>>", s);
  134. }
  135. Intent intent = new Intent();
  136. intent.putStringArrayListExtra("infos", imgsUrl);
  137. intent.setClass(context, ImageShowActivity.class);
  138. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  139. context.startActivity(intent);
  140. }
  141. }
  142. // 监听
  143. private class MyWebViewClient extends WebViewClient {
  144. @Override
  145. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  146. return super.shouldOverrideUrlLoading(view, url);
  147. }
  148. @Override
  149. public void onPageFinished(WebView view, String url) {
  150. view.getSettings().setJavaScriptEnabled(true);
  151. super.onPageFinished(view, url);
  152. // html加载完成之后,添加监听图片的点击js函数
  153. addImageClickListner();
  154. progressBar.setVisibility(View.GONE);
  155. webView.setVisibility(View.VISIBLE);
  156. }
  157. @Override
  158. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  159. view.getSettings().setJavaScriptEnabled(true);
  160. super.onPageStarted(view, url, favicon);
  161. }
  162. @Override
  163. public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
  164. progressBar.setVisibility(View.GONE);
  165. super.onReceivedError(view, errorCode, description, failingUrl);
  166. }
  167. }
  168. private class MyWebChromeClient extends WebChromeClient {
  169. @Override
  170. public void onProgressChanged(WebView view, int newProgress) {
  171. // TODO Auto-generated method stub
  172. if (newProgress != 100) {
  173. progressBar.setProgress(newProgress);
  174. }
  175. super.onProgressChanged(view, newProgress);
  176. }
  177. }
  178. }

// NewsDetailsService.java

  1. package com.topnews.service;
  2. import java.io.IOException;
  3. import org.jsoup.Jsoup;
  4. import org.jsoup.nodes.Document;
  5. import org.jsoup.nodes.Element;
  6. import android.text.TextUtils;
  7. public class NewsDetailsService {
  8. public static String getNewsDetails(String url, String news_title,
  9. String news_date) {
  10. Document document = null;
  11. String data = "<body>" +
  12. "<center><h2 style='font-size:16px;'>" + news_title + "</h2></center>";
  13. data = data + "<p align='left' style='margin-left:10px'>"
  14. + "<span style='font-size:10px;'>"
  15. + news_date
  16. + "</span>"
  17. + "</p>";
  18. data = data + "<hr size='1' />";
  19. try {
  20. document = Jsoup.connect(url).timeout(9000).get();
  21. Element element = null;
  22. if (TextUtils.isEmpty(url)) {
  23. data = "";
  24. element = document.getElementById("memberArea");
  25. } else {
  26. element = document.getElementById("artibody");
  27. }
  28. if (element != null) {
  29. data = data + element.toString();
  30. }
  31. data = data + "</body>";
  32. } catch (IOException e) {
  33. e.printStackTrace();
  34. }
  35. return data;
  36. }
  37. }

以上就是html中如何给图片添加点击事件的详解的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行