升级到Firefox 42.0后,我遇到了一些奇怪的行为...
我是这样调用FB.init方法的:
FB.init({
appId: '{$appid}',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
但在Firefox浏览器中,它被阻止了,我收到了警告:
因为启用了跟踪保护,所以位于“https://connect.facebook.net/en_US/all.js”的资源已被阻止。
这是默认行为,我没有设置任何额外的安全措施之类的。
该怎么办?
编辑-在获得帮助和搜索后,发现这是一个更大的问题:
原来Firefox的Do Not Track和跟踪保护 是两个不同的东西:
Do Not Track 被启用在首选项/选项 > 隐私 > "告诉网站我不想被追踪"。启用会发送DNT标头,但它不会阻止任何请求。
跟踪保护 被启用在about:config > privacy.trackingprotection.enabled。启用不会发送DNT标头,但会基于Disconnect的拦截列表阻止请求。所以检测2并不像检查navigator.doNotTrack那样容易,因为该属性仅适用于1。
解决方案(临时)- 尝试执行FB.init,如果出错则弹出警告。
try {
FB.init({
appId: '{$appid}',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
}catch(err) {
alert('Some info for the user...');
}
有没有更好的解决方案?