Как открыть веб-страницу в новой вкладке с помощью javascript и среднего клика - PullRequest
1 голос
/ 23 января 2012

У меня есть якорь внутри элемента списка

<li>
    <a href="page"></a>
    <span>description</span>
    <span>count</span>
</li>

Используя javascript, при каждом нажатии элемента списка в окне открывается ссылка на якорь.

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

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

Что ты думаешь?

РЕДАКТИРОВАТЬ : обновлен HTML для более точного описания. Якорь не единственный элемент в списке

Ответы [ 3 ]

0 голосов
/ 25 января 2012

Хорошо, нет, говорящие :), я понял, как это сделать.

С помощью JS / jQuery я могу определить, какая кнопка нажата.Используя это, я могу изменить целевое значение на якоре на «_blank», только когда нажата средняя кнопка.

0 голосов
/ 25 января 2012

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

$('ul').on('click', 'li', function(e){
    if(e.which == 2){
        var newWindow = $(this).find('a').attr('href');
        window.open(newWindow, 'newWindow');
        e.preventDefault();
    }
});

Вот и все. jQuery нормализует значения event.button до event.which, чтобы вы могли надежно определять средние щелчки. Тогда просто откройте новое окно. Конечно, независимо от того, попадает ли это в новую вкладку или в новые окна, полностью зависит от настроек браузера пользователя.

0 голосов
/ 23 января 2012

Вы хотите, чтобы элемент списка функционировал как ссылка. Самый простой и надежный способ сделать это - избавиться от JavaScript и применить CSS, чтобы ссылка заполнила элемент списка. Затем любой щелчок по элементу списка сначала попадет по ссылке. Listamatic имеет много примеров .

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