【发布时间】:2013-02-15 20:25:38
【问题描述】:
我正在编写一个脚本,该脚本需要检测添加到网页的元素,例如日历中呈现的事件(div 标签)。我不关心被删除的元素。页面上最多应该有 20-30 个这样的元素。
我的想法 - 简短而简单的代码 - 是使用特定的类(“myName”)来标记页面中已有的元素。我会定期轮询页面:
// Get all divs in the calendar:
var allDivsCount=myCalendar.querySelectorAll("div").length;
// Get already branded divs
var oldDivsCount=myCalendar.querySelectorAll("div.myName").length;
if (allDivsCount > oldDivsCount) {
// brand the new divs and do stuff
}
这是一个好的做法,还是有更好的方法?有没有已经实现了这种逻辑的库?
我试图避免使用 DOMNodeInserted,因为某些浏览器不支持它并且它已被弃用(由于性能问题,据我所知)。
【问题讨论】:
-
我知道你不关心被删除的元素,但是如果一个元素被删除,你会得到相同的计数然后添加一个新元素,看起来没有变了……
-
在观察网页时,我建议在上课时戴眼镜。一个不经常运行的简单的小间隔轮询并不是真正的问题,它是当你不断地轮询某些东西时,或者在你遇到麻烦的函数中坚持使用太多的东西。
-
@Ian 不,oldDivsCount 会改变
-
@adeneo 我很想看到一个不涉及持续轮询的解决方案,这是我提出问题的目的之一。在我的场景中,只要用户在页面上,投票就必须进行。
-
@Christophe 是的,我的错 :)
标签: javascript observer-pattern