jQuery-Extensions-touchJS

jQuery-Extensions-touchJS是一个非常简单的jQuery touch扩展,用于适配移动端的常用touch操作(点击tab、长按longPress、滑动left right up down)

اعتبارا من 08-11-2022. شاهد أحدث إصدار.

لا ينبغي أن لا يتم تثبيت هذا السكريت مباشرة. هو مكتبة لسكبتات لتشمل مع التوجيه الفوقية // @require https://update.greatest.deepsurf.us/scripts/454450/1114710/jQuery-Extensions-touchJS.js

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل Stylus لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتتمكن من تثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

(لدي بالفعل مثبت أنماط للمستخدم، دعني أقم بتثبيته!)

// ==UserScript==
// @name         jQuery-Extensions-touchJS
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  jQuery-Extensions-touchJS是一个非常简单的jQuery touch扩展,用于适配移动端的常用touch操作(点击tab、长按longPress、滑动left right up down)
// @author       tutu辣么可爱(greasyfork)/IcedWatermelonJuice(github)
// @grant        none
// ==/UserScript==
(function($) {
	if (typeof $ !== "function" && typeof jQuery !== "function") {
		console.log("jQuery-Extensions-touchJS 缺少jQuery依赖")
		return false;
	}
	$.fn.touch = function(v, fn) {
		// 预处理
		var defFn = function() {
				return false
			},
			fnMap = {
				"def": defFn,
				"left": defFn,
				"right": defFn,
				"top": defFn,
				"down": defFn,
				"tap": defFn,
				"longPress": defFn
			};
		if (typeof v === "string" && typeof fn === "function" && fnMap.hasOwnProperty(v)) {
			fnMap[v] = fn;
		} else if (typeof v === "object" && !fn) {
			fnMap = $.extend({}, fnMap, v);
		}
		// 正式处理
		if (v) {
			var t = $(this),
				i = -1,
				x = -1,
				x1, x2, y1, y2;
			t[0].addEventListener('touchstart', ts, false);
			t[0].addEventListener('touchmove', tm, false);
			t[0].addEventListener('touchend', te, false);

			//具体实现
			function init(e, flag) { //初始化
				if (flag !== false) {
					e = e || window.event
					e.preventDefault();
				}
				clearTimeout(x);
				clearTimeout(i);
				x = -1, i = -1;
				return e;
			}

			function dir(x1, y1, x2, y2) { //判方向
				if (Math.abs(y2 - y1) < Math.abs(x2 - x1)) {
					if (x2 > x1) {
						return "right"
					} else {
						return "left"
					}
				} else {
					if (y2 > y1) {
						return "down"
					} else {
						return "up"
					}
				}
				return "def"
			}

			function ts(e) { //touchstart
				var e = init(e);
				x1 = e.changedTouches[0].clientX;
				y1 = e.changedTouches[0].clientY;
				console.log("ts " + x1 + "," + y1)
				i = setTimeout(function() {
					i = -1;
					fnMap["longPress"]();
				}, 600)
			}

			function tm(e) { //touchmove
				var e = e || window.event;
				x2 = e.changedTouches[0].clientX;
				y2 = e.changedTouches[0].clientY;
				console.log("tm " + x2 + "," + y2)
				if (Math.abs(x1 - x2) > 10 || Math.abs(y1 - y2) > 10) {
					init(e);
					fnMap[dir(x1, y1, x2, y2)]()
				}

				// x = setTimeout(function() {
				// 	fnMap[dir(x1, y1, x2, y2)]
				// }, 200);
			}

			function te(e) { //touchend
				console.log("te")
				var e = e || window.event;
				e.preventDefault();
				if (i >= 0) {
					fnMap["tap"]();
				}
				init(e, false)
			}
		}
		return $(this)
	}
})(jQuery);