Javascript Firefox阻止Facebook Js
随着Firefox升级到42.0,我有了一些奇怪的行为 我这样调用FB.init方法:Javascript Firefox阻止Facebook Js,javascript,facebook,firefox,Javascript,Facebook,Firefox,随着Firefox升级到42.0,我有了一些奇怪的行为 我这样调用FB.init方法: FB.init({ appId: '{$appid}', status: true, cookie: true, xfbml: true, oauth: true }); 但在Firefox中,它被阻止,我得到警告: 由于启用了跟踪保护,“”处的资源被阻止。 这是默认行为,我没有设置任何额外的安全性或其他 怎么办 编
FB.init({
appId: '{$appid}',
status: true,
cookie: true,
xfbml: true,
oauth: true
});
但在Firefox中,它被阻止,我得到警告:
由于启用了跟踪保护,“”处的资源被阻止。
这是默认行为,我没有设置任何额外的安全性或其他
怎么办
编辑-在帮助和谷歌搜索之后,这是一个更大的问题:
Firefox的不跟踪和跟踪保护是两个不同的东西:
不跟踪在首选项/选项>隐私>“告诉网站我不想被跟踪”中启用。启用会发送DNT标头,但不会阻止任何请求
跟踪保护在about:config>privacy.trackingprotection.enabled中启用。启用不会发送DNT标头,但会根据断开连接的阻止列表阻止请求。因此,检测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...');
}
有谁有更好的解决方案吗?一个简单的谷歌搜索将导致此页面:
您应该能够在消息出现的地方停用该功能,或者通过
about:config
。默认情况下,它应该被禁用。从客户端,您不能。这是Firefox的安全策略。您可以在thread:中了解此问题。解决此问题的一种方法是在加载所有脚本资源后检查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
}
});
这是否发生在
私人浏览窗口中
?在我的Firefox 42.0上它可以工作。这可能是你的问题之一…嗨,你是如何解决这个问题的?我的意思是,解决方案不能只是进入about:config,因为系统的用户不会这样做…嗨,它基于客户端设置..谢谢。。由于我需要FB方法进行登录,如何自动停用此跟踪保护?通过javascript而不是用户?如果可以自动停用它,那会很奇怪,你不这么认为吗?这将使跟踪保护的整个意义变得毫无意义……因为它在默认情况下不应该被激活,但应该没有问题。我刚刚升级了Firefox,并且它在默认情况下是打开的(至少对我来说)。我相信很多用户都会保持这种状态。最好用javascript检测并向用户发出警告。。我尝试了“navigator.doNotTrack”,但这不起作用,因为这是跟踪保护!仍然在寻找至少能检测到“跟踪保护”的解决方案……升级firefox会保留您的设置,这一点也不奇怪。我也做了同样的事情,它对我有用答案在这里