我的方案如下。我开发了一个Wordpress插件,通过以下方式调用fb.init:
window.fbAsyncInit = function() {
FB.init({
appId : WsiMyAjax.appId,
xfbml : false,
version : 'v2.0'
});
};
(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/"+WsiMyAjax.locale+"/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
稍后在脚本中我只是用来创建一个普通的发送对话框弹出窗口:
FB.ui(
{
method: 'send',
link: link,
}
问题是我无法访问的另一个插件,它已被禁用或修改,已在fb js的标题中调用:
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
当弹出url查询字符串触发我的发送对话框时,app_id为空,因此弹出窗口失败。如果弹出窗口弹出app_id时上面的行已被删除
在调用fb.ui之前有没有办法分配app_id? 有没有办法为FB变量添加前缀,以免被其他不使用appId的脚本覆盖?