所以我试图将一堆代码合并到一些不错的NameSpaced函数中,但是我很难将它们整合到一起工作。例如,我有这个(为清晰起见而编辑):
YW.FB = function() {
return {
init: function(fncSuc, fncFail) {
FB.init(APIKey, "/services/fbconnect/xd_receiver.htm");
FB.Bootstrap.requireFeatures(["Connect"]);
if(typeof fncSuc=='function') fncSuc();
},
login: function(fncSuc) {
this.FB.Connect.requireSession(function() {
if(typeof fncSuc=='function') fncSuc();
});
},
getUserInfo: function() {
var userInfo = new Object;
FB.Facebook.apiClient.users_getInfo([FB.Facebook.apiClient.get_session().uid],["name"],function(result, ex){
userInfo.name = result[0]['name'];
userInfo.uid = result[0]['uid'];
userInfo.url = FBName.replace(/\s+/g, '-');
return userInfo;
})
}
};
}();
在普通页面上,我可以这样做:
FB.init(APIKey, "/services/fbconnect/xd_receiver.htm");
FB.Bootstrap.requireFeatures(["Connect"]);
var userInfo = new Object;
FB.Facebook.apiClient.users_getInfo([FB.Facebook.apiClient.get_session().uid],["name"],function(result, ex){
userInfo.name = result[0]['name'];
userInfo.uid = result[0]['uid'];
userInfo.url = FBName.replace(/\s+/g, '-');
return userInfo;
})
它有效。
我一直在尝试:
YW.init();
YW.login();
YW.getUserInfo();
但它不起作用。我一直从YW.getUserInfo获得'FB.Facebook is undefined' 我也可能做错了。所以FB.init,FB.Facebook的东西正在使用facebook连接库。我做错了吗?
答案 0 :(得分:1)
如果您查看浏览器在Firebug或类似的Web调试器中解析的JavaScript,您会在那里看到Facebook Connect JavaScript吗?看起来它不在范围内,并且因为FB处于全球水平,这意味着它根本不在范围内。与命名空间无关。 JavaScript中的全球化无处不在。