"FB没有定义为“FB”;内部窗口.fbSyncInit
"FB is no defined" inside window.fbAsyncInit
我正在实现一个编辑器,可以动态添加类似facebook的按钮,所以我写了以下代码:
utils.insertFacebookSdkJs = function (win) {
var document = win.document;
win.fbAsyncInit = function () {
FB.init({
appId: 'app id', // App ID
version:'v2.0',
cookie: true, // enable cookies to allow the server to access the session
xfbml: true // parse XFBML
});
// Additional initialization code here
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s); js.id = id; //js.async = true;
js.src = "//connect.facebook.net/zh_CN/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
};
$('#add').click(function(){
//add <div class="fb-like"></div>
utils.insertFacebookSdkJs(window);
});
当用户单击添加按钮时,将调用此函数。但它抛出错误:"FB未定义"。
更新:在utils.insertFacebookSdkJs函数中,我发现如果我将顶部窗口对象传递给参数"win",FB对象就可以了。但我将iframe窗口对象传递给参数"win",FB对象未定义。
更新:问题已解决。因为iframe中的facebook按钮。所以FB对象是iframe窗口中的一个字段。只需修复FB即可获胜。位于utils.insertFacebookSdkJs 的FB
试试这个版本:
utils.insertFacebookSdkJs = function () {
window.fbAsyncInit = function () {
FB.init({
appId: 'app id', // App ID
version:'v2.0',
cookie: true, // enable cookies to allow the server to access the session
xfbml: true // parse XFBML
});
// Additional initialization code here
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s); js.id = id; //js.async = true;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
};
document.getElementById('add').addEventListener('click', function() {
utils.insertFacebookSdkJs();
});
删除了不必要的变量并更改了区域设置(用于测试)。还避免使用jQuery,因为您不应该将它用于诸如click listeners imho之类的基本内容。
我在我的项目中做的几乎都是一样的,所以如果它不起作用,我预计错误会出现在不同的位置,可能需要一个测试链接。
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- issue with FB.Event.subscribe
- 调用函数内部的函数
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 在phonegap应用程序内部重定向不起作用
- 使用此选项选择父类内部的类
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- AngularJs指令,该指令创建内部有数据对象的新指令
- 如何使用内部对象构造对象
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 用Javascript修改内部标记的CSS规则
- javascript函数内部的代码用逗号而不是分号分隔
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 光线投射从内部投射时不会碰到网格
- javascript无法重新定义函数内部的全局对象
- 在不移动内部文本的情况下缩放元素的效果
- "FB没有定义为“FB”;内部窗口.fbSyncInit
- FB.api对组的POST返回GET 500(内部服务器错误)
- FB.api('/photos')在Facebook应用程序之外工作,但不在应用程序内部