Greasy Fork is available in English.
一个模拟鼠标长按事件的Javascript库,原生js
สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/374462/645860/%E9%BC%A0%E6%A0%87%E9%95%BF%E6%8C%89-LongPress.js
function onLongPress(dom,callback,ms=1000){ if(!dom){ console.error("dom不存在"); return; }else if(dom.toString()=="[object NodeList]"){ for(let i of dom){ onLongPress(i,callback,ms) } return; } if(dom["data-Longpress"]){ return ; } dom["data-Longpress"] = "true"; function MouseUpHandler(e){ dom.mouseDownFlag = false; document.removeEventListener("mouseup",MouseUpHandler) document.removeEventListener("mousemove",MouseMoveHandler) } function MouseMoveHandler(e){ if(e.target != dom){ dom.mouseDownFlag = false; document.removeEventListener("mouseup",MouseUpHandler) document.removeEventListener("mousemove",MouseMoveHandler) } } dom.addEventListener("click",(e)=>{ if(dom.HandledLongPress){ dom.HandledLongPress = false; e.stopPropagation(); e.cancelBubble = true; e.preventDefault(); return false; } },true) let origin_click_function = dom.onclick||function(){}; dom.onclick = function(e){ if(dom.HandledLongPress){ }else{ origin_click_function(e); } } dom.addEventListener("mousedown",()=>{ dom.mouseDownFlag = true; let ts = setTimeout(()=>{ document.removeEventListener("mouseup",MouseUpHandler); document.removeEventListener("mousemove",MouseMoveHandler) if(dom.mouseDownFlag){ callback(dom); dom.mouseDownFlag = false; dom.HandledLongPress = true; } },ms); document.addEventListener("mouseup",MouseUpHandler); document.addEventListener("mousemove",MouseMoveHandler); }) }