touchstart和touchend事件


移動互聯網是未來的發展趨勢,現在國內很多互聯網大佬都在爭取移動這一塊大餅,如微信及支付寶是目前比較成功的例子,當然還有各種APP和web運用。

由於公司的需要,最近也在開發移動web,對於一個沒有移動開發經驗的人來說,其實也是比較困惱的一件事情。對於移動web開發目前主要是基於webkit內核的瀏覽器。在webkit內核的環境下開發,你可以充分的運用html5+css3,還有它的一些私有屬性。這讓我很興奮。可是,畢竟,對於一個長期習慣pc端做固定像素開發的前端,突然轉為移動端運用html5+css3及響應式開發,還真有點不適應。更不用說移動的一些觸摸事件及一些觸摸手勢之類。這些對於一個門外漢來說還真有點蒙。

不過,知識總是有個熟悉的過程,我也相信自個能學好移動web的開發技術。下面是我對移動端的一些輕觸事件的學習。不過對於有移動開發經驗的人來說,下面我寫的知識可能比較膚淺,這樣的話,你可以跳過本文章;對於和我一樣沒啥基礎的,可以好好閱讀完。

在webkit內的觸摸事件主要有以下幾個:
touchstart---->觸摸開始
touchmove----->接觸點改變
touchend------>觸摸結束
touchcancel--->觸摸取消

下面我主要針對我日常用的比較多的touchstart,touchend兩個事件進行封裝,使得其像jQuery類庫一樣方便使用。

代碼如下:

首先是touchEvent.js文件

(function(window, undefined){
	
	var TOUCHSTART, TOUCHEND;
	
	if (typeof(window.ontouchstart) != 'undefined') {
		
		TOUCHSTART = 'touchstart';
		TOUCHEND   = 'touchend';
		
	} else if (typeof(window.onmspointerdown) != 'undefined') {
		TOUCHSTART = 'MSPointerDown';
		TOUCHEND   = 'MSPointerUp';
	} else {
		TOUCHSTART = 'mousedown';
		TOUCHEND   = 'mouseup';
	}
	
	
	function NodeFacade(node){
		
		this._node = node;
		
	}
	
	NodeFacade.prototype.getDomNode = function() {
		return this._node;
	}
	
	NodeFacade.prototype.on = function(evt, callback) {
		
		if (evt === 'tap') {
			this._node.addEventListener(TOUCHSTART, callback);
		} else if (evt === 'tapend') {
			this._node.addEventListener(TOUCHEND, callback);
		} else {
			this._node.addEventListener(evt, callback);
		}
		
		return this;
		
	}
	
	NodeFacade.prototype.off = function(evt, callback) {
		if (evt === 'tap') {
			this._node.removeEventListener(TOUCHSTART, callback);
		} else if (evt === 'tapend') {
			this._node.removeEventListener(TOUCHEND, callback);
		} else {
			this._node.removeEventListener(evt, callback);
		}
		
		return this;
	}
	
	window.$ = function(selector) {

		var node = document.querySelector(selector);

		if(node) {
			return new NodeFacade(node);
		} else {
			return null;
		}
	}

})(window);

  其次在頁面中引用該js文件

<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
	<script type="text/javascript" src="touchEvent.js"></script>
</head>
<body>
	<input type="button" class="button" value="button" />
	<script type="text/javascript">
		$('.button').on('tap', function(e) {
			e.preventDefault();
			alert('tap');
		}).on('tapend', function(e) {
			alert('tapend');
		});
	</script>
</body>
</html>

 以上,就是在學習移動端事件的小小成果。移動端的知識不比pc簡單,所以要有耐心去學習,知識才會一點點的積累。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM