2011-07-12 100 views
0

我正在嘗試製作一個簡單的Google Chrome擴展程序 - 例如在頁面上查找特定元素並顯示警報。檢查Google Chrome擴展程序中的DOM元素

我的問題是,特定頁面加載相對較慢(也有一些AJAX背後)。

只有當所有頁面加載時,我如何才能使我的檢查?我試過"run_at" : "document_idle"在我的清單文件中,但沒有成功。它會在整個頁面加載之前向我顯示消息。

我正在考慮檢查每一秒(或某件事情)整個DOM元素,但這是一個可行的解決方案嗎?我認爲它會減慢頁面...

謝謝。

回答

1

如果當您單擊「查看源文件」,然後抓住它會聽DOMSubtreeModified事件,其中每個DOM被修改時觸發的一種方式,元件不存在於頁面上:

document.addEventListener("DOMSubtreeModified", function(event){ 
     if(document.getElementById("my_element")) { 
       //element is added 
     } 
}); 
+0

感謝您的信息。我的頁面使用AJAX加載了很多元素。所以這真的減慢了我的頁面。對於添加的每個元素,腳本都會運行。我可以限制這個,比方說,只有當添加元素(div,文本字段,...)時? – CristiC

+0

@Parkyprg還有'DOMNodeInserted'事件。但我不明白爲什麼這會減慢頁面的速度。你不應該在這個事件處理程序中運行任何腳本,只是檢查元素是否已經在頁面上。如果是 - 那麼你一次運行你的腳本(有一些標誌或什麼的)。 – serg

1

您是否嘗試將代碼放在「content_script.js」中的window.onload事件中?

window.onload = function() { 
    // your code 
}; 
+0

是的:http://stackoverflow.com/questions/3698200/window-onload-vs-document-ready – Darin

+1

它不起作用。這會在窗口加載時觸發,但在使用AJAX更新所有元素之前。 – CristiC