// JSCSS
"css": ["css/custom.css"],
// "document_start", "document_end", or "document_idle"
document_idle
"run_at": "document_start"
}
],
}
特别注意,如果没有主动指定 为 (默认为 ),下面这种代码run_at document_start document_idle
是不会生效的:
document.addEventListener('DOMContentLoaded', function()
{
console.log('');
});
content-scripts和原始页面共享DOM,但是不共享JS,如要访问页面JS(例如某个JS变量),只
能通过 来实现。 不能访问绝大部分 ,除了下面这4injected js content-scripts chrome.xxx.api
种:
chrome.extension(getURL , inIncognitoContext , lastError , onRequest ,
sendRequest)
chrome.i18n
chrome.runtime(connect , getManifest , getURL , id , onConnect , onMessage ,
sendMessage)
chrome.storage
其实看到这里不要悲观,这些API绝大部分时候都够用了,非要调用其它API的话,你还可以通过
通信来实现让background来帮你调用(关于通信,后文有详细介绍)。
好了,Chrome插件给我们提供了这么强大的JS注入功能,剩下的就是发挥你的想象力去玩弄浏览
器了。
4.3. background
后台(姑且这么翻译吧),是一个常驻的页面,它的生命周期是插件中所有类型页面中最长的,
它随着浏览器的打开而打开,随着浏览器的关闭而关闭,所以通常把需要一直运行的、启动就运
行的、全局的代码放在background里面。
background的权限非常高,几乎可以调用所有的Chrome扩展API(除了devtools),而且它可以无
限制跨域,也就是可以跨域访问任何网站而无需要求对方设置 。CORS
经过测试,其实不止是background,所有的直接通过chrome-extension://id/xx.html
这种方式打开的网页都可以无限制跨域。
配置中, 可以通过 指定一张网页,也可以通过 直接指定一个JS,Chrome会background page scripts
自动为这个JS生成一个默认的网页:
{
// JS