Chrome扩展程序中的Javascript代码可以分为以下几类:
扩展代码-完全访问所有允许的
chrome.*
API。
这包括背景页面,以及可以直接通过它访问的所有页面,例如浏览器弹出窗口。内容脚本 (通过清单文件或
chrome.tabs.executescript
)- 部分访问某些chrome
API,完全访问页面DOM( 不 访问任何window
对象,包括框架)。
内容脚本在扩展名和页面之间的范围内运行。window
内容脚本的全局对象不同于页面/扩展名的全局名称空间。注入的脚本(通过Content脚本中的此方法-完全访问页面中的所有属性。 无法访问任何
chrome.*
API。
注入的脚本的行为就像页面本身包含的一样,并且不以任何方式连接到扩展。
在您的情况下,
chrome.tabs.onUpdated可能会在
script.js评估内容脚本之前调用后台页面()中的代码。因此,您会得到一个
ReferenceError,因为
init不是。
另外,在使用时
chrome.tabs.onUpdated,请确保测试页面是否已完全加载,因为该事件会触发两次:加载前和完成时:
//background.htmlchrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { if (changeInfo.status == 'complete') { // Execute some script when the page is fully (DOM) ready chrome.tabs.executescript(null, {pre:"init();"}); }});


