javascriptjqueryhtmlfbml

Facebook like box load event jquery


I have code like this.

$(document).ready(function() {
    var highestCol = Math.max($('#main').children().height(),$('#main').children().height());
    $('#main').children().height(highestCol);
});

But this doesn't work when I have Like box in some column. It seems this called before Facebook like box called.

How to fix this problem?

Basically I need to call this process after facebook loads Like box and Recommendations blocks (both).


Solution

  • I think you can just put the like-button in a fix-height container.

    For example:

    <div style="height: 62px;">
    <fb:like-box href="http://www.facebook.com/platform" width="292" show_faces="false" stream="false" header="false"></fb:like-box>
    </div>
    

    Then you won't worried about exactly how height it will be.

    Another possible solution. I suppose that you using the method of load facebook javascrpt sdk asynchronously. Then you can execute your code after FB.init()

    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});
    
        if (jQuery.isFunction(window.fbexecute)) {
            window.fbexecute();
        }
      };
      (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>
    
    var fbexecute = function() {
        var highestCol = Math.max($('#main').children().height(),$('#main').children().height());
        $('#main').children().height(highestCol);
    }