Всем привет!
Есть задача, отследить нажатие на определённые ссылки на странице и записать данные по этим нажатиям в хранилище.
Предполагаемый сценарий:
- Загружается документ
- Выбираем необходимые элементы (например по классу)
- Вешаем на них обработчик
- При нажатии на ссылку, собираем необходимые данные (на какой элемент нажали, координаты клика и т.д.)
- Отправляем данные на сервер (через Ajax)
- Происходит переход по ссылке
Проблема в том, что запрос не отрабатывает (переход по ссылке происходит раньше). Подозреваю, что есть какая-то хитрая магия для решения этой задачи. Возможно есть какой-то вариант сделать так, чтобы переход происходил после выполнения Ajax запроса. К сожалению JS не мой конёк.
Дополнительно:
- Отслеживать переход через конечную страницу ("прокидывая" get переменные, делая "прокладки" с редиректами и т.д.) не подходит, хочется сделать именно по описанному сценарию (так вроде делает метрика и аналитикс)
- Поведение при нажатии на ссылке не должно меняться (тут имеется в виду что ссылки долны нормально открываться в новом окне при нажатом ctrl и т.д.).
Пробовал делать штуки такого плана:
$(document).ready(function () {
jQuery(".class_name a").click(function(){
pushClickEvent(this);
return false;
});
});
function pushClickEvent(element){
jQuery.ajax({
type: "POST",
dataType: "json",
url: "some_url",
data: "some_url",
success: function(response){
window.location = $(element).attr('href');
}
});
}
Но при таком решении появляются проблемы с открытием в новой вкладке, если делать window.open то вроде как это блокируется браузерами и решение не надёжное.