重新执行创建iframe的脚本,当重新附加到Dom(Twitter小部件)时

时间:2014-02-22 08:06:20

标签: javascript ajax widget

我遇到了Twitter小部件时间轴的问题,但该问题适用于任何脚本。

我想嵌入Twitter小部件时间轴(最终结果是iframe)。似乎添加iframe的方式是在帖子中插入一个脚本,该脚本将调用另一个脚本,然后执行一个函数来加载/创建最终的iframe。

<script>
!function(d, s, id) {

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

在我的网站上,我有帖子(post1,post2,post3),显示帖子的部分内容。当用户点击其中一个的标题时,部分帖子从Dom中删除,完整的帖子用Ajax调用并附加到Dom中。然后,当关闭完整加载的帖子时,其内容将从Dom中删除,并且部分帖子内容再次附加。 (这种附加方法是为了防止与#ids发生冲突)。

当我的部分内容再次附加到帖子中时,iframe为空,并且脚本将不会再次执行以加载它。 (即使我制作了一个自定义的哑剧本)。这个空的iframe只发布在Twitter小部件上,而不是其他iframe,例如Youtube视频。

有人可以在这里指导我吗?


更新

这里有几件事。 帖子中添加的脚本似乎将twitter小部件脚本加载到头部。 post脚本在创建iframe之前检查此头脚本是否存在。这意味着iframe不是在完整post(ajax)加载中创建的。我可以删除头部脚本,然后在完整的帖子中正确创建iframe。

但是这个“技巧”对重新附加的内容不起作用。 问题依然存在,当我附上内容后,帖子脚本不再运行(任何脚本)。


UPDATE2

摆弄零售问题 http://jsfiddle.net/KsFJR/

2 个答案:

答案 0 :(得分:0)

您是否已完全从DOM中尝试removing the iFrame并再次启动脚本?

答案 1 :(得分:0)

考虑隐藏/显示您的内容,而不是分离和重新附加。即使听起来你可能需要聪明地使用你的ID,这也是值得重写的。

iframe只要您在DOM中移动它们(包括分离和重新附加),它们就会重新加载它们的内容。 See related question

看起来twitter的脚本并不期望你重新加载iframe的内容,所以不要试图用它来对抗,你可能最好不要单凭它。隐藏/显示帖子将能够解决此问题,因为这些操作不会修改DOM。