Здесь JSFiddle поведения, которое я вижу, относящегося к среднему клику и событию click
в Chrome и FF.
'click' kinda sorta works
Подход 1: привязать обработчик click
непосредственно к элементу a
, а средний щелчок вызовет обработчик в Chrome, но не в FF.
$('div a').on('click', function(ev) {
// middle click triggers this handler
});
Подход 2: привязать делегированный обработчик click
к div
, который содержит один или несколько a
. Средний клик не будет запускать этот обработчик в Chrome или FF.
$('div').on('click', 'a', function(ev) {
// middle click doesn't trigger this handler
});
Этот подход чрезвычайно ценен, если div начинается пустым, а элементы a
заполняются позже вызовом AJAX или в результате ввода какого-либо пользователя.
'mouseup' работает
Использование mouseup
вместо click
приводит к тому, что оба подхода 1 и 2 работают в обоих браузерах.
// Approach 1 w/ mouseup
$('div a').on('mouseup', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
// Approach 2 w/ mouseup
$('div').on('mouseup', 'a', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
Здесь JSFiddle с mouseup
.
Это интересно и может быть полезно в некоторых случаях, потому что mouseup
почти click
. Но mouseup
не click
, а я после поведения click
. Я не хочу создавать hacky mousedown; setTimeout; mouseup
моделирования click
.
Я уверен, что ответ "nope", но есть ли кросс-браузерный способ вызвать средний щелчок для запуска обработчиков click
? Если нет, то в чем причины?