Ste*_*ins 1 javascript messaging google-chrome google-chrome-extension
我的扩展已chrome.runtime.onMessage.addListener()在后台页面和内容脚本中定义。有些消息需要由后台页面捕获,其他消息需要由内容脚本捕获。我的问题是,由于某种原因,我的内容脚本之一无法捕获消息。
我的背景页面包含:
chrome.runtime.onMessage.addListener(function (msg, sender, respond) {
if (msg["injectCss"]) {
chrome.runtime.sendMessage({ beginInject: msg.injectCss.files.length });
injectCss(sender.tab.id, msg.injectCss.files, 0, function () {
chrome.runtime.sendMessage({ endInject: true });
respond();
});
}
});
Run Code Online (Sandbox Code Playgroud)
我的内容脚本包含:
chrome.runtime.onMessage.addListener(function (msg, sender, respond) {
if (msg["beginInject"]) {
//do something
respond();
}
});
Run Code Online (Sandbox Code Playgroud)
当chrome.runtime.sendMessage({ beginInject: msg.injectCss.files.length });从后台页面调用时,后台页面本身捕获消息而不是内容脚本。
问题:有没有办法将消息标记为“尚未处理”,以便其他侦听器有机会捕获并处理它?
事实证明答案相当简单:
为了专门向内容脚本发送消息,请使用chrome.tabs.sendMessage(tabId, message, callback). 要在其他地方发送消息,请使用chrome.runtime.sendMessage(message, callback)。
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |