Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Эмулировать клик мыши по ссылке (https://javascript.ru/forum/events/12980-ehmulirovat-klik-myshi-po-ssylke.html)

Logo 11.11.2010 12:02

Эмулировать клик мыши по ссылке
 
Нужно сделать кликабельный блок (аннос статьи с картинкой, заголовком, кратким текстом, оформлением).
Поскольку если просто назначить блоку 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>

Kolyaj 11.11.2010 12:13

Накройте весь блок сверху ссылкой.

Logo 11.11.2010 12:18

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

Kolyaj 11.11.2010 12:19

Его и так нельзя будет выделять и копировать, если клик по блоку будет вызывать переход.

Logo 11.11.2010 12:21

Можно, если проверить, выделен ли текст

itrelease 16.11.2010 14:14

Почему бы не сделать как-то так:
$('#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;
  }
});

Logo 22.11.2010 17:50

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

Обернул весь блок ссылкой, заменив теги div на span для валидности.


Часовой пояс GMT +3, время: 03:26.