我試圖讓我的Chrome擴展程序在加載新頁面時運行函數init()
,但我在嘗試瞭解如何執行此操作時遇到問題。據我瞭解,我需要做的background.html如下:Chrome擴展代碼和內容腳本vs注入腳本
- 使用
chrome.tabs.onUpdated.addListener()
檢查頁面時 改變 - 使用
chrome.tabs.executeScript
運行一個腳本。
這是我的代碼有:
//background.html
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
chrome.tabs.executeScript(null, {code:"init();"});
});
//script.js
function init() {
alert("It works!");
}
我也想知道如果init()函數將有機會獲得我的位於其他JS文件等功能?在Chrome擴展
感謝您對'鉻尖.tabs.onUpdated'發射兩次。所以我想我的問題是我將如何注入'init()'?我應該注入所有的JavaScript嗎?當用戶點擊Browser Action圖標時,通常調用'init()','init()'觸發一堆其他函數。 – Jon 2012-03-28 21:51:04
@ user1277607當它必須訪問任何頁面的全局變量時,注入腳本。當'function init'必須訪問頁面和擴展代碼時,請使用內容腳本。請參閱** [鏈接的答案](http://stackoverflow.com/a/9517879/938089?building-a-chrome-extension-inject-code-in-a-page-using-a-content-script)* *查看如何注入腳本,以及** [這個答案](http://stackoverflow.com/a/9636008/938089?chrome-extension-retrieving-gmails-original-message)**的實施指南內容腳本必須訪問頁面的變量。 – 2012-03-28 21:59:38
非常感謝。它工作得很漂亮:) – Jon 2012-03-29 00:01:41