Эмулировать клик мыши по ссылке
Нужно сделать кликабельный блок (аннос статьи с картинкой, заголовком, кратким текстом, оформлением).
Поскольку если просто назначить блоку onclick с переходом, то навигация с попыткой открыть ссылку в новой вкладке приведет к неожиданным результатам, возникла мысль сделать ссылкой один из элементов в статье, и "перекидывать" событие клика с блока на ссылку, т.е. генерировать клик с зажатыми управляющими клавишами. Возможно ли такое? Пробую так, но firefox работает только если dispatchEvent вызвано из консоли firebug, а opera игнорирует ctrlKey и shiftKey
$('#wrapper').click(function (event) {
var evt = document.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, window, 1,
0, 0, 0, 0, true, false,
false, false, 0, null);
$('#ref')[0].dispatchEvent(evt);
})
<div id="wrapper" style="background:#f00; height:30px"></div> <a href="http://ya.ru" id="ref">ya.ru</a> |
Накройте весь блок сверху ссылкой.
|
В этом случае нельзя будет выделять и копировать текст в блоке. Хотя если превый способ невозможен, придется так и сделать.
|
Его и так нельзя будет выделять и копировать, если клик по блоку будет вызывать переход.
|
Можно, если проверить, выделен ли текст
|
Почему бы не сделать как-то так:
$('#wrapper').click(function (event) {
var link = $('#ref')[0],
target = link.getAttribute('target'),
href = link.getAttribute('href');
if( target == '_blank'){
window.open(href);
} else {
window.location = href;
}
});
|
См внимательнее задачу. Потому что если _пользователь_ захочет открыть страницу на новой вкладке, зажав соответствующую клавишу, это не обработается.
Обернул весь блок ссылкой, заменив теги div на span для валидности. |
| Часовой пояс GMT +3, время: 09:31. |