如何在AJAX调用后重新呈现JS生成的内容?

时间:2016-11-25 17:13:10

标签: javascript jquery ajax facebook

我正在创建一个拥有音频播放器的网站。我的想法是,当您浏览网站时,音乐不会停止,所以我使用jQuery和load()方法实现了一种深层链接,这种方法很好。

问题在于,如果我直接输入this url,社交按钮会正确加载,但如果我通过网站内的链接访问它,社交按钮就不会加载。你可以看到这个问题here,然后进入"堡垒主题"交。

在AJAX通话后,有没有办法重新呈现这些按钮,以及一般类似的任何类型的内容(如AdSense广告)?我尝试用FB.XFBML.parse();作为Facebook按钮,但它没有用。

以下是通过AJAX加载页面的代码:

$("body").on('click', 'a:not(.social-tooltip, .fancy, #play, #stop, #back-to-top)', function(e){
    var url = $(this).attr('href').split("#");
    if(!link_is_external(this) && url[1] == undefined) {
        e.preventDefault();
        if(url[1] != "comments") {
            var href = $(this).attr('href'),
            title = $(this).text();
            loadContent(href,title);
            history.pushState({path: href, titel: title}, $(this).attr('href'), $(this).attr('href'));
        }
    }
});

window.addEventListener('popstate', function(e){
    console.log(e);
    loadContent(e.state.path, e.state.titel);
}, false);

function loadContent(href,title){
    var href = href,
        container = $('section.content');

    container.load( href +' section.content', function(){
        // container.fadeIn(200);
        $('title').replaceWith('<title>' + title + '</title>');
        $("#back-to-top").trigger("click");
    });         
};

如果您需要更多信息,请告诉我,我将编辑此问题。提前谢谢!

0 个答案:

没有答案