chrome.runtime.onConnect.addListener()在初始chrome标签上不起作用

 书友62423539 发布于 2023-02-12 19:14

更新
现在看来,这只是在我描述的第一种情况下发生,即重新加载了“扩展”选项卡并打开了一个新选项卡。可能的错误?


我正在使用background.js页面和content-script.js设置chrome扩展。

两者通过端口相互通信。现在的工作方式是,每次激活或更新选项卡时,端口就会在后台初始化,并且内容脚本通过chrome.runtime.onConnect.addListener()(返回端口)侦听它。

这很好。两种(类似)情况除外:

    在工具>扩展页面中重新加载扩展并创建新选项卡后。

    Chrome关闭并重新启动后,在新标签页上。

我有一些日志显示在这些情况下,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);
});

content.js

chrome.runtime.onConnect.addListener(function(port) {
    console.log(port);
    // ...
}

关于为什么在初始选项卡上不起作用的任何想法?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有