除了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()
和 onmessage
是 Web API
中的方法和事件,用于在不同的窗口或框架之间进行跨域通信。除了浏览器窗口和框架(包括 iframe
)之外,其他一些对象也可以使用这两个方法和事件进行跨域通信。以下是一些支持 postMessage()
和 onmessage
的对象:
Web Workers
:postMessage()
和onmessage
也可以在Web Workers
中使用,用于在 worker 线程和主线程之间进行通信。Service Workers
:postMessage()
和onmessage
也可以在Service Workers
中使用,用于在Service Workers
和网页之间进行通信。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