跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教, a 标签在本标签页面切换之前做埋点
未分類
1 12 月 2020

请教, a 标签在本标签页面切换之前做埋点

请教, a 标签在本标签页面切换之前做埋点

資深大佬 : BUappend 3

在 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()        }) } 

大佬有話說 (6)

  • 資深大佬 : seki

    页面跳转和发请求是两个并行的事情,谁先谁后都是有可能的

    这种情况就需要找一个不被页面跳转销毁的地方暂存一下数据,比如如果跳转过去的是自家页面的话,用 session storage 之类的

  • 主 資深大佬 : BUappend

    @seki 为啥我写的这个能发出去呢

  • 資深大佬 : Ptu2sha

    看看人家访问系统怎么写的

  • 資深大佬 : des

    要不要试试这个?
    https://www.w3schools.com/tags/att_a_ping.asp

  • 主 資深大佬 : BUappend

    @des 感谢,但是这个 IE 和 safari 不支持呀

  • 資深大佬 : ivank

    你代码里面做成了 promise 版本的肯定可以啊 请求发送成功后才跳转的 跳转肯定有延迟感,不过你可以了解下 sendBeacon

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具