我在Chrome擴展程序中多次向同一頁面注入內容腳本時遇到了一些問題。Chrome擴展程序 - 每頁加載多次注入內容腳本
我從我的「background.html」頁面注入內容腳本,在標籤的變化:
chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab){
chrome.tabs.getSelected(null,function(tab){
// Do some stuff
chrome.tabs.executeScript(null, { code: code}, function(result){
...等
裏面的內容腳本,我有一些的console.log命令
問題是,當我加載一個單頁,我看到每個日誌顯示在控制檯2-4次。
我很清楚,這是因爲頁面內的iframe發生,至少我認爲......我的問題是爲什麼?
我在文檔中看到默認情況下應該將「all_frames」(清單中的內容腳本權限數組)設置爲「false」,導致內容腳本僅被注入到頁面的頂部框架,但是這根本就沒有發生!
爲什麼它被多次注入?我是否需要將「all_frames」設置爲false?
其次:
有沒有辦法判斷該擴展試圖注入的內容腳本是從內部「background.html」頁面中的iframe或頁面頂部?
我已經試過
if(window.top === window){ console.log('whatever'); }
並發現它不工作時間的100%。即使當我有我的代碼塊的其餘部分(圍繞chrome.tabs.executeScript())的條件,我仍然看到內容腳本多次注入....
任何想法或建議將不勝感激! :)
您不必使用'chrome.tabs.getSelected()',因爲'tab'對象有一個名爲'active'的屬性,可以讓您知道該選項卡當前是否被選中。 – 10basetom