Heim >Web-Frontend >HTML-Tutorial >Ausführliche Erklärung zum Hinzufügen von Klickereignissen zu Bildern in HTML
Verwenden Sie zunächst den jQuery-Selektor, um das img-Element abzurufen, an das Sie das Klickereignis binden möchten. Anschließend können Sie die Klickmethode direkt oder über die Bindemethode binden. Hier finden Sie eine detaillierte Einführung in die Bindungsmethode.
jQuery-Ereignis – bind()-Methode – Definition und Verwendung
Die bind()-Methode fügt dem ausgewählten Element einen oder mehrere Ereignishandler hinzu und gibt die Ereignisfunktion an ausführen, wenn dies auftritt.
jQuery Events – bind()-Methode – Ereignisse und Funktionen an Elemente binden
Gibt einen oder mehrere Ereignishandler an, die dem ausgewählten Element hinzugefügt und ausgeführt werden sollen, wenn das Ereignis eintritt.
jQuery-Ereignis – bind()-Methode – Syntax
$(selector).bind(event,data,function)
jQuery-Ereignis – bind()-Methode – Parameterbeschreibung
Ereignis erforderlich. Gibt ein oder mehrere Ereignisse an, die dem Element hinzugefügt werden sollen. Mehrere durch Leerzeichen getrennte Ereignisse. Muss ein gültiges Ereignis sein.
Daten sind optional. Gibt zusätzliche Daten an, die an die Funktion übergeben werden sollen.
Funktion erforderlich. Gibt eine Funktion an, die ausgeführt werden soll, wenn ein Ereignis auftritt.
Beispiel:
//直接给所有img标签绑定click事件 $("img").click(function(){ alert('你点击了图片'); }) //使用bind方法绑定click事件 $("img").bind("click",function(){ alert('你点击了图片'); })
Html-IMG-Tag fügt Klickereignis hinzu
package com.topnews; import java.util.ArrayList; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.webkit.WebSettings.LayoutAlgorithm; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ProgressBar; import android.widget.TextView; import com.topnews.base.BaseActivity; import com.topnews.bean.NewsEntity; import com.topnews.service.NewsDetailsService; import com.topnews.tool.BaseTools; import com.topnews.tool.DataTools; import com.topnews.tool.DateTools; @SuppressLint("JavascriptInterface") public class DetailsActivity extends BaseActivity { private TextView title; private ProgressBar progressBar; private FrameLayout customview_layout; private String news_url; private String news_title; private String news_source; private String news_date; private NewsEntity news; private TextView action_comment_count; WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.details); setNeedBackGesture(true);// 设置需要手势监听 getData(); initView(); initWebView(); } /* 获取传递过来的数据 */ private void getData() { news = (NewsEntity) getIntent().getSerializableExtra("news"); news_url = news.getSource_url(); news_title = news.getTitle(); news_source = news.getSource(); news_date = DateTools.getNewsDetailsDate(String.valueOf(news.getPublishTime())); } private void initWebView() { webView = (WebView) findViewById(R.id.wb_details); LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); if (!TextUtils.isEmpty(news_url)) { WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true);// 设置可以运行JS脚本 // settings.setTextZoom(120);//Sets the text zoom of the page in // percent. The default is 100. settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); // settings.setUseWideViewPort(true); //打开页面时, 自适应屏幕 // settings.setLoadWithOverviewMode(true);//打开页面时, 自适应屏幕 settings.setSupportZoom(false);// 用于设置webview放大 settings.setBuiltInZoomControls(false); webView.setBackgroundResource(R.color.transparent); // 添加js交互接口类,并起别名 imagelistner webView.addJavascriptInterface(new JavascriptInterface(getApplicationContext()), "imagelistner"); webView.setWebChromeClient(new MyWebChromeClient()); webView.setWebViewClient(new MyWebViewClient()); Log.i("info", "news_url:" + news_url); Log.i("info", "news_title:" + news_title); Log.i("info", "news_source:" + news_source); Log.i("info", "news_date:" + news_date); new MyAsnycTask().execute(news_url, news_title, news_source + " " + news_date); } } private void initView() { title = (TextView) findViewById(R.id.title); progressBar = (ProgressBar) findViewById(R.id.ss_htmlprogessbar); customview_layout = (FrameLayout) findViewById(R.id.customview_layout); // 底部栏目 action_comment_count = (TextView) findViewById(R.id.action_comment_count); progressBar.setVisibility(View.VISIBLE); title.setTextSize(13); title.setVisibility(View.VISIBLE); title.setText(news_url); action_comment_count.setText(String.valueOf(news.getCommentNum())); } @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right); } private class MyAsnycTask extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... urls) { String data = NewsDetailsService.getNewsDetails(urls[0], urls[1], urls[2]); Log.i("info", "MyAsnycTask.data:" + data); return data; } @Override protected void onPostExecute(String data) { webView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null); } } // 注入js函数监听 private void addImageClickListner() { // 这段js函数的功能就是,遍历所有的img几点,并添加onclick函数,在还是执行的时候调用本地接口传递url过去 webView.loadUrl("javascript:(function(){" + "var objs = document.getElementsByTagName(\"img\");" + "var imgurl=''; " + "for(var i=0;i<objs.length;i++) " + "{" + "imgurl+=objs[i].src+',';" + " objs[i].onclick=function() " + " { " + " window.imagelistner.openImage(imgurl); " + " } " + "}" + "})()"); } // js通信接口 public class JavascriptInterface { private Context context; public JavascriptInterface(Context context) { this.context = context; } public void openImage(String img) { // String[] imgs = img.split(","); ArrayList<String> imgsUrl = new ArrayList<String>(); for (String s : imgs) { imgsUrl.add(s); Log.i("图片的URL>>>>>>>>>>>>>>>>>>>>>>>", s); } Intent intent = new Intent(); intent.putStringArrayListExtra("infos", imgsUrl); intent.setClass(context, ImageShowActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } } // 监听 private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } @Override public void onPageFinished(WebView view, String url) { view.getSettings().setJavaScriptEnabled(true); super.onPageFinished(view, url); // html加载完成之后,添加监听图片的点击js函数 addImageClickListner(); progressBar.setVisibility(View.GONE); webView.setVisibility(View.VISIBLE); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { view.getSettings().setJavaScriptEnabled(true); super.onPageStarted(view, url, favicon); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { progressBar.setVisibility(View.GONE); super.onReceivedError(view, errorCode, description, failingUrl); } } private class MyWebChromeClient extends WebChromeClient { @Override public void onProgressChanged(WebView view, int newProgress) { // TODO Auto-generated method stub if (newProgress != 100) { progressBar.setProgress(newProgress); } super.onProgressChanged(view, newProgress); } } }
// NewsDetailsService.java
package com.topnews.service; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import android.text.TextUtils; public class NewsDetailsService { public static String getNewsDetails(String url, String news_title, String news_date) { Document document = null; String data = "<body>" + "<center><h2 style='font-size:16px;'>" + news_title + "</h2></center>"; data = data + "<p align='left' style='margin-left:10px'>" + "<span style='font-size:10px;'>" + news_date + "</span>" + "</p>"; data = data + "<hr size='1' />"; try { document = Jsoup.connect(url).timeout(9000).get(); Element element = null; if (TextUtils.isEmpty(url)) { data = ""; element = document.getElementById("memberArea"); } else { element = document.getElementById("artibody"); } if (element != null) { data = data + element.toString(); } data = data + "</body>"; } catch (IOException e) { e.printStackTrace(); } return data; } }
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zum Hinzufügen von Klickereignissen zu Bildern in HTML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!