ExtendableMessageEvent:origin 属性

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有浏览器中可用。

注意:此功能仅在 Service Workers 中可用。

originExtendableMessageEvent 接口的一个只读属性,它返回发送消息的 Client 的 origin。

字符串。

示例

当以下代码用于 service worker 中,通过 通道消息 将通过 PushMessageData 接收到的数据发送到主上下文以响应推送消息时,onmessage 的事件对象将是一个 ExtendableMessageEvent

js
let port;

self.addEventListener("push", (e) => {
  const obj = e.data.json();

  if (obj.action === "subscribe" || obj.action === "unsubscribe") {
    port.postMessage(obj);
  } else if (obj.action === "init" || obj.action === "chatMsg") {
    port.postMessage(obj);
  }
});

self.onmessage = (e) => {
  console.log(e.origin);
  port = e.ports[0];
};

规范

规范
Service Workers
# extendablemessage-event-origin

浏览器兼容性

另见