chrome广播消息到内容脚本
chrome broadcast message to content scripts
有没有办法将chrome消息广播到chrome扩展的所有内容脚本?
chrome.runtime.sendMessage()接受一个tabId作为输入。但是,如果有多个选项卡与内容脚本一起运行,一个选项卡怎么能广播到所有选项卡?
我认为您的意思是chrome.tabs.sendMessage
具有选项卡ID参数。
Chrome API中有2个sendMessage
函数:
chrome.runtime.sendMessage
将广播到在chrome-extension://your-extension-id/
原点中运行的所有页面
这将是背景页面、弹出窗口(如果打开)、选项页面(如果打开的话)以及您自己打开的扩展页面的任何选项卡。
chrome.tabs.sendMessage
将广播到在提供的选项卡中运行的扩展的所有内容脚本(很快就可以按帧进行筛选),如果没有提供ID,则广播到当前活动选项卡
不幸的是,没有向所有内容脚本广播的功能。所以,你有两种可能的方法:
1-地毯式轰炸
只需一个接一个地广播到所有选项卡!
chrome.tabs.query({}, function(tabs) {
tabs.forEach(function(tab) {
chrome.tabs.sendMessage(tab.id, message);
});
});
如果你想通过匹配模式缩小范围,你可以:
// Even accepts arrays of patterns!
chrome.tabs.query({url: "*://*.example.com/*"}, function(tabs) {
tabs.forEach(function(tab) {
chrome.tabs.sendMessage(tab.id, message);
});
});
2-选项卡/连接跟踪
您可以更加积极主动地跟踪准备接收邮件的选项卡。然而,维护这个列表可能会很乏味。
在实践中,您可以让内容脚本打开到后台页面的端口连接,然后使用打开端口列表向它们发送命令。不利的一面是,您不能使用事件页面进行此操作,因为它需要保持连接打开。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 从远程脚本获取用户IP
- 如何根据时间运行不同的脚本
- 如何将字符串值从php页面发送到java脚本页面
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 当脚本由system.js加载时,如何要求('electron')
- HTML标记在脚本标记中工作
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 显示时间的脚本
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- Google Adsense多次加载脚本
- chrome广播消息到内容脚本