Загрузка Facebook fb: изображение профиля через AJAX на сайте Facebook Connect
После загрузки страницы я делаю AJAX-запрос на удаление фрагмента HTML, содержащего теги, представляющие изображение профиля пользователя Facebook. Я добавляю результат к точке в DOM, но логотипы не загружаются, вместо этого я вижу только силуэт по умолчанию.
Вот как я загружаю фрагмент HTML с помощью jQuery
$.ajax({
url: "/facebookprofiles"
success: function(result) {
$('#profiles').append(result);
}
});
HTML-код, который я добавляю, представляет собой список изменений, например:
<div class="status Accepted">
<fb:profile-pic class="image" facebook-logo="true" linked="true" size="square" uid="1796055648"></fb:profile-pic>
<p>
<strong>Corona Kingsly</strong>My Status Update<br/>
<span style="font-size: 0.8em">52 minutes ago</span>
</p>
</div>
Есть идеи? Я предполагаю, что теги fb не обрабатываются после загрузки dom. Есть ли способ сделать это? Я не вижу никаких исключений или ошибок в моей консоли Firebug.
Спасибо
3 ответа
Первая попытка
Не уверен, что это очень помогает, но вот статья на Ajax + FBML: https://developers.facebook.com/docs/reference/fbml/
В частности, возможно, вы можете использовать метод setInnerFBML()
Следовать за
Так что я думаю, что функция init анализирует fbml. Таким образом, очевидный вопрос заключается в том, как вы получаете библиотеку javascript в Facebook для повторного анализа fbml (или просто для анализа нового fbml), если вы вставляете fbml после init.
Похоже, эта ветка может помочь: http://forum.developers.facebook.com/viewtopic.php?id=22245
Вот то, что кажется соответствующим кодом, хотя на форуме больше контекста:
if ( FB.XFBML.Host.parseDomTree )
setTimeout( FB.XFBML.Host.parseDomTree, 0 );
FB.XFBML.Host.parseDomTree не работает для меня. возможно это изменилось в новом API. что работало было:
FB.XFBML.parse(document.getElementById('foo'))
или же
FB.XFBML.parse()
если вы хотите, чтобы вся страница была проанализирована.
Я использую Microsoft-Web-Helpers с MVC3 (которые включают помощников facebook)
синтаксис бритвы
@Facebook.GetInitializationScripts()
Выходы
<script type="text/javascript">
window.fbAsyncInit = function () {
FB.init({ appId: '115631105198333', status: true, cookie: true, xfbml: true });
};
(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);
} ());
function loginRedirect(url) { window.location = url; }
</script>
Поэтому мне нужно было позвонить
window.fbAsyncInit();
Для повторного анализа содержания Facebook.