我想使用 JavaScript 检测浏览器中的“防止跨站点跟踪”何时处于活动状态。
我的挑战是试图找到一种方法来检测这一点,并在用户浏览器禁用此跨站点跟踪时向用户显示警告弹出窗口。在 Safari 13 默认禁用它后,这一点变得至关重要。我相信这对于在 iframe 上使用 cookie 的人可能会有所帮助。
有一些方法,例如
和
https://gist.github.com/iansltx/18caf551baaa60b79206
试图使用不同的方法绕过此安全功能,其中一些方法不再有效。
基本上我尝试实现的是通过 iframe,尝试使用 JavaScript 检测浏览器上是否启用了“防止跨站点跟踪”。
我尝试使用此代码:
var receiveMessage = function (evt) {
if (evt.data === 'MM:3PCunsupported') {
document.getElementById('result').innerHTML = 'not supported';
} else if (evt.data === 'MM:3PCsupported') {
document.getElementById('result').innerHTML = 'supported';
}
};
window.addEventListener("message", receiveMessage, false);
但是,这个解决方案似乎不再起作用了。
您可以尝试在您的网站上使用 Google Analytics(分析)并添加代码来检测它是否加载。如果未加载,则跟踪器拦截器可能处于活动状态。
示例:
<script>
var active;
</script>
<script src="https://googletagmanager.com/…" onerror="active = 1;"></script>
<script>
if (active !== 1) {
alert('Prevent cross site tracking is disabled');
} else {
alert("Ok")
}
</script>