2011-02-16 60 views
1

我的网站上有很多小部件依赖运行第三方JavaScript来创建它们。例如,我有一个Facebook评论框和一个Twitter“推特”按钮。这两件事都要求我运行一些JavaScript来创建小部件。例如,对于Facebook评论框,他们的JavaScript转换器重新评估第三方处理JavaScript?

<fb:comments numposts="10" width="425" publish_feed="true"></fb:comments> 

进入全功能的Facebook iframe小部件。如果我想静态创建这些元素,这可以正常工作,但现在我有兴趣在以后动态构建这样的元素。例如,是否有一些简单的方法来重新评估Facebook提供的http://connect.facebook.net/en_US/all.js文件,以使其能够即时构建这些小部件中的一个?

回答

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'); 
}); 
+0

完美工作为Facebook的东西。对于Twitter小部件,我只能使用jQuery并执行$ .getScript(“http://platform.twitter.com/widgets.js”);动态地(由于某些原因,这对Facebook不起作用)。 – 2011-02-17 14:27:19