在 a 标签在本页面跳转到本页面之前做埋点发送,发现 ajax 发送不出去,后来发现是 click 事件到跳转事件发生的时间间距特别小,零点几毫秒,所以 click 之后发送的 ajax 事件会被拦截抛弃掉,但是我写了个小 demo 测试下,突然发现 demo 里面的 ajax 居然能发送出去。所以我就有点迷了,到底是怎么回事呢???
<a href="https://www.baidu.com/" id="hand">点我跳转</a>
let hand = document.getElementById('hand')
hand.addEventListener('click', () => {
ajax(url)
})
function ajax(url) {
let xhr = new XMLHttpRequest()
xhr.open("GET", url, true)
return new Promise((res, rej) => {
xhr.onload = function () {
xhr.status < 300 ? res() : rej()
}
xhr.send()
})
}