Насколько я понимаю, ваше намерение состоит в том, чтобы ссылка не перенаправлялась при перемещении мыши в пределах щелчка.
Во-первых, я предполагаю, что вы не хотите, чтобы ссылка была перетаскиваемой, поэтому добавьте draggable="false"
тег.Это предотвратит события, которые могут повлиять на код за пределами того, что вы отправили (например, перенаправление / удаление ссылок).
<a id="link" href="https://google.co.uk" draggable="false">
Click/Touch and Drag/Swipe
</a>
Если это не решит вашу проблему, я собрал этот код ниже, это может быть большесложный, но он должен быть немного более устойчивым.
class Evt {
constructor($el) {
this.$el = $el;
this.active = false;
this.preventRedirect = false;
}
start(e) {
console.log('start Function');
this.active = true;
this.preventRedirect = false;
}
eventmove(e) {
if (this.active) {
console.log('move function');
this.preventRedirect = true;
}
}
end(e) {
if (this.active) {
console.log('end function');
this.active = false;
}
}
apply() {
this.$el.on({
['touchstart mousedown']: (e) => this.start(e),
['click']: (e) => { //preventing onclick only if preventRedirect is set
if (this.preventRedirect) {
e.preventDefault();
return false;
}
}
});
$("html").on({ //so that the mouse can move outside the element and still work.
['touchmove mousemove']: (e) => this.eventmove(e),
['touchend mouseup']: (e) => this.end(e)
});
}
}
var thatEvt = new Evt($('#link'));
thatEvt.apply();