首頁 >web前端 >js教程 >綁定滑鼠3次點擊事件

綁定滑鼠3次點擊事件

php中世界最好的语言
php中世界最好的语言原創
2018-04-17 11:47:371755瀏覽

這次帶給大家綁定滑鼠3次點擊事件,綁定滑鼠3次點擊事件的注意事項有哪些,下面就是實戰案例,一起來看一下。

這幾天看了一下JavaScript高階程式設計中的Dom事件相關內容,同時看到網路上有關滑鼠多次點擊事件,滑鼠事件是簡單、常用的事件之一,於是便針對點擊事件進行一些小的擴展和實現,增強對Dom事件的進一步理解。其中的實現和思路是自己總結的,有什麼不對的地方還請大神們交流指正。

1、製作一個通用的事件處理模組(原生實作)

# 以下實作基於AMD定義模組方式:

/**
 * 浏览器兼容事件处理组件
 */
define(function () {
  var EventUtil = {
    // 添加事件监听
    addHandler: function (element, type, handler) {
      if (element.addEventListener) {
        element.addEventListener(type, handler, false);// DOM2级事件
      } else if (element.attachEvent) {
        element.attachEvent('on' + type, handler);// DOM2级IE事件
      } else {
        element['on' + type] = handler;// DOM0级事件
      }
    },
    // 移除事件监听
    removeHandler: function (element, type, handler) {
      if (element.removeEventListener) {
        element.removeEventListener(type, handler, false);
      } else if (element.detachEvent) {
        element.detachEvent('on' + type, handler);
      } else {
        element['on' + type] = null;
      }
    },
    // 获取事件对象
    getEvent: function (event) {
      return event ? event : window.event;
    },
    // 获取事件的目标元素
    getTarget: function (event) {
      return event.target || event.srcElement;
    },
    // 禁止事件默认行为
    preventDefault: function (event) {
      if (event.preventDefault) {
        event.preventDefault();
      } else {
        event.returnValue = false;
      }
    },
    // 禁止事件冒泡
    stopPropagation: function (event) {
      if (event.stopPropagation) {
        event.stopPropagation();
      } else {
        event.cancelBubble = true;
      }
    }
  };
  return EventUtil;
});

2、滑鼠3擊事件實作

滑鼠點擊事件涉及的事件及執行觸發順序:

mousedown:滑鼠任意鍵按下時觸發

# mouseup:釋放滑鼠按鈕時觸發

# click:點選

mousedown

mouseup

dblclick:雙擊

顯然,click是依賴dblclick的,可以考慮根據這兩個事件實現滑鼠3次連續點擊觸發執行,設計觸發dblclick後監聽click事件,如果在短時間內觸發了click事件,則構成滑鼠連續點擊3次的效果,具體實作如下原始碼: 

<p> 
  <button id="button">鼠标3击</button> 
</p>

js 程式碼

require(['eventUtil'], function (EventUtil) {
  var button = document.getElementById('button');
  click3Event(button, function (event) {
    console.log('3 click');
  });
  // 鼠标3击事件
  function click3Event(dom, fn) {
    var handler = function (event) {
      var event = EventUtil.getEvent(event),
        target = EventUtil.getTarget(event);
      var handler = function (event) {
        var event = EventUtil.getEvent(event),
          target = EventUtil.getTarget(event);
        EventUtil.removeHandler(target, 'click', handler);
        // 执行内容
        fn();
      };
      EventUtil.addHandler(target, 'click', handler);
      // 为防止双击后较长时间再次单击执行事件
      setTimeout(function () {
        EventUtil.removeHandler(target, 'click', handler);
      }, 300);
    };
    EventUtil.addHandler(dom, 'dblclick', handler);
  }

3、滑鼠n擊事件實作

由滑鼠3擊事件聯想到,如果實作n次滑鼠連擊事件觸發如何實現。想到的想法是:停用目標物件的dblclick事件,只用click事件進行連續點擊的邏輯判斷和操作,在連續的短時間內滿足點擊n次即可觸發執行,否則重新計算累加次數。具體的實作程式碼如下:

require(['eventUtil'], function (EventUtil) {
  var button = document.getElementById('button');
  nclickEvent(4, button, function (event, n) {
    console.log(n + ' click');
  });
  function nclickEvent (n, dom, fn) {
    // 禁止双击事件
    EventUtil.removeHandler(dom, 'dblclick', null);
    var n = parseInt(n) < 1 ? 1 : parseInt(n),
      count = 0,
      lastTime = 0;
    var handler = function (event) {
      var currentTime = new Date().getTime();
      count = (currentTime - lastTime < 300) ? count + 1 : 0;
      lastTime = new Date().getTime();
      if (count >= n - 1) {
        fn(event, n);
        count = 0;
      }
    };
    EventUtil.addHandler(dom, 'click', handler);
  }
});

最後給大家分享一個jquery版的程式碼

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<p id="box">234234234234234</p>
	<script src="js/jquery.min.js"></script>
	<script>
	(function(){
		var num=0,d=null;
		$('#box').click(function(){
			if(d){clearTimeout(d)}
			d=setTimeout(function(){
				num=0
			},200);
			num++;
			if(num>=3){
				alert(num+"\n ok")
			}
		})
	})();
	</script>
</body>
</html>

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:



#

以上是綁定滑鼠3次點擊事件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn