Как я могу поймать открытие ссылки

0

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

Ссылки ссылаются на внешние ресурсы, и я не могу контролировать его содержимое.

  • 0
    Ссылка на событие onclick может вам помочь.
  • 0
    <A PING> был разработан для этого и работает даже при щелчке правой кнопкой мыши ...
Теги:

3 ответа

3
Лучший ответ

Есть несколько вариантов клиентской стороны, о которых я могу думать, ни один из которых не идеален:

  • Вы можете заменить ссылку href на javascript: url, который запускал любой код, который вы хотели, а затем перешел на правильный URL (location.href= "http://example.com"). Это неприятно, так как он ломается, если пользователь делает правую кнопку мыши → новую вкладку или отключен JavaScript.

  • Вы можете добавить прослушиватель событий в событие щелчка <a>. Но это не будет вызвано щелчком правой кнопки мыши → открыть, или пользователь перейдет на вкладку и нажав клавишу ввода.

  • Вы можете использовать onunload события onunload самого документа, но это не скажет вам, куда идет пользователь, и не будет работать, если пользователь открыл новую вкладку.

Если вы просто хотите отслеживать, куда идут ваши пользователи, тогда решение на стороне сервера является единственным надежным способом. Вам нужно будет отправить пользователей на свой собственный сервер, который, в свою очередь, отправит код HTTP 302 для перенаправления браузера на правильный URL. Разумеется, это потребует больше инфраструктуры, чем вам может понадобиться.

  • 0
    Благодарю. Я постараюсь описать мою задачу. У меня есть страница с несколькими ссылками, которые я создал на сервере. Пользователь хочет открыть часть этой ссылки на новых вкладках (это важно - он не хочет терять текущее состояние страницы). Открытые пользователем ссылки должны быть скрыты. Если я правильно понимаю, я не могу использовать первый и второй варианты, так как он не работает с «новой вкладкой». И я не могу использовать третий вариант, потому что пользователь открывает ссылки в новой вкладке и сохраняет текущую страницу открытой. Может быть есть другие способы решить мою задачу? Хм ... может быть, я могу использовать CSS и скрыть все посещенные ссылки на моей странице ....
  • 1
    Да, вы могли бы сделать a:visited { display: none; } Это будет продолжаться в течение нескольких сеансов, которые вы можете или не можете хотеть. Кроме того, я не уверен, как режимы конфиденциальности различных браузеров могут повлиять на это, так как проверка :visited - это (немного неловкий) способ узнать историю пользователя.
0

Да, вы можете использовать javascript, чтобы сделать что-то вроде...

 $('a').click(function(){
    event.preventDefault();
    $(this).alert("do something");
 });
  • 0
    Работает ли это для щелчка правой кнопкой мыши и открытия ссылки для контекстного меню?
  • 0
    Спасибо за оценку ... кто бы это ни был. Вы могли бы вы. Изменить, и я считаю, что это будет работать для правой кнопки мыши.
Показать ещё 5 комментариев
0

пытаться

var links = document.getElementsByTagName('a');
for(var i = 0; i< links.length; i++) {
  links[i].onmousedown = function(e) {
    console.log(this.href, this)
    if ((e.which && e.which == 3) || (e.button && e.button == 2)) { // not sure about IE
      alert('right click');
    }
  }
}
  • 0
    Я подозреваю, что это предупреждение, если я щелкну правой кнопкой мыши по ссылке, но не открою ее на новой странице или вкладке. Это правильно ?
  • 0
    @demas, Да, но это помешает открыть контекстное меню по умолчанию, и вы можете создать собственное контекстное меню.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню