将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的“不跟踪”和跟踪保护是两个独立的事情:
在偏好设置/选项>中启用不跟踪隐私> “告诉那些我不想被追踪的网站”。启用发送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...');
}
有没有人有更好的解决方案?
答案 0 :(得分:5)
一个简单的谷歌搜索引导到这个页面:https://developer.mozilla.org/en-US/Firefox/Privacy/Tracking_Protection
您应该可以在消息显示的位置或通过about:config
停用该功能。它实际上应该默认为afaik停用。
答案 1 :(得分:3)
从客户端来说,你做不到。这是Firefox的安全策略。您可以在主题:https://bugzilla.mozilla.org/show_bug.cgi?id=1226498
中阅读有关此问题的信息答案 2 :(得分:-1)
一种解决方法是在加载所有脚本资源后检查FB对象是否存在。这样一来,无论导致脚本加载失败的原因是什么,我们都可以解决:
$(window).on("load", function() {
// If Facebook SDK failed to load ...
if (typeof FB === "undefined") {
// ... then change interface/set global variable to handle missing FB
}
});