Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2010, 11:02
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

Эмулировать клик мыши по ссылке
Нужно сделать кликабельный блок (аннос статьи с картинкой, заголовком, кратким текстом, оформлением).
Поскольку если просто назначить блоку 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>
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2010, 11:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Накройте весь блок сверху ссылкой.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2010, 11:18
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

В этом случае нельзя будет выделять и копировать текст в блоке. Хотя если превый способ невозможен, придется так и сделать.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2010, 11:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Его и так нельзя будет выделять и копировать, если клик по блоку будет вызывать переход.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2010, 11:21
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

Можно, если проверить, выделен ли текст
Ответить с цитированием
  #6 (permalink)  
Старый 16.11.2010, 13:14
Новичок на форуме
Отправить личное сообщение для itrelease Посмотреть профиль Найти все сообщения от itrelease
 
Регистрация: 16.11.2010
Сообщений: 2

Почему бы не сделать как-то так:
$('#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;
  }
});
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2010, 16:50
Аспирант
Отправить личное сообщение для Logo Посмотреть профиль Найти все сообщения от Logo
 
Регистрация: 15.03.2008
Сообщений: 91

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клик по другому элементу (id) Nivans Элементы интерфейса 1 11.10.2010 06:34
Клик по ссылке из подгружаемого скрипта jokerbot jQuery 4 31.03.2010 20:34
Клик по ссылке в iframe kkn74 Работа 3 25.12.2009 04:57
клик по ссылке и сбивание скролла жбан Общие вопросы Javascript 3 06.05.2009 09:32
Имитация нажатия кнопки мыши Mantell Общие вопросы Javascript 3 19.02.2009 16:03