我刚刚写了一个镀铬扩展程序,用来自雅虎财经的数据替换前面用$设计的股票代码。根据twitter加载流的方式,我遇到了一些问题。我将js设置为在document_end上运行,但是在DOM准备好之后,twitter会加载流。为了解决这个问题,我只是检查某个元素是否存在,然后运行脚本,如果它不等待500毫秒再试一次。
搜索页面上似乎也存在问题,因为我正在检查的元素有一个不同的类,我还没有真正研究过这个问题。
另一个问题是当一条推文中有大量符号可能与第一个问题有关但看起来它正在插入额外的DOM元素时会造成混乱。
该项目在github上托管,可以获得一些反馈和可能的贡献。
答案 0 :(得分:0)
最简单的方法是收听DOMMutation事件。在浏览器呈现推文之前,您可以使用DOMNodeInserted
事件来捕获此内容。
作为Chrome 18,MutationObservers
现已实施,它速度很快,并且不会快速启动,因此它简洁明了。 DOM Mutation Observers是异步的,每次调用都可以触发多个更改!它显着提高了突变的性能。
使用MutationObservers
的一个例子是:
var observer = new MutationObserver(function onMutationObserver(mutations) {
mutations.forEach(function(mutationNode) {
// New Nodes added ... Deal with it!
});
});
observer.observe(historyContainerDOM, { childList: true, subtree: true });
我已经向我的open source extensions之一添加了一些评论,可以随意采取您的想法。