0

我正在使用来自 Facebook 的异步脚本加载技术,将动态上的点赞按钮显示到容器加载的 ajax 页面中。我第一次加载该网站,按钮将正确显示..

..但是如果我使用 html('') 从父容器中卸载页面并以相同的方式再次加载,则不再初始化like按钮。Firebug 向我显示脚本已加载到正确的 div 但未执行。

我像这样加载带有like按钮的子页面(在ini和站点导航上相同):

$.ajax({
    url: url+'holdslikebutton.php?rnd='+Math.random()+'&ajax=yes',
    //cache: false,
    success: function(data) {
        showFBButton();
    }
});

类似按钮的脚本如下所示:

function showFBButton() {
    var html =
        '<div id="fb-button">'
        + '<div class="fb-like" data-href="https://www.facebook.com/xxx" data-send="false" data-layout="button_count" data-width="70" data-show-faces="false" data-action="like"></div>'
        + '<div id="fb-root"></div>'
        + '</div>';
    $('#fb-viewport').html(html);
    window.setTimeout( function () {
        var e = document.createElement( 'script' );
        e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/'+fblang+'/all.js#'+Math.random()+'&xfbml=1&appId=xxx';
        document.getElementById( 'fb-root' ).appendChild( e );
        document.getElementById( 'fb-button' ).removeAttribute( 'class' );
    }, 2000 );
return true;
};

当我从每个导航的站点之间加载holdslikebutton.php 时,为什么脚本不会初始化。我需要做些什么来触发 all.js 的执行吗?但是为什么它会使用 browser-url 或浏览器重新加载从外部加载站点。

这并不复杂。也许我监督一些事情?我被困住了,我很高兴知道如何解决这个问题。

4

1 回答 1

1

FB 插件的渲染仅发生在 SDK 初始化时 DOM 中的元素。

要重新解析新插件标签的 DOM(或其部分),需要使用FB.XFBML.parse完成。

(之前在这里讨论过多次……)

于 2013-03-19T15:06:38.020 回答