前端 原生js长按事件
有勇气的牛排
1188
前端
2024-10-26 12:11:01
知止自律打卡-微信小程序APP
一款微信自律打卡小程序,支持自定义打卡项目、习惯记录、项目日记、专注计时与数据统计。自律打卡、学习打卡、读书打卡、健身打卡、运动打卡、减肥打卡、戒色打卡、养生打卡、戒烟、戒酒、戒熬夜等多种场景。万能打卡模板自由创建。可自定义每日打卡目标,记录习惯连续天数,可视化追踪成长进度。
了解产品详情 →
微信搜索「知止自律打卡」
代码案例
const longPressDuration = 3000;
function setupLongPress(element, callback) {
let timer;
const startPress = (event) => {
event.preventDefault();
timer = setTimeout(() => callback(element.id), longPressDuration);
};
const cancelPress = (event) => {
event.preventDefault();
clearTimeout(timer);
};
element.addEventListener('mousedown', startPress);
element.addEventListener('mouseup', cancelPress);
element.addEventListener('mouseleave', cancelPress);
element.addEventListener('touchstart', startPress);
element.addEventListener('touchend', cancelPress);
element.addEventListener('touchcancel', cancelPress);
}
const targetElement = document.getElementById('phil');
setupLongPress(targetElement, (id) => {
location.href = "https://www.couragesteak.com/"
});
<h2><a id="_0"></a>代码案例</h2>
<pre><div class="hljs"><code class="lang-js"><span class="hljs-comment">// 设定长按的时间阈值(毫秒)</span>
<span class="hljs-keyword">const</span> longPressDuration = <span class="hljs-number">3000</span>;
<span class="hljs-keyword">function</span> <span class="hljs-title function_">setupLongPress</span>(<span class="hljs-params">element, callback</span>) {
<span class="hljs-keyword">let</span> timer;
<span class="hljs-keyword">const</span> <span class="hljs-title function_">startPress</span> = (<span class="hljs-params">event</span>) => {
event.<span class="hljs-title function_">preventDefault</span>(); <span class="hljs-comment">// 阻止默认行为</span>
timer = <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =></span> <span class="hljs-title function_">callback</span>(element.<span class="hljs-property">id</span>), longPressDuration);
};
<span class="hljs-keyword">const</span> <span class="hljs-title function_">cancelPress</span> = (<span class="hljs-params">event</span>) => {
event.<span class="hljs-title function_">preventDefault</span>(); <span class="hljs-comment">// 阻止默认行为</span>
<span class="hljs-built_in">clearTimeout</span>(timer);
};
<span class="hljs-comment">// 添加事件监听</span>
element.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'mousedown'</span>, startPress);
element.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'mouseup'</span>, cancelPress);
element.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'mouseleave'</span>, cancelPress);
<span class="hljs-comment">// 触屏设备支持</span>
element.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'touchstart'</span>, startPress);
element.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'touchend'</span>, cancelPress);
element.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'touchcancel'</span>, cancelPress);
}
<span class="hljs-keyword">const</span> targetElement = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">'phil'</span>);
<span class="hljs-title function_">setupLongPress</span>(targetElement, <span class="hljs-function">(<span class="hljs-params">id</span>) =></span> {
location.<span class="hljs-property">href</span> = <span class="hljs-string">"https://www.couragesteak.com/"</span>
});
</code></div></pre>
评论区