我的网站上有许多小部件依赖于运行第三方JavaScript来创建它们。例如,我有一个Facebook评论框和一个Twitter“推特”按钮。这两件事都需要我运行一些JavaScript来创建小部件。例如,对于Facebook评论框,他们的JavaScript转换
<fb:comments numposts="10" width="425" publish_feed="true"></fb:comments>
进入全功能的Facebook iframe小部件。如果我想静态地创建这些元素,这可以正常工作,但现在我有兴趣在以后动态构建这样的元素。有没有一些简单的方法,例如,重新评估Facebook提供的http://connect.facebook.net/en_US/all.js文件,以便在运行中构建其中一个小部件?
答案 0 :(得分:1)
可能没有记录,但查看该来源,它有:
FB.Array.forEach(FB.XFBML._tagInfos, function (f) {
if (!f.xmlns) f.xmlns = 'fb';
var g = FB.XFBML._getDomElements(c, f.xmlns, f.localName);
for (var e = 0; e < g.length; e++) {
b++;
FB.XFBML._processElement(g[e], f, d);
}
});
d
是一个最终会触发某种“渲染”事件的函数。
_tagInfos数组具有以下内容的定义:
localName: 'comments',
className: 'FB.XFBML.Comments'
所以也许你可以打电话:
FB.XFBML._processElement(someElement, {
localName: 'comments',
className: 'FB.XFBML.Comments'
}, function() {
FB.Event.fire('xfbml.render');
});