chrome提供了4個有關擴充套件頁面間相互通訊的介面,分別是runtime.sendmessage
、runtime.onmessage
、runtime.connect
和runtime.onconnect
。做為一部入門級教程,此節將只講解runtime.sendmessage
和runtime.onmessage
介面,runtime.connect
和runtime.onconnect
做為更高階的介面請讀者依據自己的興趣自行學習,你可以在得到有關這兩個介面的完整官方文件。
請注意,chrome提供的大部分api是不支援在content_scripts
中執行的,但runtime.sendmessage
和runtime.onmessage
可以在content_scripts
中執行,所以擴充套件的其他頁面也可以同content_scripts
相互通訊。
runtime.sendmessage
完整的方法為:
chrome.runtime.sendmessage(extensionid, message, options, callback)
1 此屬性僅在擴充套件和網頁間通訊時才會用到。
runtime.onmessage
完整的方法為:
chrome.runtime.onmessage.addlistener(callback)
此處的callback
為必選引數,為**函式。callback
接收到的引數有三個,分別是message
、sender
和sendresponse
,即訊息內容、訊息傳送者相關資訊和相應函式。其中sender
物件包含4個屬性,分別是tab
、id
、url
和tlschannelid
,tab
是發起訊息的標籤,有關標籤的內容可以參看4.5節的內容。
為了進一步說明,下面舉一個例子。
在popup.html中執行如下**:
chrome.runtime.sendmessage('hello', function(response));
在background中執行如下**:
chrome.runtime.onmessage.addlistener(function(message, sender, sendresponse)
});
檢視popup.html頁面會發現有輸出“hello from background.”。
擴充套件內部通訊demo的執行畫面