2011-02-16 78 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