2013-04-03 2 views
1

Я делаю приложение php/html, которое показывает некоторые данные в таблице, когда пользователь щелкает в строке (<tr>). Jquery открывает эту запись.Как открыть новый триггер табуляции кнопкой прокрутки

Это код:

$.fn.linkRow = function(element) { 
    thisRow = this.find('tbody tr'); 

    thisRow.on('click', function() { 
     hrefLocation = $(this).find('td.link:first a').attr('href'); 
     if (hrefLocation) { 
      window.location.href = hrefLocation; 
     }; 
    }).addClass((thisRow.has('td.link')) ? 'pointer' : ''); 
    return this; 
}; 

Факт: Пользователь не может открыть запись в новой вкладке. Единственный способ - копия & вставить href ... И мои пользователи этого не сделают.

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

EDIT: Я имею в виду колесо мыши ... Обычно это открывает ссылку на новой вкладке.

PS: Мне нужно использовать таблицы. В какой-то момент я создам раскладку таблицы на основе CSS (для этого не требуется javascript), но я не могу сделать это в этой версии программного обеспечения.


Спасибо!

Это окончательный код:

$.fn.linkRow = function(element) { 
    thisRow = this.find('tbody tr'); 

    thisRow.not('a').on('mouseup', function(e) { 
     hrefLocation = $(this).find('td.link:first a:first').attr('href'); 
     if (hrefLocation) { 
      if (e.which == 2) { 
       window.open(hrefLocation); 
      } 
      else{ 
       window.location.href = hrefLocation; 
      } 
     }; 
    }).addClass((thisRow.has('td.link')) ? 'pointer' : ''); 
    return this; 
};

НО ... Мышь колеса щелчок мыши не работает для того, что я намерен:

Если вы нажмете на ссылку (a тег)> открыть новая вкладка

Если вы щелкните ссылку «Нет» (любой другой тег), она будет прокручиваться в зависимости от положения вашей мыши. , если вы переместите мышь вверх, она прокручивается вверх и так

Итак ... Я работаю, но мне определенно нужно сделать решение без javascript.

+1

Что в мире вы имеете в виду с помощью кнопки прокрутки? Я понятия не имею, как это происходит в истории с щелчком. – epascarello

+0

Я думаю, что получаю это - я ДУМАЮ, что он означает щелчок мышью средней кнопкой мыши (так, как нажатие с помощью «третьей кнопки мыши» (которая сопоставляется с колесом прокрутки на многих мышах) автоматически открывает обычные ссылки на новой вкладке , и он хочет повторить это в JavaScript. –

+0

Предполагая, что я прав в своем предположении выше, просмотрите сообщения, такие как http://stackoverflow.com/questions/5833928/jquery-alert-when-middle-mouse-button-clicked чтобы узнать, как определить, какая кнопка мыши была использована (вы не сможете явно открыть ее на новой вкладке, но вы можете установить цель на _blank, как уже было предложено кем-то ниже). –

ответ

2

Если вы хотите, чтобы ссылки открывались в новой вкладке, а не в одной и той же странице, вам нужно заменить

window.location.href = hrefLocation; 

с

window.open(hrefLocation); 
+0

+1 - Хотя новые вкладки или новые окна полностью зависят от браузера. – iambriansreed

+0

Спасибо ... Это работает! На самом деле мне просто нужно использовать Chrome, и у всех пользователей есть колесо мыши (четыре ... может быть, пять пользователей) ... Теперь, когда пользователь щелкает левой кнопкой, он открывается на той же вкладке, и когда пользователь нажимает колесо мыши открывается на новой вкладке. Еще раз спасибо ... –

0

Попробуйте с помощью следующего метода

$(document).scroll(function(){ 
if(!tabOpen){ 
    window.open('url', 'window name', 'window settings'); 
    tabOpen = true; 
} 
}); 
0

Я столкнулся с аналогичной проблемой несколько месяцев назад.

Либо вы переносите каждое содержимое td в нормальный a -Tag (и используйте _target = "blank"), в этом случае не требуется javascript!

...или вы используете ЯШ:

thisRow.click(function(){ 
    window.open('url', 'window name', 'window settings'); 
    return false; 
}); 
0

Чтобы открыть новое использование вкладки:

window.open(hrefLocation); 
window.open(hrefLocation,'_blank'); //Or this 
window.open(hrefLocation,'_newtab'); //Or this 

Один из них должен работать.

0

window.open() будет делать трюк, но это также зависит от конфигурации браузера

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

http://brandonaaron.net/code/mousewheel/demos

1

Изменить нажмите с MouseUp и поймать e.with со значением 2 (средняя кнопка):

$.fn.linkRow = function(element) { 
    thisRow = this.find('tbody tr'); 

    thisRow.on('mouseup', function(e) { 
     hrefLocation = $(this).find('td.link:first a').attr('href'); 
     if (hrefLocation) { 
      if (e.which == 2) { 
       window.open(hrefLocation); 
      } 
      else{ 
       window.location.href = hrefLocation; 
      } 
     }; 
    }).addClass((thisRow.has('td.link')) ? 'pointer' : ''); 
    return this; 
}; 
+0

Я тоже отлично работаю ... Добавление «e» в ... «mouseup», function(). Спасибо –

0

Я уверен, если вы хотите знать, как сделать событие среднего щелчка с jquery или если вы хотите узнать, как открыть новую вкладку, но здесь идет:

Среднее событие click:

$("tr").live('mousedown', function(e) { 
if((e.which == 2)) { 
    alert("middle button"); 
} 
    e.preventDefault(); 
}); 

Новая вкладка:

Как и все остальные говорят, используйте следующее:

window.open(href); 

С обеих средней кнопкой мыши и открытой ссылке:

$("tr").live('mousedown', function(e) { 
if((e.which == 2)) { 
    window.open(href); 
} 
    e.preventDefault(); 
}); 

EDIT: Некоторые источники: Jquery: detect if middle or right mouse button is clicked, if so, do this:

Ответ на Detect middle button click (scroll button) with jQuery также может помочь решить некоторые проблемы совместимости с IE

+0

Это именно то, что я имею в виду. Сейчас это работает. –

+0

В прошлый раз, когда я тестировал блокировщик всплывающих окон Firefox, вы не открывали новые окна на событиях «mousedown» (что показалось немного произвольным, так как он очень доволен событиями «click»), хотя в других браузерах это может быть другим. –