除了window,哪些对象有postmessage和onmessage?

文档上看只有postmessage和onmessage是window的方法,但好像还有其他对象有这两个方法,比如 web work。还有其他对象有的吗?


回答:

iframe与EventSource创建的对象也是有的:

<!DOCTYPE html>

<html>

<body>

<h1 id="myH1"></h1>

<div id="myDIV"></div>

<p><b>注释:</b>Internet Explorer 不支持 Server-Sent 事件。</p>

<script>

if(typeof(EventSource) !== "undefined") {

var source = new EventSource("/html/demo_sse.php");

source.addEventListener("open", function() {

document.getElementById("myH1").innerHTML = "Getting server updates";

});

source.addEventListener("message", function(event) {

document.getElementById("myDIV").innerHTML += event.data + "<br>";

});

} else {

document.getElementById("myDIV").innerHTML = "Sorry, your browser does not support server-sent events...";

}

</script>

</body>

</html>

https://www.w3school.com.cn/jsref/event_onmessage_sse.asp

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。


回答:

postMessage()onmessageWeb API 中的方法和事件,用于在不同的窗口或框架之间进行跨域通信。除了浏览器窗口和框架(包括 iframe)之外,其他一些对象也可以使用这两个方法和事件进行跨域通信。以下是一些支持 postMessage()onmessage 的对象:

  1. Web Workers: postMessage()onmessage 也可以在 Web Workers 中使用,用于在 worker 线程和主线程之间进行通信。
  2. Service Workers: postMessage()onmessage 也可以在 Service Workers 中使用,用于在 Service Workers 和网页之间进行通信。
  3. MessageChannel API: MessageChannel API 是一个新的 Web API,用于创建双向通信通道,允许不同的上下文进行通信。它也支持 postMessage()onmessage 方法和事件。
    4. WebSockets: WebSockets 是一种基于 TCP 协议的双向通信技术,也支持 send() 方法和 onmessage 事件,用于在客户端和服务器之间进行实时通信。

总之,任何支持 JavaScript 的对象都可以使用 postMessage()onmessage 进行跨域通信,只要它们实现了这些方法和事件。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

以上是 除了window,哪些对象有postmessage和onmessage? 的全部内容, 来源链接: utcz.com/p/933819.html

回到顶部