Javascript:有没有办法告诉div何时添加到元素?

时间:2009-12-08 00:51:56

标签: javascript javascript-events

假设我在页面上有第三方推特小部件,每当有新推文时都会不断更新。是否有某种方法可以找出 何时将新div添加到此窗口小部件?是否有一个事件或我可以挂钩的东西(可能是小部件父div)?

如果没有,我该怎么做?也许挂钩到小部件正在制作的ajax调用?我怎么做?似乎有可能因为firebug似乎正在这样做,但我不知道如何。

3 个答案:

答案 0 :(得分:1)

不知道这是否是一个好的解决方案,但你可以定期比较这个div的内容。

答案 1 :(得分:1)

首先给出最简单的答案:我建议在一秒钟之后检查div是否存在(时间取决于很多因素 - 我确定您了解您网站的具体时间)。在添加新元素(例如你的推特小部件)时,重要的是要理解每个元素(在你的情况下,“小部件”)带有某些规范,与类似的(在表面上相似)“小部件”相比可能会有很大差异。

简短回答:“这取决于第三方小工具”

对于中等答案:“如果您可以查看窗口小部件的创建方式,您可能会找到一种'与它交谈'的方法”

对于更长的答案:“创建与Twitter通信的内容实际上并不是很困难,所以如果这是你想要学习的内容,我会建议更具体。”

希望对此有所帮助...

编辑:对小部件一无所知,我可能会设置一个间隔来通过使用javascript:setInterval()或setTimeout()来从客户端向服务器发出请求...如果我有时间/资源,我宁愿一个解决方案,你可以理解Twitter和小部件(如果你想要考虑你做的事情,将来节省时间)......

答案 2 :(得分:1)

如果您使用的是任何类型的现代浏览器,则可以使用DOM Mutation Events来监听节点更改。根据您的问题描述,您可能正在寻找DOMNodeInserted。如果你必须你可以使用一个可怕的setTimeout()hack,但总的来说,最好等待事件而不是旋转等待事情发生。

这里有一些示例代码,因为我很无聊:

var widget = document.getElementById('mywidget');
widget.addEventListener('DOMNodeInserted', function (e) {
  if (e.target.nodeName !== 'DIV') return;
  // do some other code here
}, false);