Firefox阻止Facebook Js

时间:2015-11-22 14:03:18

标签: javascript facebook firefox

将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...');
    }

有没有人有更好的解决方案?

3 个答案:

答案 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

    }

});