2021-05-12 14:32:11
怎樣在Chrome外掛裡干涉相關網頁
2019-12-19 19:03:32
1
我們知道,Chrome外掛的開發語言是Javascript,而Javascript試執行在網頁中的,而popup.html(就是彈出頁面)只有在點選相應圖示時才能起效果,而不是自動的執行。所以Chrome提供給我們另一種頁面叫background,這個頁面,在外掛載入時被執行,我們只要在裡面註冊函數,就可以在相應的時機執行相應的函數。2
最常用的事件,我個人覺得是tabs的事件,比如tabs的updated事件,每當tab更新的時候就會觸發,我們就是在這時,將事先為使用者頁面準備好的Javascript插入到使用者頁面裡。使用者介面指的是tab開啟的介面,比如百度數位大人貼吧的版面。這裡可能有人不禁要問,為什麼要插入程式碼呢?不插入不行麼?答案是不行,如果不插入程式碼,程式碼只能執行在background頁面裡,程式碼操作的是background頁面,而不是使用者頁面,所以,為了能給使用者頁面提供服務,我們必須插入程式碼。3
實現相關功能的函數在Chrome外掛開發的文件裡都有,詳細地址見參考資料。1
如果你看了前一篇,你就應該有大概如下的檔案。2
在組態檔裡,填寫「background_page」一項,並指明屬性是哪個頁面,當然這個頁面也必須在與組態檔同一個目錄下才行。範例如下:{
"name": "TiebaAddin",
backgound_page": "background.html",
...
}
3
在background頁面裡,寫一個Javascript函數,名字為InsertFunc,並在這個函數裡註冊相關程式碼。之後在最後,向Chrome註冊這個函數資訊,讓每當tab更新時觸發。function InsertFunc(tabId,changeInfo,tab)
{
//讓使用者介面執行程式碼。
chrome.tabs.executeScript(tabId,{code : "alert('看看這是那個頁面彈出的!');"});
//讓使用者介面執行一個檔案的JS。
chrome.tabs.executeScript(tabId,{file : "Check.js"});
}
//註冊事件的響應函數
chrome.tabs.onUpdated.addListener(InsertFunc);
4
儲存,在擴充套件頁面裡,選擇重新載入,最後實驗即可。相關文章