1、操作用户正在浏览的页面,即JS注入
所谓操作用户正在浏览的页面,实际上就是操作页面的DOM。我们通过manifest.json文件中的content_scripts属性,可以指定将哪些js脚本何时注入到哪些页面中。当页面被访问时,Js脚本就会自动执行。
manifest.json中的content_scripts属性的值为数组类型,包含matches、exclude_matches、css、js、run_at、all_frames、include_globs、exclude_globs属性。

注意,这里被注入的Js脚本只共享页面的DOM,并不共享页面中自带Js的命名空间!即被注入的Js脚本和自带的Js之间是互不干扰的。

2、跨域请求
所谓跨域请求,即Chrome扩展中允许JS通过XMLHttpRequest请求不同域的数据。虽然允许,但必须在manifest.json文件中,通过permissions属性声明需要跨域的权限。
在进行跨域请求的时候,要注意一点,所有的XMLHttpRequest请求都是异步调用的,是不阻塞代码的,所以需要一个callback回调函数,具体见下边的例子。
《Chrome扩展及应用开发》中实战一个显示用户IP的扩展。
(1)编写manifest.json文件,主要添加permissions属性,用来声明需跨域访问的网址:

(2)编写popup.html文件,主要是声明一个div用于显示IP地址,并指定JS文件地址:

(3)编写my_ip.js文件,通过跨域请求得到IP地址:

扩展运行的效果:

3、Chrome扩展常驻后台
我们有时候需要Chrome扩展程序自动运行并常驻后台,用来实时监控或更新一些东西。比如邮件更新提醒、后台音乐播放等。
这里涉及到两种页面:后台页面和UI页面。Chrome扩展中页面与页面之间是可以相互通信的,UI页面需要更新数据时可以向后台页面发送请求,后台页面监测到状态改变时,也会通知UI页面进行更新。
在manifest.json文件中通过background属性指定后台页面的相关配置,其主要包含:
》scripts属性:指定后台运行的JS脚本文件
》page属性:指定后台运行的页面,一般不设置,因为后台运行不需要页面
》persistent属性:定义常驻后台的方式,默认为true,表示扩展一直在后台运行。若为false,则表示扩展在后台按需运行,这样可以有效的减少对内存的损耗。
《Chrome扩展及应用开发》中实现一个后台监控Google网站状态的实例。在manifest.json文件中设置background属性,并指定后台运行的JS文件。同时需要声明跨域访问的网站。

在status.js文件中,通过定时访问Google网站,监测其链接状态。如果链接正常,则显示绿色图标,否则显示红色图标。即更改icon。这里使用了chrome.browserAction.setIcon的接口。

这里的常驻后台,还可以是当浏览器不启动的时候就启动我们的扩展程序。只需要在manifest文件的permissions属性中,添加background值。但一般不建议这么使用。
=============================================================
作者主页:笑虎(Python爱好者,关注爬虫、数据分析、数据挖掘、数据可视化等)
作者专栏主页:撸代码,学知识 - 知乎专栏
作者GitHub主页:撸代码,学知识 - GitHub
欢迎大家拍砖、提意见。相互交流,共同进步!
==============================================================