如何判断用户是否已接受Adsense GDPR授权同意?
判断Adsense GDPR授权同意状态的正确方式
你原代码的问题在于页面加载时就执行检查,但此时GDPR授权流程还没完成(用户还没操作弹窗,或者缓存还没读取),所以adsbygoogle.loaded无法反映真实的授权状态。可以通过以下两种方式解决:
方法一:监听授权状态变更事件
AdSense提供了adsense.user_consent事件,会在用户完成授权操作(同意/拒绝)或读取到缓存的授权状态时触发,能实时获取状态:
document.addEventListener('adsense.user_consent', function(event) { if (event.detail.consent === 'ACCEPT') { console.log('用户已接受GDPR授权'); } else { console.log('用户未接受GDPR授权'); } });
方法二:在AdSense初始化回调中检查
通过adsbygoogle.push的onReady回调,在AdSense脚本完成初始化、处理完授权逻辑后再判断状态:
adsbygoogle.push({ onReady: function() { if (adsbygoogle.loaded) { console.log('用户已接受GDPR授权'); } else { console.log('用户未接受GDPR授权'); } } });
注意事项
- 不要在页面加载初期直接检查
adsbygoogle.loaded,此时授权状态尚未确定; - 如果用户之前已有授权缓存,上述方法也能正确读取缓存中的状态。
内容的提问来源于stack exchange,提问作者enzo
相关产品推荐
相关产品推荐

