Chrome Extension:用 Content Scripts 達成擴充套件與分頁的溝通

用Content Scripts作為擴充套件與瀏覽器分頁的溝通橋樑


Content Scripts的檔案會執行在每個瀏覽器分頁內,具有以下特性:

  1. Content Scripts被隔絕在一個被稱為Isolated World的執行環境內,這個Isolated World會獨立於parent分頁、parent擴充套件以及其他擴充套件的Content Scripts,彼此的程式執行不會互相干擾與影響。
  2. Content Scripts可以接取到chrome.runtime的API,表示可以藉由chrome.runtime.onMessage和chrome.runtime.sendMessage,與parent擴充套件進行溝通。
  3. Content Scripts與parent分頁的執行環境獨立,無法接取到彼此藉由程式產生的變數。
  4. Content Scripts與parent分頁共享同一個DOM,表示可以在Content Scripts內接取到分頁的DOM。
  5. 由於3.和4.,Content Scripts雖然無法直接操作parent分頁的程式,但是可以利用共享的DOM與window.postMessage()以及對window加上message的listener,讓Content Scripts可以指示分頁執行特定程式並取得執行結果(return)。

因為Content Scripts具有這樣的特性,因此可以被用來作為擴充套件與分頁溝通的橋樑,示意圖如下:


更多詳細內容和程式碼範例請參考Chrome官方文件:

https://developer.chrome.com/extensions/content_scripts