LINUX.ORG.RU

JS-ссылки и средняя кнопка мыши


0

1

Представим, что есть некая страница, где некая ссылка приводит к выполнению каких-то операций на самой странице (без перехода на другую страницу).

Пусть это будет анимированное открытие текста песни.

Как, например, здесь:

http://aruseni.alwaysdata.net/jonobacon/

При нажатии на «Lyrics» открывается текст песни. Но вот если нажать на неё же средней кнопкой мыши, то ничего интересного не получится — в новой вкладке откроется та же самая страница.

Сходу придумал два пути решения:

1. Можно в href ссылки писать хэштэг, уникальный для песни. Например #endlessdays. Соответственно, JS в таком случае может получать из адреса хэштэг и запускать во вновь открывшейся вкладке соответствующую анимацию (но при этом остаётся первая вкладка, на которой не меняется вообще ничего).

2. Можно вместо ссылки сделать какой-нибудь обычный span, стилизованный под ссылку. Тогда средний щелчок мыши не будет приводить к открытию новой вкладки. Но тут есть другой нюанс — у меня в Firefox, например, если нажать среднюю кнопку мыши, когда курсор при этом не находится над ссылкой, то происходит открытие URL, занесённого на данный момент в буфер обмена (в случае, естественно, если он там есть).

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

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

MaGIc2laNTern ()
Ответ на: комментарий от MaGIc2laNTern

то у ссылок должно быть свойство, которое бы запрещало открытие данной ссылки в новой вкладке

Убейся, я повелитель браузера, а не какой-нибудь сраный горе-девелопер, и мне решать, где должна открыться ссылка.

baverman ★★★ ()
Ответ на: комментарий от MaGIc2laNTern

то у ссылок должно быть свойство, которое бы запрещало открытие данной ссылки в новой вкладке.

Ты охренел? Если я хочу открыть ссылку в новой вкладке — это значит, что ссылка должна открыться в новой вкладке.

Miguel ★★★★★ ()

3. Ссылка должна вести на страницу со слайдером, открытым по дефолту.

Wizard_ ★★★★★ ()

Тебе заняться больше нечем чем работать над малокомунужными фичами?

anonymous_ ()

>2. Можно вместо ссылки сделать какой-нибудь обычный span, стилизованный под ссылку.

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

anonymous ()

так делай, чтобы ссылка работала и в статике

anonymous ()
Ответ на: комментарий от xpahos

и где она на моем MagicMouse?

Я считаю Джобса великим человеком. Он спас кучу народа от прирастания к единственной кнопке.

baverman ★★★ ()

средняя кнопка мыши не нужна. уже полгода не использую мышку. только тачпад, только хардкор.

nickionn ★☆ ()

1.

а) Почему то, что на первой вкладке ничего не произошло, считается недостатком? Это же и есть ожидаемое поведение — как если бы использовались статичные страницы.

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

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

2. Если это не ссылка по поведению, то не должно быть стилизовано как ссылка. Более-менее принято использовать прерывистое подчёркивание для такого (как комментарии на Хабрахабре).

anonymfus ★★★★ ()

Делай по первому варианту. Это правильно.

Если тебе нужна ссылка-«нессылка», не делай её ссылкой. // К.О.

Deleted ()
Ответ на: комментарий от stiner_rd

> <a href=«javascript: void(0);» onclick=«do_something();»>foo bar</a>

Сейчас попробовал — по щелчку средней кнопкой мыши открывается новая вкладка с адресом javascript:%20void(0);

MaGIc2laNTern ()

>1. Можно в href ссылки писать хэштэг, уникальный для песни. Например #endlessdays. Соответственно, JS в таком случае может получать из адреса хэштэг и запускать во вновь открывшейся вкладке соответствующую анимацию (но при этом остаётся первая вкладка, на которой не меняется вообще ничего).

По-моему отличный вариант. Что не так? Почему с первой вкладкой должно что-то происходить? Что я не понимаю?

sphericalhorse ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.