Я бы продемонстрировал, как вы можете перехватить любой AJAX-вызов.Используя это универсальное решение, вы можете отфильтровать запросы GA и выполнить необходимые действия.
Я изменил этот ответ.
Идея этого решения заключается в измененииМетоды open
и send
прототипа объекта XMLHttpRequest
и выполняют там перехват.IIFE получает объект XMLHttpRequest
, сохраняет исходные методы-прототипы, устанавливает новые методы и вызывает оригинальные методы из новых методов.И, конечно же, делайте то, что вы хотите с данными в это время.
(function(XHR) {
//Save the original methods
var open = XHR.prototype.open;
var send = XHR.prototype.send;
//Hook new open method in order to get the url
XHR.prototype.open = function(method, url, async, user, pass) {
this._url = url;
//Call the original
open.call(this, method, url, async, user, pass);
};
//Hook here too. This will be executed just before the data is sent
XHR.prototype.send = function(data) {
if (this_url === GA_URL_CONST) //Symbolic const
SendDataToMyServer(data); //Symbolic Fn
//Call the original
send.call(this, data);
}
})(XMLHttpRequest);