Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Facebook获取区域设置_Javascript_Jquery_Facebook_Facebook Graph Api - Fatal编程技术网

Javascript Facebook获取区域设置

Javascript Facebook获取区域设置,javascript,jquery,facebook,facebook-graph-api,Javascript,Jquery,Facebook,Facebook Graph Api,我做错了什么我试图从facebook iframe选项卡中获取用户的区域设置,以根据位置显示相关内容 <script type="text/javascript"> (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.creat

我做错了什么我试图从facebook iframe选项卡中获取用户的区域设置,以根据位置显示相关内容

    <script type="text/javascript">
        (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) return;
            js = d.createElement(s); js.id = id;
            js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=" + 'MY APP ID';
            fjs.parentNode.insertBefore(js, fjs);
        } (document, 'script', 'facebook-jssdk'));

        window.fbAsyncInit = function () {
            if (location.protocol == 'https:') {
                FB._https = true;
            };
            FB.init({
                appId: 'MY APP ID',
                status : false,
                cookie : false,
                xfbml  : true,
            width: 810
            });
            FB.Canvas.scrollTo(0,0);
            FB.Canvas.setAutoGrow();
        }
</script>
<script>
FB.login(function(response) {
    if (response.authResponse) {
        if ($.data.get('user').get('locale') = "en_GB") {
            $("a").attr("href", "URL");
        }
    }
});
</script>

我对jQuery了解不多,但这里有一些应该有效的方法:

FB.login(function(response) {
    if (response.authResponse && response.authResponse.user.locale == "en_GB") {
        $("a").attr("href", "URL");
    }
});
编辑 哦,是的。 fb sdk的加载是异步的,因此只有在调用FBAsyncint方法之后才需要使用fb命名空间。 试试这个:

window.fbAsyncInit = function () {
    if (location.protocol == 'https:') {
        FB._https = true;
    };
    FB.init({
        appId: 'MY APP ID',
        status : false,
        cookie : false,
        xfbml  : true,
        width: 810
    });
    FB.Canvas.scrollTo(0,0);
    FB.Canvas.setAutoGrow();

    FB.login(function(response) {
        if (response.authResponse && response.authResponse.user.locale == "en_GB") {
            $("a").attr("href", "URL");
        }
    });
}

(function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=" + 'MY APP ID';
    fjs.parentNode.insertBefore(js, fjs);
} (document, 'script', 'facebook-jssdk'));

请注意,FB.login试图弹出一个新窗口,因为在这段代码中,由于用户操作而没有调用该方法,浏览器可能会阻止弹出窗口。

我在Firebug中没有看到任何错误。好的,请检查我的修订答案。啊哈,现在FB.init已经被调用了-这可能表明有问题,不需要调用FB.init两次。有没有办法不使用FB.login?类似这样的?FB.getLoginStatusfunctionresponse{if response.status=='connected'{