🏠 Home 

Greasy Fork is available in English.

鼠标长按-LongPress

一个模拟鼠标长按事件的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);
})
}