javascript – 如何在同一扩展名的manifest.json文件中为多个内容脚本指定不同的匹配模式

前端之家收集整理的这篇文章主要介绍了javascript – 如何在同一扩展名的manifest.json文件中为多个内容脚本指定不同的匹配模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是场景:

情景1:
我想根据URL域将不同的内容脚本注入不同的页面.

例如:将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之外的域中的所有页面(所有其他子域都需要注入内容脚本).如何为这种情况指定匹配模式.

提前致谢.

解决方法

指定manifest.json中的content_scripts有一定的限制.虽然可以指定不同的匹配模式,但只能执行一个可能的文件.

要实现您想要的,您需要设置一个可以解释页面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不决定 – 原始的内容脚本).相同的结果虽然

猜你在找的JavaScript相关文章