Событие JavaScript Track click перед переходом по ссылке - PullRequest
0 голосов
/ 05 июля 2018

У меня есть фрагмент Javascript, который мои клиенты размещают на своих сайтах. Чтобы отслеживать клики, я создаю XMLHttpRequest, жду статуса 200 и затем распространяю клик.

Вот соответствующий код для события щелчка:

function pingServer(done) {
    var url = "http://www.example.com/api/events/?eventID=" + eventID;
    var invocation = new XMLHttpRequest();
    invocation.open('GET', url, true);
    invocation.withCredentials = true;
    invocation.onreadystatechange = function() {
        if (invocation.readyState == invocation.LOADING && invocation.status == 200) {
            (typeof done === 'function' && done());
        }
    };
    invocation.send(); 
}

// get the href
var href = e.target.href;

// ping then redirect
pingServer(function () { window.location.href = href; }); 

Это отлично работает, и я получаю пинг на моем сервере. Проблема заключается в том, что задержка в ожидании кода XMLHttpRequest 200 заметна для конечного пользователя. Вращатель браузера не начинает вращаться до тех пор, пока это не произойдет. Так что для пользователя это плохой UX и похоже, что щелчок ничего не сделал.

Существует ли более удобный для пользователя способ регистрации события щелчка при одновременной немедленной обработке перенаправления ссылки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...