2012-05-18 106 views
2

我刚刚写了一个chrome扩展,它用来自雅虎财经的数据替换以$设计的股票代码。我遇到了一些问题,但基于twitter如何加载流。我已经将js设置为在document_end上运行,但是在DOM准备就绪后,twitter会加载该流。为了解决这个问题,我只是检查某个元素是否存在,然后运行脚本,如果它没有等待500毫秒,然后再试一次。当twitter流加载时加载chrome扩展脚本

在搜索页面上似乎存在问题,也可能是因为我正在查看的元素有一个不同的类,我没有真正查看这个问题。

另一个问题是,当一个推文中有大量符号可能与第一个问题有关时,它会造成混乱,但似乎是插入额外的DOM元素。

该项目托管在github上将是非常棒的获得一些反馈和可能的贡献。

https://github.com/billpull/Twitter-Ticker

回答

0

最简单的方法就是听DOMMutation事件。在浏览器呈现推文之前,您可以使用DOMNodeInserted事件来捕获该内容。由于Chrome 18,MutationObservers现在已经实施,速度很快,并且不会快速启动,因此它很简洁。 DOM突变观察者是异步的,可以触发多个更改!它显着提高了您的突变表现。

使用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谈论这个的一个,随便把你想要的东西。