我有一个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; });
它工作正常,我在服务器上收到ping命令。问题在于,等待XMLHttpRequest 200代码的延迟对于最终用户而言很明显。直到等待之后,浏览器的微调器才开始旋转。因此,对于用户而言,它的UX效果不佳,看起来点击没有任何作用。
在注册点击事件的同时还可以立即处理链接重定向吗?