如何避免重新解析XFBML元素?

时间:2011-01-28 07:47:31

标签: javascript facebook facebook-graph-api

我正在使用JavaScript Facebook SDK来解析xfbml元素。但是,我也使用ajax分页。这是发生的事情。

我加载了元素的第一页,每个元素都包含一个XFBML中的like按钮和注释框。我调用SDK的parse方法来解析元素。

如果用户加载元素的下一页,则会通过Ajax将它们添加到DOM中。但是,当我现在调用解析方法时,第一页的元素再次被解析,这显然是不可取的。

我知道parse方法提供了另一个入口根,但由于所有对象都是兄弟,所以这不是我的选择。有没有办法告诉解析只解析他尚未解析的元素?或者我是否必须删除所有已经解析过的旧xfbml标签?

1 个答案:

答案 0 :(得分:1)

FB.XFBML.parse()是唯一可用于重新解析XFBML的函数,您可以将DOM元素作为起始点传递给它,或者不传递任何东西并让它解析整个DOM结构。

由于这些是您唯一的选择,我建议您修改Ajax调用。而不是让Ajax调用直接将新元素插入到他们的最终DOM位置,使其更难重新解析,为什么不创建<div>(或其他一些元素),将Ajax获取的内容加载到其中,然后在FB.XFBML.parse()上调用<div>,然后将内容移动到适当的位置?您可以隐藏<div>,并使用解析函数的第二个回调参数来执行移动:

//do Ajaxy stuff here to insert new content into hidden div 'foo'

FB.XFBML.parse(document.getElementById('foo'), function() {        
    document.getElementById('yourContent').innerHTML += document.getElementById('foo').innerHTML;
});

我暂时没有完成Javascript,所以请原谅任何令人震惊的语法,但希望你能理解。