Отловить событие клика
Всем привет. На сайте нужно сделать функционал, один из элементов,это отлов внешних ссылок. И что не выходит все ссылки отлавливать. Некоторые никак не реагируют на код. Не понимаю с чем это связанно. Вот код
var a = document.querySelectorAll("a"); for (var i = 0; i < a.length; i++) { a[i].onclick = function (e) { console.log(a[i]) } } До клика, все ссылки в логе есть. Если ссылка на сайте прописана в тексте статьи, например, то такая ссылка реагирует на код, а если, скажем в меню, то нет. Ссылки у которых в href javascrupt:; в расчёт не беру. Вот страница сайта https://bolgow.ru/articles/11-obsche...ogo-opyta.html В тексте есть ссылка на яндекс. Она "работает", а в меню ссылка на тот же яндекс, нет. В чём дело может быть? |
|
Спасибо.Хоть дело и не в этом, но это помогло понять причину. Дело в структуре. В некоторых ссылках нет target.host
|
Вы там в обработчике клика используете e.target. Но target это не тот же элемент на котором висит обработчик, а тот элемент, по которому кликнули. Если там конструкция
<a href="..."> <span>Яндекс</span> </a> то target - это <span>, а <a>. Если нужен именно элемент, на котором установлен обработчик, то используйте this |
Во-первых: приведённый код вообще работать не будет - используется var, а потому i на момент клика всегда будет равна a.length.
Во-вторых: если же вы где-то там у себя уже поправили на использование target, надо было дальше читать по приведённой Белый шум ссылке - вам нужен currentTarget. Почему - объяснил voraa. |
Часовой пояс GMT +3, время: 10:33. |