Facebook HTML5-方式:未定义FB

Facebook HTML5-方式:未定义FB,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,这是我的代码-这是新的HTML5方式来包含JS FB Api: <div id="fb-root"></div> <script> (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.

这是我的代码-这是新的HTML5方式来包含JS FB Api:

    <div id="fb-root"></div>
    <script>
    (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/de_DE/all.js#xfbml=1&appId=XXXXXXXXXXXXXXXXX";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    </script>
…Firebug告诉我FB没有定义。但已成功触发window.fbAsyninit。。那么问题出在哪里呢


谢谢你的回答,很抱歉我的英语不好

我正在一个同样使用jQuery的网站上使用基于HTML5的Facebook集成

我的代码与您的代码略有不同,可能差异很重要:

if ($("#fb-root").length>0) {  
  // no window.fbAsyncInit w/o <div id="fb-root" /> being present in DOM

  // call FB.init() first
  FB.init(...); // you should pass the arguments you need for this

  // call other stuff after FB.init()
  FB.event.subscribe(...); // you should pass the arguments you need for this
}
if($(“#fb root”).length>0{
//DOM中不存在window.fbAsyncint w/o
//首先调用FB.init()
FB.init(…);//您应该为此传递所需的参数
//在FB.init()之后调用其他内容
FB.event.subscribe(…);//您应该为此传递所需的参数
}

我也有同样的问题,我可以在Firefox上使用它,尽管FireBug指出有一些错误。 我不能在Chrome上使用它,它的控制台上说FB没有定义。 然后我试着这样做,效果很好:

window.fbAsyncInit = function() {
/* FB Likes */
FB.Event.subscribe("edge.create",function(response){
    $.ajax({
        /* bla bla */
    });
});
FB.Event.subscribe("edge.remove",function(response){
    $.ajax({
        /* bla bla */
    });
});
};
(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/bs_BA/all.js#xfbml=1&appId=MY-APP-ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

这是可行的,没有像已经调用FB.init之类的错误:)

所以我必须将FB.init与我的FB应用程序ID一起使用?当我在以下行中输入我的应用程序ID时,我认为这已经足够了:js.src=“//connect.facebook.net/de#de/all.js#xfml=1&appId=xxxxxxxxxxxxxxxxxxxx”;我真的不知道你是否必须这样做,但至少排除这是一个非解决方案。
window.fbAsyncInit = function() {
/* FB Likes */
FB.Event.subscribe("edge.create",function(response){
    $.ajax({
        /* bla bla */
    });
});
FB.Event.subscribe("edge.remove",function(response){
    $.ajax({
        /* bla bla */
    });
});
};
(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/bs_BA/all.js#xfbml=1&appId=MY-APP-ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));