2017-04-07 54 views
1

所以我决定尝试Google Optimize进行转换测试,并且像其他工具一样,它通过JavaScript交换东西。JavaScript可以告诉Firefox是否启用了Tracking Protection功能吗?

为避免闪烁行为,Google建议您添加一个设置不透明度的脚本:0;对于直到

  • 整个网页从谷歌Analytics(分析)的回调到达信号该页面的修改已经完成
  • 超时被击中(4000ms默认)。

上的analytics.js回调依赖执行。

在Firefox中启用跟踪保护功能后,Google Analytics(分析)会被阻止,因此回叫将永远不会到达。因此,跟踪保护功能的用户在每个页面加载时都会显示4000ms的灰色屏幕,等待GA不会回来的回调。这显然远非理想。

现在我想为Google Analytics屏蔽的用户完全删除greyscreen。但我没有任何运气来提出一个条件,可以评估浏览器是否允许 Analytics加载。有什么办法可以提前说明这一点吗?

该解决方案无法基于检查来自analytics.js的代码或超时,因为这些正是我试图规避的事情。

+0

“但是我还没有碰到任何可以评估浏览器是否允许Google Analytics加载的条件,有什么方法可以提前说明吗?”如果加载失败,能否进行回调就足够了? –

+0

这将取决于回调触发的速度。最好在整个页面加载之前完成整个事情。 – user2340243

回答

1

有什么办法提前告诉这个吗?

一种,但它很尴尬。您需要向被Tracking Protection阻止的域发出蜜罐请求,并查看它是否返回异常或空的响应主体(某些拦截器足够智能以返回“空”广告/分析脚本)。如果确实如此,则可以“早点”告诉浏览器不会通过某些请求,并缩短渲染延迟时间。

您将需要尽早调度此请求,以便其他请求(图片,广告资产,脚本)不会占用HTTP资源池并锁定您的请求以及时完成(或失败) 。

您也可以通过创建一个类似'.advert'的元素,将其插入到DOM中,然后查看它是否在帧的时间内被赋予display-none,来以同步方式测试通用adblockers。这仍然是异步的,但它会更加可靠。

尽管如此,它仍然不够理想,而且你可能会不时得到误报。涉及DOM更改的A/B测试应该从服务器端运行,而不是笨拙的sideloaded脚本。

1

您可以通过稍微修改您添加到页面以添加错误处理程序的跟踪代码来检测Google Analytics是否被阻止或以其他方式无法使用。

在该片段中,在a.async=1;之后,添加a.onerror=i.gaFailedToLoad;或类似内容。这会导致功能window.gaFailedToLoad在Google Analytics被完全屏蔽的那一刻运行。

这不会在更高级的阻止程序上运行,例如uBlock Origin,它会用一个中性版本替换分析请求。

相关问题