2016-09-12 3 views
1

Есть ли способ определить, является ли «mousedown» нажатием правой кнопки мыши (удерживайте палец около 1 секунды на месте) или просто обычным щелчком правой кнопки мыши?js mousedown с прикосновением

Я думаю, что хром может сделать это с помощью «ev.originalEvent.sourceCapabilities.firesTouchEvents». Но только хром.

$('#container').mousedown(function(ev) { 
    if (ev.button === 2 && ev.comesFromTouch) return false 
    //... 
} 

редактировать: текущая ситуация: примерно через один второй после того как я нажал вниз левую кнопку мыши, браузер автоматически запускает «MouseDown» событие с помощью кнопки = 2 (проверено в режиме «устройство на панели инструментов» в хроме). Я хочу отменить это.

РЕШЕНИЕ Если право MouseDown появляется между touchstart и touchend это правой кнопкой мыши на сенсорном экране.

он работает примерно так.

function onPcRight() { console.log(1);} 
function onTouchRight() { console.log(2);} 

$('#container').mousedown(function(ev) { 
    if (ev.button === BUTTON_RIGHT) { 
     if ($(this).prop('touchdown')) onTouchRight(); 
     else onPcRight(); 
    } 
}) 
.on('touchstart', function() { 
    $(this).prop('touchdown', true); 
}) 
.on('touchend', function() { 
    $(this).prop('touchdown', false); 
}); 

ответ

0

Я думаю, вы можете использовать setTimeout/clearTimeout для подсчета 1s. Псевдокод:

var global_timer = null; 
$('#container').mousedown(function(ev) { 
    if (ev.button === 2) { 
    global_timer = setTimeout(fireTouchRightClick, 1000); 
    } 
}); 
$('#container').mousemove(function(ev) { 
    cancelTouchRightClick(); 
}); 
$('#container').mouseleave(function(ev) { 
    cancelTouchRightClick(); 
}); 
$('#container').mouseup(function(ev) { 
    if (cancelTouchRightClick() && ev.button === 2) { 
    fireNormalRightClick(); 
    } 
}); 
function cancelTouchRightClick() { 
    if (global_timer) { 
    clearTimeout(global_timer); 
    global_timer = null; 
    return true; 
    } 
    return false; 
} 
function fireTouchRightClick() { 
    global_timer = null; 
    // TODO touch right click 
} 

Я также нашел репо, чтобы сделать мыши проведение на Github: https://github.com/dna2github/dna2petal/tree/master/visualization https://github.com/dna2github/dna2petal/blob/master/samples/visualization.html

Может быть, вам нужно передать тип кнопки обратного вызова mousehold событий

+0

Спасибо за ваши усилия:), но я имел в виду что-то еще. Текущая ситуация: примерно через одну секунду браузер автоматически запускает событие «mousedown» с кнопкой = 2 (проверено в режиме «панель инструментов» в хромированном режиме). Я хочу отменить это. –

Смежные вопросы