Ven*_*esh 10 javascript google-chrome google-chrome-extension
这是场景:
场景1: 我想根据URL域将不同的内容脚本注入不同的页面.
例如:将cs1.js内容脚本注入,www.a.com但将cs2.js内容脚本注入www.b.com.内容脚本cs1.js和cs2.js都是同一个chrome扩展的一部分.所以如何指定不同的匹配模式(在manifest.json文件中定义"content_scripts"时在"matches"部分下),这样一个脚本就是注入一页而另一页注入其他页面.
场景2:
我如何提及,如果在子域之下www.a.com,我希望将内容脚本注入域中的所有页面,除了 www.b.a.com(所有其他子域需要注入内容脚本).如何为此案例指定匹配模式.
提前致谢.
指定content_scriptsmanifest.json是有点限制的.虽然您可以指定不同的匹配模式,但只能让它执行一系列可能的文件.
要实现您的目标,您需要设置一个background_page可以解释页面URL的内容,并根据需要执行内容脚本.
三种不同的方法可能是:
使用清单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没有决定 - 原始内容脚本一样).但结果相同.
| 归档时间: |
|
| 查看次数: |
4145 次 |
| 最近记录: |