html按键使用touch,如何在html中自定义touch事件

本文探讨了一种在APP项目中用touch事件替换onclick事件的优化策略,通过创建一个名为tap的方法,监听touchstart和touchend事件来模拟点击行为。作者实现了将tap方法绑定到DOM元素原型上,允许直接在HTML中调用ontap属性来执行回调函数,简化了代码并提高了移动端交互的响应速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.正在做app的项目,项目中有很多onclick事件,我有想法使用touch事件代替,因为有很多处需要做修改,在想能否简单的实现,在dom元素原型上绑定类似于onclick事件的实现。

变为

tap方法

function tap(ele, touchFn) {

var SupportsTouches = ("createTouch" in document),//判断是否支持触摸

StartEvent = SupportsTouches ? "touchstart" : "mousedown",//支持触摸式使用相应的事件替代

EndEvent = SupportsTouches ? "touchend" : "mouseup";

var startTime = null,

endTime = null;

ele.addEventListener(StartEvent, function (e) {

startTime = e.timeStamp

})

ele.addEventListener(EndEvent, function (e) {

endTime = e.timeStamp

// console.log(EndEvent+'间距='+(endTime-startTime))

if (endTime - startTime < 500) {

touchFn();

}

})

}

2.尝试了可以定义到原型上,非我所要

Object.prototype.tap1 = tap;

可以这样使用

var btn = document.getElementById('btn1');

tap1(btn, function() {

alert(1)

})

3.问,我如何绑定原型,设置公共的方法函数,可以使得在html中可以这样使用

更新- 2018.7.19

HTMLElement.prototype.ontap = function (fn) {

if (this.getAttribute("ontap")) {

var FnStr = this.getAttribute("ontap").split('(')[0];

console.log(FnStr);

}

var ele = this;

var SupportsTouches = ("createTouch" in document),//判断是否支持触摸

StartEvent = SupportsTouches ? "touchstart" : "mousedown",//支持触摸式使用相应的事件替代

EndEvent = SupportsTouches ? "touchend" : "mouseup";

var startTime = null,

endTime = null;

ele.addEventListener(StartEvent, function (e) {

startTime = e.timeStamp

})

ele.addEventListener(EndEvent, function (e) {

endTime = e.timeStamp

// console.log(EndEvent+'间距='+(endTime-startTime))

if (endTime - startTime < 500) {

fn();

}

})

};

document.querySelector('button').ontap(function () {

alert(1)

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值