Twitter嵌入式时间线消失

时间:2014-04-09 14:47:19

标签: javascript jquery twitter

我通过Jquery嵌入了Twitter时间线,以便当用户点击按钮时,它会创建带有时间轴的div ...当他再次点击它时,时间线就会消失。

这样可行,但当我再次点击该按钮时,它不想再次加载。所以每页只能加载一次。

$("#TWT").click(function(e) {
        e.preventDefault(); 
        if(loadHtml == "empty") {
        $( "#authorName" ).load( "test.html" );
        loadHtml = "full";
        } else if(loadHtml == "full") {
            $("#tweetDiv").remove();
            loadHtml = "empty";
            }
    });

test.html包含嵌入的内容,loadHtml设置为空。

我的实际执行情况比较复杂,但我已经将其削减到了这一点,所以我可以看出错误。包含Twitter Feed的div重新出现......但Feed不会再次加载。

在没有加载的情况下,多次向页面提供嵌入式时间轴是否存在问题?如果我刷新页面,它再次起作用......只有一次。

PS:只是为了澄清 - 这不是div不再出现的问题。当我查看生成的html时,它显示得很好。只是Twitter不想再次加载。

2 个答案:

答案 0 :(得分:1)

我刚遇到类似的问题并解决了它。 你必须包含一些像twitter提供的javascript:

        !function(d,s,id){
            var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';
            if(!d.getElementById(id)){
                console.log("executed");
                js=d.createElement(s);
                js.id=id;
                js.src=p+"://platform.twitter.com/widgets.js";
                fjs.parentNode.insertBefore(js,fjs);
            }
        }(document,"script","twitter-wjs");

我通过评论if()语句解决了这个问题:

        !function(d,s,id){
            var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';
            //if(!d.getElementById(id)){
                console.log("executed");
                js=d.createElement(s);
                js.id=id;
                js.src=p+"://platform.twitter.com/widgets.js";
                fjs.parentNode.insertBefore(js,fjs);
            //}
        }(document,"script","twitter-wjs");

答案 1 :(得分:0)

有可能#tweetDiv是#authorName的父级吗?如果是这样的话,$("#tweetDiv")。remove()将导致#authorName也从DOM中删除,这意味着你的下一个.load()不会针对任何元素页面。

另一方面,如果您要显示/隐藏内容,我建议您使用.show()和.hide(),这些内容在浏览器上较便宜,因为它不会#&# 39;改变DOM节点。