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

标签 javascript facebook facebook-graph-api

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

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

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

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

最佳答案

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

由于这些是您唯一的选择,我建议您修改 Ajax 调用。与其让 Ajax 调用直接将新元素插入到它们的最终 DOM 位置,使它们更难重新解析,不如创建一个 <div> (或其他一些元素),将 Ajax 获取的内容加载到其中,然后调用 FB.XFBML.parse()<div> 上在将内容移动到适当的位置之前?你可以 Conceal <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,所以请原谅任何过分的语法,但希望你能理解。

关于javascript - 如何避免重新解析 XFBML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4825984/

相关文章:

javascript - 我正在尝试将数据从单元格范围发送到不和谐的聊天 channel

javascript - 在 API 调用后重新加载 Angular 指令以重新绘制 morris.js 图表

android - Facebook 应用邀请无效

swift - Firebase 不会使用 Facebook 应用程序用户 ID 创建 Facebook 帐户用户 UID

facebook - 如何在 Facebook Graph API 中获取好友详细信息?

Javascript getElementById() 适用于文本框,但不适用于单选按钮或下拉选择器

ios - iOS开发中的社交网络集成哪个更好?

facebook - 通过 API 列出 Facebook 群组的成员

Facebook 信息亭注销

javascript - 想在这里使用 Canvas 作为背景