谷歌扩展V2升级V3一些功能的汇总

 

  1. 扩展的页面通信
    1. service-worker.js(原v2版本的background.js)与popup页面的通信
    2. popup页面不能直接使用缓存(cookie等),必须在service-worker等页面使用,使用sendMessage与service-worker通信,在service-worker获取到缓存后再回传给popup页面
    3. js页面与扩展的通信:js插件里使用window.postMessage发送信息,content使用window.addEventListener进行监听,并对信息进行分类后传递给service-worker也就是v2的background,这样就间接的实现了数据的通信

  

 

    2.V3版本的content(注入页面js)与v2版本不同,v3只能操作dom,与当前页面也只能通过dom进行通信,故此不能直接和扩展进行通信,目前的解决方案是:

 

    1. 先定义好我们的js插件,当页面引入插件后以api的形式通过插件与扩展进行交互
    2. js插件里使用window.postMessage发送信息,content使用window.addEventListener进行监听,并对信息进行分类后传递给service-worker也就是v2的background,这样就间接的实现了数据的通信
    3. 同理反过来就是service-worker传递数据给当前使用扩展的页面
    4. 需要注意的是每一步都需要一个唯一的id,不然就会导致数据传递错乱

 

posted @ 2024-03-02 21:30  骚年上天不?  阅读(14)  评论(0编辑  收藏  举报