【问题标题】:Can JavaScript tell whether Tracking Protection is enabled in Firefox?JavaScript 能否判断 Firefox 中是否启用了跟踪保护?
【发布时间】:2017-04-07 10:09:04
【问题描述】:

所以我决定尝试使用 Google Optimize 进行转换测试,并且与其他工具一样,它通过 JavaScript 交换内容。

为避免闪烁行为,Google 建议添加一个设置 opacity:0 的脚本;整个页面直到

  • 来自 Google Analytics 的回调到达,表示页面修改已完成
  • 超时(默认为 4000 毫秒)。

回调依赖于 analytics.js 来执行。

在 Firefox 中启用跟踪保护后,Google Analytics 被阻止,因此回调永远不会到达。因此,跟踪保护功能的用户在每次页面加载时都会遇到 4000 毫秒的灰屏,等待来自 GA 的回调,而该回调永远不会到来。这显然是不可取的。

现在,我想为被 Google Analytics(分析)屏蔽的用户完全移除灰屏。但是我没有运气想出一个可以评估浏览器是否允许加载分析的条件。有没有办法提前告诉这个?

解决方案不能基于从 analytics.js 中检查代码或超时,因为这些正是我试图规避的事情。

【问题讨论】:

  • “但是我没有运气想出一个可以评估浏览器是否允许加载分析的条件。有没有办法提前告诉这个?”如果加载失败,进行回调的能力是否足够?
  • 这取决于回调被触发的速度。最好在页面的其余部分加载之前完成整个事情。

标签: javascript firefox google-analytics


【解决方案1】:

有什么办法可以提前告知吗?

有点,但很尴尬。您需要向被跟踪保护阻止的域发出蜜罐请求,并查看它是否返回异常或空响应正文(某些阻止程序足够聪明,可以返回“空”广告/分析脚本)。如果是这样,您可以“提前”告知浏览器不允许通过某些请求,并缩短渲染延迟。

您需要尽早分派此请求,以免其他请求(图片、广告资源、脚本)消耗 HTTP 资源池并​​锁定您的请求无法及时完成(或失败)。

您还可以通过创建具有类似“.advert”类的元素,将其插入 DOM,并查看它是否在一帧时间内显示为无显示,以同步方式测试通用广告拦截器。这仍然是异步的,但会更加可靠。

不过,它仍然不理想,而且您可能会时不时地得到误报。涉及 DOM 更改的 A/B 测试应该从服务器端运行,而不是笨拙的侧载脚本。

【讨论】:

    【解决方案2】:

    您可以通过稍微修改添加到页面的跟踪 sn-p 以添加错误处理程序来检测 Google Analytics 是否在事后被阻止或不可用。

    在 sn-p 中,在a.async=1; 之后,添加a.onerror=i.gaFailedToLoad; 或类似名称。这将导致函数 window.gaFailedToLoad 在 Google Analytics 完全被阻止时运行。

    这不会在更高级的阻止程序上运行,例如 uBlock Origin,它将分析请求替换为绝育版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-01
      • 2018-05-10
      • 2015-12-15
      • 2011-09-24
      • 2012-04-28
      • 2010-10-19
      • 1970-01-01
      • 2016-02-27
      相关资源
      最近更新 更多