gpt4 book ai didi

javascript - 处理 Ghostery 代理人

转载 作者:行者123 更新时间:2023-11-30 05:37:11 27 4
gpt4 key购买 nike

Ghostery 实现模拟脚本(代理),这样页面就不会在期望跟踪代码的逻辑上失败。

在我的例子中,我必须编写代码来跟踪 Assets 和出站点击。通常的做法是检查跟踪代码是否已加载(在我的例子中是 _gat 由 ga.js 公开),但如果使用代理,此检查将通过。

对于一些很好且符合预期的用例,但我们在这里处理链接。为了确保链接实际记录到 GA,我将一个函数推送到 _gaq,该函数(假设 ga.js 已正确加载)将被执行。

对于 Ghostery,情况并非如此。我得到的链接不会触发,因为带有 window.location.href = url 的函数不会被执行。

当我查看代理时,我发现它可以为我更改位置,但我必须执行 _gaq.push(['_link', url])

我发布了一个 issue并得到了开发人员不应将功能绑定(bind)到第三方脚本的回应。我明白了,这就是为什么在这样做之前我检查了 _gat 是否存在。

最后,我不得不为 Ghostery 做一个特例,并附上他们奇怪的推送,以便链接可以使用它。

您可以在 gist 中查看完整的实现.如果您想重用它并与 IE8 兼容,请确保为 String.trim() 包含一个 polyfill。

我应该如何编写不以任何方式依赖跟踪代码的自定义跟踪逻辑?

使用 timeout 更改 url 是不可能的,因为它可能会破坏慢速连接上的命中。

此外,戳 _gat 对象不是可靠的方法,因为依赖第三方脚本是不好的。

最佳答案

Web 浏览器目前正在构建一个功能来解决这个问题: https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon

这不会在几个月内广泛实现,敬请期待。现在,只需添加一个 setTimeout(function(){location.href=url}, 100) 来捕获错误并且链接仍然有效。

关于javascript - 处理 Ghostery 代理人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22969297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com