在Chrome扩展中,我们可以在网页中注入一些HTML、CSS和Javascript代码,然后我们可以修改或增强页面的行为。作为开发者,我们可以为用户补充网站缺失的功能。
为了实现注入的功能,我们需要编写Javascript代码。但是如何注入代码呢?

有几种方法可以达到注入的目的,最简单的方法是直接在清单文件中指定。

直接在清单文件中配置。
在上面的manifest文件中,我们在content_script配置项中填写了注入前需要匹配的域名,以及注入哪些文件和运行时间。在这个例子中,当您访问Gmail时,您将在网页中注入一个名为css/mycss.css的文件和两个JS文件。
这是最基本最简单的方法。
Javascript动态注入
有时候我们需要动态注入JS文件。例如,如果重写XMLHttpRequest的prototype方法,那么在清单文件中直接引入上述内容可能不会生效。这时候可以用Javascript进行动态注入。
这不是一个新概念,你以前可能见过类似的代码:
当执行上述函数时,传入一个JS文件的路径,它会动态创建一个脚本,并将其插入head标签中。
但是,如果您直接在Chrome扩展中使用它,您可能会遇到一个错误,表明该文件不存在。这是因为在扩展环境中,使用相对于插件的本地路径,而浏览器试图加载相对于当前URL的文件。所以我们需要重写上面的方法:
唯一不同的是调用了chrome.runtime.getURL函数,这个函数会把扩展中的相对路径变成绝对路径,方便正确引入。


