假设我在一个页面上有一个第三方Twitter小部件,每当有一条新的tweet时,它就会不断更新。有没有什么方法可以计算出 * 何时 * 有一个新的div被添加到这个小部件中?有没有一个事件或什么东西可以挂钩(可能在小部件的父div上)?
如果没有,我该怎么做呢?也许可以连接到窗口小部件正在进行的 AJAX 调用上?我该怎么做呢?看起来有可能,因为firebug似乎正在这样做,但我不知道是怎么做的。
假设我在一个页面上有一个第三方Twitter小部件,每当有一条新的tweet时,它就会不断更新。有没有什么方法可以计算出 * 何时 * 有一个新的div被添加到这个小部件中?有没有一个事件或什么东西可以挂钩(可能在小部件的父div上)?
如果没有,我该怎么做呢?也许可以连接到窗口小部件正在进行的 AJAX 调用上?我该怎么做呢?看起来有可能,因为firebug似乎正在这样做,但我不知道是怎么做的。
3条答案
按热度按时间31moq8wy1#
如果你使用的是任何一种现代浏览器,你可以使用DOM Mutation Events来监听节点的变化。从你的问题描述来看,你可能在寻找DOMNodeInserted。如果你一定要这样做,你可以使用一个可怕的setTimeout()黑客,但总的来说,等待事件发生要比等待事情发生要好。
这里有一些示例代码,因为我很无聊:
vddsk6oq2#
如果这是一个很好的解决方案,不要抱怨,但你可以定期比较这个div的内容。
kknvjkwl3#
先给出最简单的答案:我建议你在一秒钟后检查一下div是否存在(时间取决于很多因素--我相信你理解你的网站的时间细节)。当添加一个新元素(比如你的twitter widget)时,重要的是要理解每个元素(在你的例子中是“widget”)都有特定的规范,这些规范与类似的(表面上类似的)“widget”相比可能有很大的不同。
简单回答:“这取决于第三方小部件”
对于中等答案:“如果你能看到小部件是如何创建的,你可能会找到一种方法来”与它交谈“。”
对于较长的答案:“实际上,创建一些与Twitter沟通的东西并不难,所以如果这是你想学的,我建议你更具体一些。”
希望这能有所帮助......
编辑:我对这个小部件一无所知,我可能会设置一个从客户端到服务器的请求间隔,或者使用javascript:setInterval()或setTimeout()......如果我有时间/资源,我更喜欢一个你既了解Twitter又了解这个小部件的解决方案(如果你想思考你已经做了什么,这样可以节省时间)......