当使用jQuery动态生成包含Facebook标签(如fb:like, fb:comments等)的内容时,这些标签不会自动被Facebook的JavaScript SDK解析和呈现。这是因为:
在动态内容加载完成后,手动调用FB.XFBML.parse()
方法:
// 动态加载内容后
$('#container').load('content.html', function() {
// 确保FB对象已加载
if(typeof FB !== 'undefined') {
FB.XFBML.parse(document.getElementById('container'));
}
});
// 动态生成内容后
$.getScript('https://connect.facebook.net/en_US/sdk.js', function() {
FB.init({
appId: 'your-app-id',
xfbml: true,
version: 'v12.0'
});
FB.XFBML.parse();
});
// 先确保Facebook SDK已加载
if (typeof FB === 'undefined') {
$.ajaxSetup({ cache: true });
$.getScript('https://connect.facebook.net/en_US/sdk.js', function() {
FB.init({
appId: 'your-app-id',
xfbml: true,
version: 'v12.0'
});
loadDynamicContent();
});
} else {
loadDynamicContent();
}
function loadDynamicContent() {
// 动态加载包含FB标签的内容
$('#container').html('<div class="fb-like" data-href="https://example.com" data-width="" data-layout="standard" data-action="like" data-size="small" data-share="true"></div>');
// 解析新添加的FB标签
if (typeof FB !== 'undefined') {
FB.XFBML.parse(document.getElementById('container'));
}
}
FB.XFBML.parse()
这种问题常见于:
通过上述方法,可以确保jQuery动态生成的Facebook标签能够正确呈现和功能正常。