Открытие пользовательского URL-адреса в новой вкладке с помощью среднего щелчка в Firefox

Итак, на данный момент у меня есть скрипт, который перехватывает клики мышью по тегам, модифицирует исходящую ссылку и отправляет пользователей дальше:

$("a[href*='" + someDomain + "']").bind('click keypress', function(event) {
    event.preventDefault();
    var link = this.href;
    var newLink = link + params;
    var button = event.button;
    if(button && button == 0)) {
        window.location = newLink;
    } else if(button && button === 1) {
        window.open(newLink, '_blank');
    }
});

Этот код определит, был ли это левый или средний щелчок, и либо перенаправит текущую страницу, либо откроется в новом окне/вкладке соответственно.

Насколько я вижу, код отлично работает в Chrome/IE. Однако в последней версии Firefox работает только щелчок левой кнопкой мыши.

Для среднего щелчка событие не регистрируется. Итак, моей первой мыслью было посмотреть, какое другое событие должно быть вызвано. Единственный, который я мог найти, был либо mousedown/mouseup (щелчок - это комбинация этих действий).

Используя mousedown или mouseup, я затем получаю событие, чтобы правильно зарегистрировать средний щелчок в Firefox. ОДНАКО проблема заключается в том, что Firefox отказывается открывать любые новые окна из кода javascript, который не является результатом события CLICK.

Итак .... любая подсказка, если это на самом деле возможно? Я бы предпочел не заставлять пользователя разрешать всплывающие окна или переназначать их функцию среднего щелчка, чтобы открывать в текущем окне.

Заранее благодарю за любую помощь!


person David    schedule 08.01.2013    source источник
comment
Firefox не будет запускать событие click для среднего щелчка по якорному элементу, чтобы не сломать сеть, поскольку многие сайты предполагают, что onclick запускается только для левой кнопки (поскольку это то, что делают IE и NS4). См. bugzilla.mozilla.org/show_bug.cgi?id=156137. это довольно плохое оправдание, IMO, поскольку другие новые браузеры действительно запускают его, а не запуская его, мы, разработчики, лишаем себя большого потенциала. Кроме того, в прошлый раз, когда я проверял, Opera не запускала событие click для средних кликов. Вы уверены, что мышка не работает? Это все равно должно считаться взаимодействием с пользователем.   -  person Fabrício Matté    schedule 08.01.2013
comment
if(button && button == 0)) { ‹-- в этой строке слишком много ')'...   -  person Steve Childs    schedule 19.11.2015


Ответы (1)


Однако в некоторых браузерах стандартные действия правой и средней кнопок мыши нельзя отключить или их можно отключить только путем изменения настроек браузера. Такие изменения в настройках браузера обычно влияют на все страницы, просматриваемые через браузер, и, как правило, не могут быть сделаны с помощью Javascript. Поскольку немногие пользователи захотят это сделать, это в значительной степени означает, что эти события мыши нельзя использовать в Javascript.

с http://www.unixpapa.com/js/mouse.html

person Community    schedule 08.01.2013