2016-12-06 39 views
0

我正在研究一個Chrome擴展,它將偵聽域上的URL更改,並且當URL匹配模式時,將一些HTML附加到DOM。Chrome擴展 - 當URL更改時附加到頁面

我的manifest.json看起來像這樣:

{ 
    "name": "Append to DOM", 
    "description": "Testing", 
    "version": "1", 
    "manifest_version": 2, 
    "content_scripts": [ 
     { 
      "matches": [ 
       "http://www.somedomain.com/*" 
      ], 
      "js": [ 
       "content.js" 
      ] 
     } 
    ], 
    "permissions": ["tabs", "activeTab"] 
} 

和content.js看起來像這樣:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    if (changeInfo.url == 'http://www.somedomain.com/matching-pattern') { 
     var myDiv = document.createElement("div"); 
     myDiv.innerHTML = 'SAMPLE HTML'; 
     document.body.appendChild(myDiv); 
    } 
}); 

然而,聽者不火(和股利不附加)當網址已更新。

任何幫助表示讚賞。

+1

你確定聽衆沒有發射,問題不在於URL與你的模式不符?你在這裏使用了完整的網址;像https一樣小的東西可能會毀掉比賽。 (也許正則表達式模式會更好) – Andrew

+0

@Andrew這是有效的,但即使我拿出條件(所以在任何標籤URL更改),我沒有看到div附加,這導致我相信聽衆不是射擊。 –

+0

您可以使用'console.log(「test」)或類似命令來檢查偵聽器是否正在觸發? (只是建議這種情況下,一些奇怪的事情將不允許附加div) – Andrew

回答

1

內容腳本不訪問chrome.tabs 您可以在後臺腳本

使用chrome.tabs爲了處理URL的變化的內容腳本,始終工作在便宜的解決方案 - 使用setInterval

var prevURL = ''; 
setInterval(function() { 
    if (document.location.href != prevURL) { 
     // do something 
     prevURL = document.location.href; 
    } 
}, 1000); 
相關問題