2012-05-18 105 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談論這個的一個,隨便把你想要的東西。