我覺得這對於任何非業餘愛好者來說可能會立即顯而易見,但我已經爲此擱置了好幾天。在完成加載之前使用DomNodeInserted重寫HTML代碼
我正在編寫一個Chrome擴展,它在文檔啓動時執行腳本。我想在它們加載時重寫特定DIV的HTML,但在它們顯示給用戶之前(所以用戶在我的自定義HTML被無意識地替換之前沒有看到該網站的HTML)。我試圖使用的方法看起來像這樣。
addEventListener('DOMNodeInserted', function(event){
if(event.relatedNode.innerHTML.indexOf("contentArea")>-1){
writeContentArea();
}
}, false);
function writeContentArea(){
var divtowrite = document.getElementById('contentArea');
include(divtowrite,"contentArea.html"); //my AJAX include function
}
現在,問題是,當頁面加載和JS執行時,div仍然會在它被替換之前加載。奇怪的是,當我用不同的div來嘗試這個功能時,就像側欄一樣,它按預期工作;即,div在被顯示給用戶之前被替換。我無法弄清楚它爲什麼適用於某些div,而不適用於其他。
我不知道這是否是相關的,但在Chrome的身邊,我有:
chrome.tabs.getSelected(null, function(tab) {
if(tab.url.indexOf("search.php") > -1){
chrome.tabs.executeScript(null,
{file: "fhrun.js", allFrames: false, runAt: "document_start"}
);
}
});
這是爲什麼不工作的任何想法,或者更好的方法,我應該使用?謝謝!!
請參閱http://stackoverflow.com/questions/13277212/mutation-observer-for-creating-new-elements – bfavaretto