Проблема с асинхронной загрузкой Facebook XFBML и Internet Explorer 8 - PullRequest
0 голосов
/ 26 июля 2010

Я пытаюсь реализовать поле комментария XFBML на странице.Он работает в Firefox и Chrome, но только в Internet Explorer 8.Нужно ли проверять, загрузился ли скрипт Facebook Connect, прежде чем пытаться проанализировать XFBML?

<script type="text/javascript">
    window.fbAsyncInit = function() {
        FB.init({
            appId  : '117378991625799',
            status : false, // check login status
            cookie : false, // enable cookies to allow the server to access the session
            xfbml  : true  // parse XFBML
        });
    };
    (function() {
        var e = document.createElement('script');
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
        FB.XFBML.parse('fb-stuff');
    }());
</script>

1 Ответ

2 голосов
/ 28 октября 2010

Вам не нужно вызывать fb.xfbml.parse самостоятельно, поскольку вы уже инструктируете Facebook init сделать это для вас в fbAsyncInit.Это полезно главным образом в ситуациях, когда вы добавляете новые элементы facebook на страницу после инициализации и хотите, чтобы они были проанализированы и обработаны.

И да, вам следует подождать загрузки библиотеки javascript.Вот что такое fbAsyncInit.Вы создаете элемент script для библиотеки подключений и внедряете его в dom в этой анонимной функции, но браузеру требуется некоторое время для загрузки и оценки кода, поэтому FB не доступен сразу.Когда скрипт загрузится (и объект FB будет доступен), он попытается выполнить window.fbAsyncInit, а затем вы сможете делать все, что вам нужно.

...