我的Google Chrome擴展程序正在運行,其目標是更改網頁中像素圖像的顏色。Chrome擴展程序:在加載(渲染)頁面之前運行
要更改網頁中的圖像的色彩,從標籤已經打開我使用的代碼(在background.js文件):
function executeScriptsInExistingTabs(){
chrome.windows.getAll(null, function(wins) {
for (var j = 0; j < wins.length; ++j) {
chrome.tabs.getAllInWindow(wins[j].id, function(tabs) {
for (var i = 0; i < tabs.length; ++i) {
if (tabs[i].url.indexOf("chrome://") != 0) {
chrome.tabs.executeScript(tabs[i].id, { file: 'muda_conteudo.js' });
chrome.browserAction.setIcon({path: "on.png", tabId:tabs[i].id});
}
}
});
}
});
}
要改變顏色的網頁,當標籤的URL改變,我用下面的代碼(在background.js文件):
chrome.tabs.onUpdated.addListener(function(tabid, info, tab) {
if (flag){
if (info.status == "complete") {
chrome.tabs.executeScript(tabid, {file:"muda_conteudo.js"});
chrome.browserAction.setIcon({path: "on.png", tabId:tab.id})
}
}
});
我完美的作品。 但是,當我打開新選項卡時,我看到原始圖像,並且僅在幾微秒後纔看到重新着色的圖像。 我想改善這一點,看到頁面只有在重新着色(我不想看到原來的)。
任何人都有關於如何解決它的想法? 在此先感謝。
你好。我把'info.status =='這一行填入'',因爲在加載網頁的時候,在標籤的哪個URL中,onUpdated事件被多次識別(2或3次),並且頁面被重新着色了幾次(所以最終結果不是預期的)。我認爲這是一個Chrome的錯誤... 我感謝您的關注,但我沒有意識到你的建議......我的問題是隻有白衣第二個腳本,這應該在URL打開時更改標籤...請你明確地解釋你的想法。 – user3059287
嗯,這不是一個錯誤。 onUpdated事件被激發了幾次,因爲它的狀態隨時間而改變。它正在連接,接收數據等。我可能在一件事上錯了。按原樣嘗試您的代碼並添加到executeScript函數附加參數「runAt」:「document_end」。這意味着您的腳本將在所有文檔(主體)被加載後立即被注入。這相當於在頁面末尾添加腳本。默認情況下,您的腳本是在加載所有資源時注入的。 –