Orr*_*rry 5 javascript google-chrome google-chrome-extension
更新
现在看来,这只是在我描述的第一种情况下发生,即重新加载了“扩展”选项卡并打开了一个新选项卡。可能的错误?
我正在使用background.js页面和content-script.js设置chrome扩展。
两者通过端口相互通信。现在的工作方式是,每次激活或更新选项卡时,端口就会在后台初始化,并且内容脚本通过chrome.runtime.onConnect.addListener()(返回端口)侦听它。
这很好。两种(类似)情况除外:
我有一些日志显示在这些情况下,background.js 确实初始化了端口...但是内容脚本由于某种原因未收到它。
这些是我正在做的基础:
background.js
// When a tab gets activated
chrome.tabs.onActivated.addListener(function(tab) {
port = chrome.tabs.connect(tab.tabId, { name: "fh-ext-messenger" });
console.log(port)
initPortListener(port);
});
// When a tab is updated
chrome.tabs.onUpdated.addListener(function(tab) {
port = chrome.tabs.connect(tab, { name: "fh-ext-messenger" });
console.log(port)
initPortListener(port);
});
Run Code Online (Sandbox Code Playgroud)
content.js
chrome.runtime.onConnect.addListener(function(port) {
console.log(port);
// ...
}
Run Code Online (Sandbox Code Playgroud)
关于为什么在初始选项卡上不起作用的任何想法?
小智 0
内容脚本始终附加到您的扩展中。每当您的扩展程序重新加载或停用时,该内容脚本都将从其处于活动状态的所有选项卡中删除。
重新加载扩展不会使其再次激活,您需要重新加载该特定选项卡。
我还注意到,重新加载扩展页面会重新加载所有扩展,并且应该解释为什么您以前的活动内容脚本不再活动。
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |