РЕДАКТИРОВАТЬ: Обновлено за первый комментарий к этому ответу.
Вы можете попробовать что-то вроде этого. Добавьте прослушиватель onRequest, который будет использоваться в качестве обратного вызова для загрузки необходимых сценариев, но они будут загружаться только на основе значения, отправленного как часть сообщения запроса. Затем используйте executeScript для непосредственного вызова «кода», который отправляет сообщение со значением глобальной переменной (если она существует).
chrome.tabs.onUpdated.addListener(function(tabId, changeinfo, tab) {
...
// execute a content script that immediately sends back a message
// that checks for the value of a global variable which is set when
// the library has been loaded
chrome.tabs.executeScript(tabId, {
code: "chrome.extension.sendRequest({ loaded: EnhanceLibIsLoaded || false });"
});
...
});
// listen for requests
chrome.extension.onRequest.addListener(function(req, sender, sendResponse) {
if (req.loaded === false) {
chrome.tabs.executeScript(tabId, { file: "jquery-1.7.1.min.js" }, function() {
chrome.tabs.executeScript(tabId, { file: "enhance.js" }, function() {
// set the global variable that the scripts have been loaded
// this could also be set as part of the enhance.js lib
chrome.tabs.executeScript(tabId, { code: "var EnhanceLibIsLoaded = true;" });
});
});
}
});