用Content Scripts作為擴充套件與瀏覽器分頁的溝通橋樑
Content Scripts的檔案會執行在每個瀏覽器分頁內,具有以下特性:
- Content Scripts被隔絕在一個被稱為Isolated World的執行環境內,這個Isolated World會獨立於parent分頁、parent擴充套件以及其他擴充套件的Content Scripts,彼此的程式執行不會互相干擾與影響。
- Content Scripts可以接取到chrome.runtime的API,表示可以藉由chrome.runtime.onMessage和chrome.runtime.sendMessage,與parent擴充套件進行溝通。
- Content Scripts與parent分頁的執行環境獨立,無法接取到彼此藉由程式產生的變數。
- Content Scripts與parent分頁共享同一個DOM,表示可以在Content Scripts內接取到分頁的DOM。
- 由於3.和4.,Content Scripts雖然無法直接操作parent分頁的程式,但是可以利用共享的DOM與window.postMessage()以及對window加上message的listener,讓Content Scripts可以指示分頁執行特定程式並取得執行結果(return)。
因為Content Scripts具有這樣的特性,因此可以被用來作為擴充套件與分頁溝通的橋樑,示意圖如下:
更多詳細內容和程式碼範例請參考Chrome官方文件: