Как отловить клики "открыть в новой вкладке" в jquery.click - PullRequest
5 голосов
/ 15 июня 2009

У меня есть скрипт jquery, который прикрепляет событие click к каждой ссылке, выполняя действие при нажатии на ссылку. Это работало отлично, но я только что получил несколько отзывов о бета-тестере, которые меня смущают.

Пользователь щелкнул правой кнопкой мыши ссылку и открыл ее в новой вкладке. Когда она сделала это, jquery не перехватил щелчок. Плохой пользователь. Я воспроизвел это также с помощью cmd-click.

Есть ли способ отловить эти жесты, или это неотъемлемое ограничение?

Ответы [ 3 ]

2 голосов
/ 15 июня 2009

То есть вы хотите захватывать каждый клик? Событие правильное или среднее? Разве событие mousedown не должно сделать именно это?

Конечно, она могла бы щелкнуть правой кнопкой мыши ссылку только для «Копировать местоположение ссылки» ...

2 голосов
/ 15 июня 2009

Посмотрите, можете ли вы как-нибудь использовать плагин jQuery для правого клика:

http://abeautifulsite.net/notebook/68

Использование:

$(document).ready( function() {

    // Capture right click
    $("#selector").rightClick( function(e) {
        // Do something
    });

    // Capture right mouse down
    $("#selector").rightMouseDown( function(e) {
        // Do something
    });

    // Capture right mouseup
    $("#selector").rightMouseUp( function(e) {
        // Do something
    });

    // Disable context menu on an element
    $("#selector").noContext();

});

Что касается бита cmd-clickie, я действительно не уверен. Если это полезно, вот плагин горячих клавиш jQuery:

http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/

0 голосов
/ 15 июня 2009

Я видел код jquery.rightclick.js в firebug. Существуют модификаторы с событиями mousedown и mouseup, такие как:

клавишу Alt ctrlKey

так что вы можете использовать эти два модификатора:

if (evt.altKey || evt.ctrKey)

в jquery.rightclick.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...