-
扩展的页面通信
- service-worker.js(原v2版本的background.js)与popup页面的通信
- popup页面不能直接使用缓存(cookie等),必须在service-worker等页面使用,使用sendMessage与service-worker通信,在service-worker获取到缓存后再回传给popup页面
- js页面与扩展的通信:js插件里使用window.postMessage发送信息,content使用window.addEventListener进行监听,并对信息进行分类后传递给service-worker也就是v2的background,这样就间接的实现了数据的通信
2.V3版本的content(注入页面js)与v2版本不同,v3只能操作dom,与当前页面也只能通过dom进行通信,故此不能直接和扩展进行通信,目前的解决方案是:
- 先定义好我们的js插件,当页面引入插件后以api的形式通过插件与扩展进行交互
- js插件里使用window.postMessage发送信息,content使用window.addEventListener进行监听,并对信息进行分类后传递给service-worker也就是v2的background,这样就间接的实现了数据的通信
- 同理反过来就是service-worker传递数据给当前使用扩展的页面
- 需要注意的是每一步都需要一个唯一的id,不然就会导致数据传递错乱
标签:插件,service,汇总,worker,通信,js,V2,V3,页面 From: https://www.cnblogs.com/sixrookie/p/18049269