Vue.directive('longpress', {
bind: function (el, binding, vNode) {
if (typeof binding.value !== 'function' && vNode.context !== undefined) {
let warn = `[longpress:] provided expression '${binding.expression}' is not a function, but has to be`;
console.warn(warn);
}
let bool = false
let start = (e) => {
handler(true)
}
let cancel = () => {
handler(false)
};
const handler = (e) => {
if (bool === e) {
return
}
bool = e
binding.value(e);
};
el.addEventListener("mousedown", start);
el.addEventListener("touchstart", start);
el.addEventListener("click", cancel);
el.addEventListener("mouseup", cancel);
el.addEventListener("mouseout", cancel);
el.addEventListener("touchend", cancel);
el.addEventListener("touchcancel", cancel);
}
})
<div v-longpress="longpress">监测位置:</div>
longpress(e){
console.log(e);
},