Запретили открывать ссылки в другом окне - как?
Вот здесь http://anonym.to?http://allfreelancers.su/ средняя кнопка мыши в Firefox не работает - нельзя нажать ей на ссылку, чтобы открыть её в другом окне/табе. Работает только если нажать левой кнопкой - и тогда произойдет переход по ссылке в том же самом табе.
При этом ссылки имеют обычный формат. <a href="..."> Вопрос: Как они это сделали? |
Цитата:
|
Но всё-таки интересно - как они это делают?
|
<a href="//google.com">Google</a> <script> var link = document.querySelector('a'); link.addEventListener('click', function(event) { if (event.which == 2) { alert('Блокируем'); event.preventDefault(); } else { alert('Не блокируем'); } }); </script> |
danik.js
В данном случае - не то. Дело в том, что я с помощью DOM инспектора ставил выбранному линку атрибут onclick со своим значением - это не помогло. Создал новый свой линк (с по идее чистым onclick) - то же самое, не работает средняя кнопка. То есть оно применяется ко всем ссылкам, даже к внезапно появившимся, которых небыло в изначальной странице. И сброс атрибута onclick ничего не даёт. Так что вопрос как они это делают, остаётся. |
Firefox 19.0.2, Хром 25.0.1364.172 m, Opera 12.14 - все работает. Может у вас колесико на мышке сломалось? :)
А если посмотреть со стороны js - делегирование событий. Поэтому Цитата:
|
Цитата:
<a href="//google.com">Google</a> <button>Добавить ссылку.</button> <script> var button = document.querySelector('button'); var reference = document.querySelector('a'); button.addEventListener('click', function(event){ document.body.insertBefore(document.createTextNode(' '), this); document.body.insertBefore(reference.cloneNode(true), this); }); document.addEventListener('click', function(event){ var target = event.target; if (target.nodeName.toLowerCase() == 'a' && target.href) { if (event.which == 2) { alert('Блокируем'); event.preventDefault(); } else { alert('Не блокируем'); } } }); </script> |
Часовой пояс GMT +3, время: 17:41. |