How to add a Facebook “Like” button to an AJAX driven page

后端 未结 7 2407
醉酒成梦
醉酒成梦 2020-12-02 07:14

I have trawled the net and Stack Overflow and have not found an adequate answer to this question. Before I start the trial and error process of finding my own solution, I th

相关标签:
7条回答
  • 2020-12-02 07:20

    This is how I handled this situation when I ran into it - seems to work well.

    // Set Facebook Like Button with jQuery
    setFBLikeButtons = function (container,url,send,layout,width,show_faces,font) {
      // Set Default Args
      if(!send) { send = "false"; }
      if(!layout) { layout = "button_count"; }
      if(!width) { width = "100"; }
      if(!show_faces) { show_faces = "false"; }
      if(!font) { font = "arial"; }
    
      $(container).empty(); // Remove current like button
      $(container).html('<fb:like href="'+url+'" send="'+send+'" 
           layout="'+layout+'" width="'+width+'" show_faces="'+show_faces+'" 
           font="'+font+'"></fb:like>');
      FB.XFBML.parse(); // This is the magical syrup
    }
    
    0 讨论(0)
  • 2020-12-02 07:21

    SIMPLE SOLUTION

    Just parse trigger the parse function when load complete.

    If you’re using jQuery, there’s a real easy and slick solution to this problem:

    $(document).ajaxComplete(function(){
        try{
            FB.XFBML.parse(); 
        }catch(ex){}
    });
    

    http://developers.facebook.com/docs/reference/plugins/like/

    0 讨论(0)
  • 2020-12-02 07:21

    This is the solution I ended up going with:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    
        <script src="JS/jquery/jquery.js" type="text/javascript"></script>
        <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
    
        <script language="javascript" type="text/javascript">
            $("document").ready
            (
                function ()
                {
                    CreateNewLikeButton("http://www.yahoo.com")
    
                    $("#ChangeToGoogle").click
                    (
                        function (e)
                        {
                            e.preventDefault();
                            CreateNewLikeButton("http://www.google.ca")
                        }
                    );
    
                }
            );
    
            function CreateNewLikeButton(url)
            {
                var elem = $(document.createElement("fb:like"));
                elem.attr("href", url);
                $("#Container").empty().append(elem);
                FB.XFBML.parse($("#Container").get(0));
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <a id="ChangeToGoogle" href="#">Change To Google</a>
        <div id="Container">
            <fb:like href="http://www.NEVER_LINK_TO_THIS_12345.com"></fb:like>
        </div>
        </form>
    </body>
    
    </html>
    
    0 讨论(0)
  • 2020-12-02 07:25

    create like button

    <head>
    <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
    <script>
    window.onload = function(){
    var divs = document.getElementsByTagName("span");
    for(var i=0; i<divs.length i++){
    if(divs[i].className == "likes"){
    if(divs[i].title){ var Href = divs[i].title; }else{ var Href = window.location; }
    var fb_like = document.createElement("fb:like");
    fb_like.setAttribute("href", Href);
    fb_like.setAttribute("layout", "box_count");
    fb_like.setAttribute("show_faces", "false");
    fb_like.setAttribute("width", "55");
    document.getElementById("likes2").appendChild(fb_like);
    }
    }
    }
    </script>
    </head>
    <body>
    <span class="likes" title="www.bzzs.me"></span>
    </body>
    
    0 讨论(0)
  • 2020-12-02 07:28

    Load it after the window loads, this is what works for me:

    $(window).load(function(){
         $.getScript('http://connect.facebook.net/en_US/all.js', function() {
              try{
                    FB.XFBML.parse();
                } catch(ex) {}
          });
    });
    
    0 讨论(0)
  • 2020-12-02 07:45

    You're making this hard on yourself - just render a new iframe-based one.

    <html>
    <head>
      <title>Test Page</title>
    
      <script src="http://code.jquery.com/jquery-latest.js"></script>
      <script type="text/javascript">  
    
      $(function()
      {
        $( '#ChangeToGoogle' ).click( function( event )
        {
          event.preventDefault();
    
          $( '#Container' ).empty().append( $('<iframe />')
            .attr( 'src', 'http://www.facebook.com/plugins/like.php?href=www.google.com&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80' )
            .attr( 'scrolling', 'no' )
            .attr( 'frameborder', 'no' )
            .attr( 'style', 'border:none; overflow:hidden; width:450px; height:80px;' )
            .attr( 'allowTransparency', 'true' )        
          );            
        });
      });
    
      </script>
    </head>
    
    <body>
        <form id="form1" runat="server">
        <a id="ChangeToGoogle" href="#">Change To Google</a>
        <div id="Container">
          <iframe src="http://www.facebook.com/plugins/like.php?href=www.yahoo.com&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80"
            scrolling="no" frameborder="0"
            style="border:none; overflow:hidden; width:450px; height:80px;"
            allowTransparency="true">
          </iframe>
        </div>
        </form>
    </body>
    

    0 讨论(0)
提交回复
热议问题