2011-04-01 54 views
20

我對編寫Google Chrome擴展程序有疑問。我現在的目標是檢測是否創建了選項卡或選項卡的URL已更改。如何檢測標籤更改在Google Chrome擴展程序上創建的網址或標籤?

實際上,我想從線上鏈接插入字典.js到Chrome上的任何網頁,腳本將以background.html的形式運行。例如,如果您打開瀏覽器並轉到主頁,它將運行腳本以將dictionary.js插入該頁面。當一個新的標籤被創建或者一個新的頁面被打開時,它也會運行該腳本。當人們改變標籤的網址時,它也會運行腳本。如何檢測標籤是否在這種情況下發生變化?好的,這裏是我的...代碼,我想解釋一下。

chrome.someFunctionThatDetectTheSituationsAbove(function() { 
    insertDictionaryScript();//I'd love to have the script of detection, not the insertDictionaryScript(); 
} 

我會感激任何想法。謝謝。 :P。

[x]

回答

6

您所描述的內容稱爲內容腳本。您不需要任何編碼,只需在清單文件中進行聲明即可。更多關於內容腳本here

+0

感謝您的評論。我想,你弄錯了我的意思。因爲我使用作爲清單文件,但它只在擴展啓動時有效。好的,例如,我會在background.html中提醒(「HELLO!」);'所以無論何時我打開擴展名,它都會提示「你好」。但是,當您更改頁面URL或打開新標籤時......它不會再運行。那麼,如何檢測出這些標籤網址已更改或新標籤頁被創建的情況...... [x] – xx3004 2011-04-01 01:20:11

+0

@ xx3004您不需要此頁面的背景頁面,只需將您的dictionary.js聲明爲內容腳本即可清單,它會被自動包含在新標籤頁被創建,網址被更改等。 – serg 2011-04-01 02:50:09

+0

得到你,我不應該把它放在background.html中。非常感謝你! [x] – xx3004 2011-04-02 00:43:26

2

您可以通過向onCreated事件添加偵聽器來檢測新的選項卡創建。

您可以通過向onUpdated事件添加偵聽器來檢測選項卡的URL更改。

+0

感謝您的幫助!我想我應該使用內容腳本聲明。但這可能對其他一些事情有用:P。再次謝謝你。 [x] – xx3004 2011-04-02 00:44:24

49

只需添加這對您的background.js:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    insertDictionaryScript(); 
}); 

chrome.tabs.onCreated.addListener(function(tab) {   
    insertDictionaryScript(); 
}); 
+2

感謝您的幫助!非常清楚!我想我現在知道該怎麼做。 [x] – xx3004 2011-04-02 00:45:08

+1

當更新web內容時,更新運行很多次。 – vanduc1102 2016-06-17 17:24:40

+0

@ vanduc1102 - 您可以檢查網址是否已更改,例如'if(changeInfo.url)myFunc();' – thesbros 2017-01-20 03:00:23

9

還有onActivated事件:

chrome.tabs.onActivated.addListener(function(tabId, changeInfo, tab) { 
    insertDictionaryScript(); 
}); 
+4

'onActivated'回調簽名不正確 - 它現在只需一個對象。請參閱http://developer.chrome.com/extensions/tabs.html#event-onActivated – vaughan 2014-02-16 11:59:15

相關問題