chrome扩展消息传递,扩展的后台服务和网页的前端通讯

https://developer.chrome.com/docs/extensions/develop/concepts/messaging?hl=zh-cn

manifest.json:

{
  "manifest_version": 3,
  "name": "ChatGPT学习",
  "version": "0.0.6",
  "description": "欢迎加入我们一起学习ChatGPT",
  "icons": {
    "16": "./src/images/logo.png",
    "48": "./src/images/logo.png",
    "128": "./src/images/logo.png"
  },
  "side_panel": {
    "default_path": "./src/views/panel.html"
  },
  "permissions": ["sidePanel"],
  "action": {
    "default_title": "点击打开ChatGPT学习侧边栏"
  },
  "background": {
    "service_worker": "./src/scripts/service-worker.js"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "exclude_matches": [
        "https://chat.xutongbao.top/*",
        "http://localhost:*/*"
      ],
      "css": ["./dist/lib/layui.css", "./dist/css/app.css"],
      "js": ["./dist/lib/layui.js", "./dist/js/app.js", "./index.js"]
    }
  ],
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';"
  }
}

./src/scripts/service-worker.js:
 

// chrome.sidePanel
//   .setPanelBehavior({ openPanelOnActionClick: true })
//   .catch((error) => console.error(error))''

let historySender
//接收消息
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  historySender = sender
  sendResponse({ response: 'Hi from the background!' })
})


//点击事件
chrome.action.onClicked.addListener(async (tabValue) => {
  console.log('扩展图标被点击了!')
  chrome.sidePanel.open({ windowId: tabValue.windowId })

  const [tab] = await chrome.tabs.query({
    active: true,
    // lastFocusedWindow: true,
  })
  if (tab && tab.id) {
    //发消息
    const response = await chrome.tabs.sendMessage(tab.id, {
      greeting: '你好',
    })
    console.log(response)
  }
})

console.log(1)

index.js:

function init() {
  console.log('ChatGPT 学习 插件已经成功启动')

  //发消息
  chrome.runtime.sendMessage({ greeting: 'hello' }, (response) => {
    if (chrome.runtime.lastError) {
      console.error('Error sending message:', chrome.runtime.lastError)
      return
    }
    console.log(response.response)
  })

  //接收消息
  chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
    console.log('Received!', message)
    localStorage.setItem('pluginVisible', 'true')
    document.getElementById('m-plugin-wrap').style.display = 'block'
  })
}

init()

人工智能学习网站:

https://chat.xutongbao.top

 

  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐同保

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值