例如:将cs1.js内容脚本注入www.a.com,然后将cs2.js内容脚本注入www.b.com.
内容脚本cs1.js和cs2.js都是同一个chrome扩展的一部分.因此,如何在manifest.json文件中定义“content_scripts”时指定不同的匹配模式(“匹配”部分),以便一个脚本是注入一个页面,而其他页面注入其他页面.
情景2:
我如何提到,如果在www.a.com的子域名下,我希望将内容脚本注入除www.b.a.com之外的域中的所有页面(所有其他子域都需要注入内容脚本).如何为这种情况指定匹配模式.
提前致谢.
解决方法
要实现您想要的,您需要设置一个可以解释页面URL的background_page,并根据您的需要执行内容脚本.
三种不同的方法可能是:
>使用清单的content_scripts来匹配所有可能的URL,然后执行一个简单的内容脚本,通过chrome.extension.sendRequest()
将消息请求发送到后台页面.后台页面使用chrome.extension.onRequest.addListener()
收听消息,收到该消息,并将该标签的URL解释为sender.tab. url(或者选项卡的消息发送window.location.hostname,可能更容易),然后决定要通过chrome.tabs.executeScript()
注入到该选项卡的内容脚本.
要么
>只需让你的background_page监听chrome.tabs.onCreated.addListener()
和chrome.tabs.onUpdated.addListener()
来获取选项卡的URL,然后决定要通过chrome.tabs.executeScript()
注册到该选项卡的内容脚本.不需要在清单中指定content_scripts.
要么>类似于1,但是您的清单content_scripts脚本根据当前URL(再次可以解释window.location.hostname)找出要做的事情,然后使用chrome.extension.sendRequest()与您的background_page的消息说明哪些内容脚本执行(意味着你的background_page不决定 – 原始的内容脚本).相同的结果虽然