В JavaScript
mousedown
событие, за которым следует mouseup
и click
. поэтому в событии click три из этого события выполняются. Но в моей задаче я хочу сделать другую задачу для mousedown
и click
. если кто-либо нажмите и удерживайте кнопку мыши, а затем отобразится список, и событие click не будет выполнено. , когда просто щелкните, то задача для щелчка будет выполнена. Он похож на функциональность задней клавиши хром. кому помочь. Заранее спасибо.Хотите выполнить различную задачу по событию мыши и щелчка
ответ
Для оба события, работающего в одном селекторе:
var pressTimer, longClick;
function mouseUpCheck() {
clearTimeout(pressTimer);
window.removeEventListener('mouseup', mouseUpCheck);
}
document.querySelector('.mySelector').addEventListener('mousedown', function(){
window.addEventListener('mouseup', mouseUpCheck);
pressTimer = window.setTimeout(function() {
longClick = true;
//code for longclick
},2000);
});
document.querySelector('.mySelector').addEventListener('click', function(event) {
if (longClick) {
longClick = false;
event.stopPropagation();
event.preventDefault();
return;
}
// code for simple click
});
Вы можете сделать это следующим образом:
var pressTimer, longClick;
function mouseUpCheck() {
clearTimeout(pressTimer);
window.removeEventListener('mouseup', mouseUpCheck);
}
document.querySelector('.link').addEventListener('mousedown', function(){
window.addEventListener('mouseup', mouseUpCheck);
pressTimer = window.setTimeout(function() { longClick = true; alert('long click'); },2000);
});
document.querySelector('.link').addEventListener('click', function() {
if (longClick) {
event.stopPropagation();
event.preventDefault();
longClick = false;
return;
}
alert('click');
});
<a class="link">click me</a>
У этого вопроса будет тот же самый вопрос, что и мой изначально, забыл о событии mouseup, возможно, не срабатывает, если вы отпустите мышь от первоначального элемента управления. Чтобы увидеть это в своем фрагменте, .. Если вы увеличиваете таймаут, чтобы сказать 2 секунды, mousedown на управлении, немедленно отведите мышь от управления, отпустите мышь и подождите. Вы получите «предупреждение», даже если вы не держите его в течение 2 секунд. Говоря это, я думаю, что у setTimeout есть то преимущество, что хотя бы такие ошибки не протекают, мой setInterval просочился в этот экземпляр. Добавьте мышь в объект окна, и это должен быть принятый ответ. – Keith
спасибо, обновлено –
Я пробовал это, но когда я нажимаю 1-й, он работает, но когда я нажимаю после долгого щелчка, он не работает для щелчка –
MouseDown doens't генерируют несколько событий для пуха, поэтому здесь я использовал setInterval, чтобы проверить, если мышь по-прежнему вниз.
Только что сделал быстрый мод, забыл, что мышь на элементе не срабатывает, если вы вытаскиваете из элемента. Поэтому здесь я привязываю событие к окну.
var d = document.querySelector('div');
var dtime;
var i;
d.onmousedown = function() {
window.addEventListener('mouseup', mouseUpCheck);
dtime = new Date();
i = setInterval(function() {
if (dtime) {
var t = new Date();
if (t.getTime() - dtime.getTime() >= 2000) {
dtime = null; //stop now..
console.log('2 second mousedown');
}
}
}, 50);
}
function mouseUpCheck() {
dtime = null;
window.removeEventListener('mouseup', mouseUpCheck);
clearInterval(i);
}
<div>Click Hold for 2 seconds</div>
- 1. выполнить различную задачу на кнопке списка. Нажмите
- 2. Щелкните правой кнопкой мыши по событию мыши
- 3. jQuery стрельбы по событию без щелчка
- 4. Получить позицию/кнопку мыши по событию DoubleClick
- 5. привязка функции к событию щелчка
- 6. Как выполнить задачу Java по расписанию и по требованию?
- 7. Точное положение щелчка мыши по WorldWind
- 8. Преобразование мыши позицию щелчка по данной шкале
- 9. Как увеличить масштаб по событию щелчка маркера в листе брошюры?
- 10. Хотите добавить Delay к событию Keydown
- 11. Киоск, без клавиатуры, нужен доступ к событию с правом щелчка
- 12. Свинья: выполнить задачу по завершению UDF
- 13. выполнить задачу backgroud по url в php
- 14. Хотите развернуть задачу на AWS
- 15. Как прервать поток с будущим, хотите выполнить некоторую задачу по прерыванию, выпущенному будущим
- 16. по событию клика не работает
- 17. Обнаружение щелчка мыши
- 18. Событие щелчка мыши QwtPlot
- 19. Непрерывное событие щелчка мыши
- 20. SFML Определение щелчка мыши
- 21. Записать координаты щелчка мыши
- 22. Обработка щелчка средней мыши
- 23. Найти обработчик JavaScript, подключенные к событию щелчка
- 24. создать div по событию мыши. аналогично выбору группы файлов мышью
- 25. Как выполнить задачу сборки и зависимости «по требованию» с Maven
- 26. Ajusting as3 код для запуска по событию мыши
- 27. Пакетное обнаружение щелчка мыши?
- 28. Получение JSlider-бара для перемещения по событию мыши
- 29. По событию удалить класс наведения курсора мыши из списка-item'child
- 30. Multi Threading выполняет различную задачу в одном методе запуска
MouseDown + MouseUp = Один полного щелчка. Таким образом, если событие mousedown запускается, произойдет автоматическое событие mouseup. – Prasath
да, я знаю, мне нужна другая задача для mousedown на время и нажмите. –
У вас есть обработчик событий для события 'click'? –