JQuery: обнаружение мыши и открытие цели в новой вкладке

В настоящее время я разрабатываю простое приложение для форума. Он в основном работает от jQuery/AJAX и загружает все на одной странице; однако я знаю, что иногда пользователи хотят открывать сразу несколько тем, чтобы посмотреть их на новых вкладках при просмотре форума.

Мое решение состояло в том, чтобы обнаружить, когда щелкнули среднюю кнопку мыши и щелкнули левой кнопкой мыши, и затем выполните разные действия. Я хочу загрузить объект с помощью AJAX в окне при нажатии левой кнопки мыши, иначе загрузите его на новую вкладку.

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

Спасибо!

Ответ 1

Пожалуйста, посмотрите пример кода. Это может помочь

<script type='text/javascript'>
    jQuery(function($){
        $('a').mousedown(function(event) {
            switch (event.which) {
                case 1:
                    //alert('Left mouse button pressed');
                    $(this).attr('target','_self');
                    break;
                case 2:
                    //alert('Middle mouse button pressed');
                    $(this).attr('target','_blank');
                    break;
                case 3:
                    //alert('Right mouse button pressed');
                    $(this).attr('target','_blank');
                    break;
                default:
                    //alert('You have a strange mouse');
                    $(this).attr('target','_self"');
            }
        });
    });
</script>

Ответ 2

<a href="some url" target="_newtab">content of the anchor</a>

В javascript вы можете использовать

$('#element').mousedown(function(event) {
      if(event.which == 3) { // right click
          window.open('page.html','_newtab');
      }
})

Ответ 3

Вы также должны учитывать, что ctrl-click и cmd-click используются для открытия новых вкладок (соответственно в windows/linux и mac. Поэтому это было бы более полное решение:

jQuery.isClickEventRequestingNewTab = function(clickEvent) {
    return clickEvent.metaKey || clickEvent.ctrlKey || clickEvent.which === 2;
};

Ответ 4

    $('#element').mousedown(function(event) {
          if(event.which == 3) { // right click
              window.open("newlocation.html","");
          }
    });

Смотрите в прямом эфире http://jsfiddle.net/8CHTm/1/

Ответ 5

Действие средней кнопки мыши для открытия на новой вкладке.

Вы можете установить для целевого атрибута гиперссылки _blank, чтобы открыть новую вкладку.

<a href="#link" target="_blank">Link</a>

Вы также можете обратиться к этому вопросу Как отличить левый и правый щелчок мыши от jQuery

Ответ 6

Попробуйте "_newTab" вместо "_blank"

window.open(URL, "_newtab" );