Twitter嵌入时间线消失

Twitter Embedded Timeline Disappears

本文关键字:消失 时间线 Twitter      更新时间:2023-09-26

我通过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提要的div再次出现。。。但是进给不会再次加载。

在不加载的情况下多次将嵌入的时间线提供给页面是否存在问题?如果我刷新页面,它再次工作。。。只有一次。

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

我刚刚遇到了一个类似的问题并解决了它。你一定包含了一些类似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");

无论如何,#tweetDiv是#authorName的父级吗?如果是这种情况,$("#tweetDiv").remove()将导致#authorName也从DOM中删除,这意味着您的下一个.load()不针对页面上的任何元素。

顺便说一句,如果你要显示/隐藏东西,我建议使用.show()和.hide(),它们在浏览器上比较便宜,因为它不会改变DOM节点。