Channel Messaging API
注意:此功能在 Web Workers 中可用。
通道訊息 API 允許同一文件中不同瀏覽上下文(例如,兩個 iframe,或者主文件和一個 iframe,透過 SharedWorker 的兩個文件,或兩個 worker)執行的兩個獨立指令碼直接通訊,透過兩端各有一個埠的雙向通道(或管道)互相傳遞訊息。
概念與用法
使用 MessageChannel() 建構函式建立一個訊息通道。建立後,可以透過 MessageChannel.port1 和 MessageChannel.port2 屬性(它們都返回 MessagePort 物件)訪問通道的兩個埠。建立通道的應用使用 port1,而埠另一端應用使用 port2 —— 您將訊息傳送到 port2,然後使用 window.postMessage 以及兩個引數(要傳送的訊息,以及要轉移所有權的物件的,在此情況下是埠本身)將埠傳輸到另一個瀏覽上下文。
當這些可轉移物件被傳輸時,它們在其先前所屬的上下文中將不再可用。埠在傳送後,原始上下文將無法再使用它。
另一個瀏覽上下文可以使用 onmessage 來監聽訊息,並使用事件的 data 屬性獲取訊息內容。然後,您可以透過使用 MessagePort.postMessage 向原始文件傳送訊息進行響應。
當您想停止透過通道傳送訊息時,可以呼叫 MessagePort.close 來關閉埠。
有關如何使用此 API 的更多資訊,請參閱 使用通道訊息。
介面
MessageChannel-
建立一個新的訊息通道用於傳送訊息。
MessagePort-
控制訊息通道上的埠,允許從一個埠傳送訊息並監聽它們到達另一個埠。
示例
規範
| 規範 |
|---|
| HTML # channel-messaging |
瀏覽器相容性
api.MessageChannel
載入中…
api.MessagePort
載入中…