-
擴展的頁面通信
- 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,不然就會導致數據傳遞錯亂