Geç geç cevap ama sadece birinin buna ihtiyacı var.
Projemi, anlatılanla hemen hemen tamamladım. Sayfam jj formatındaki ajax ile mesajlaşıyor ve facebook benzeri buton, tweet butonu, google plus one butonu gibi dom öğeleri oluşturuyor. Doğru anlayana kadar çok problemim vardı. Büyük sorun, düğmelerin tekrar tekrar beklendiği gibi çalışmadığıydı ... Sonra da çalışma çözümü buldum. Ben facebook js sdk kullanıyorum
<div id="fb-root"></div>
<script>
var isFBLoaded = false;
window.fbAsyncInit = function() {
FB.init({
appId: ' your api key',
status: true,
cookie: true,
xfbml: false
});
isFBLoaded = true;
...
renderFBqueue(); // i ll explain this later
};
(function() {
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
bir sorun katiyen ajax içeriği ve FB.XFBML.parse() yöntem ya da bir şey olduğu görülmektedir (bazı yararlı bilgiler here bulabilirsiniz). fb developers forum üzerinde bir çözüm buldum ve gereksinimlerime göre değiştirdim. Bu yüzden ajax çağrısından json içeriği (çoklu mesajlar) aldıktan sonra, fb gibi düğmeler hariç tüm öğeleri jQuery ile yaratıyorum. Bu düğmeleri url (ve diğer ilgili verileri) sıraya koyarım ve bu düğmeleri oluşturmak/ayrıştırmak için zaman aşımı ile çağrı işlevi.
var fb_queue = [];
...
function getMorePosts(){
$.get('moreposts.php', params, function(response){
if (response) createPosts(response);
}, 'json');
}
...
function createPosts(data){
...
for (var key in data.posts) {
...
fb_queue.push({ id : data.posts[key].id , url : data.posts[key].url });
}
... // elements are created
}
ve sonda gelen biliyorum oluşturup
function parseFBqueue(){
if(isFBLoaded){
if (fb_queue.length==0) return false;
$.each(fb_queue, function (j, data) {
window.setTimeout(function() {
renderFBLike(fb_queue.shift());
}, (j + 1) * 300);
});
};
}
function renderFBLike(data){
var fblike = '<fb:like href="'+data.url+'" layout="button_count" ... ></fb:like>'
$('#fbdiv-'+data.id).append(fblike);
FB.XFBML.parse(document.getElementById('fbdiv-'+data.id'));
}
Umut birisi bu yararlı bulacaksınız düğmeleri gibi fb ayrıştırmak için ben bir hafta önce :)
Neden bir cevabı kabul etmiyorsunuz? Bana öyle geliyor ki soru cevaplandı. – 11684