Запретили открывать ссылки в другом окне - как?
Вот здесь 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, время: 01:57. |