message
event is fired on a
BroadcastChannel
object when a message arrives on that channel.
| 冒泡 | No |
|---|---|
| 可取消 | No |
| 接口 |
MessageEvent
|
| 事件处理程序特性 |
onmessage
|
In this example there's a "sender"
<iframe>
that broadcasts the contents of a
<textarea>
when the user clicks a button. There are two "receiver" iframes that listen to the broadcast message and write the result into a
<div>
元素。
<h1>Sender</h1> <label for="message">Type a message to broadcast:</label><br/> <textarea id="message" name="message" rows="1" cols="40">Hello</textarea> <button id="broadcast-message" type="button">Broadcast message</button>
body {
border: 1px solid black;
padding: .5rem;
height: 150px;
font-family: "Fira Sans", sans-serif;
}
h1 {
font: 1.6em "Fira Sans", sans-serif;
margin-bottom: 1rem;
}
textarea {
padding: .2rem;
}
label, br {
margin: .5rem 0;
}
button {
vertical-align: top;
height: 1.5rem;
}
const channel = new BroadcastChannel('example-channel');
const messageControl = document.querySelector('#message');
const broadcastMessageButton = document.querySelector('#broadcast-message');
broadcastMessageButton.addEventListener('click', () => {
channel.postMessage(messageControl.value);
})
<h1>Receiver 1</h1> <div id="received"></div>
body {
border: 1px solid black;
padding: .5rem;
height: 100px;
font-family: "Fira Sans", sans-serif;
}
h1 {
font: 1.6em "Fira Sans",
sans-serif; margin-bottom: 1rem;
}
const channel = new BroadcastChannel('example-channel');
channel.addEventListener('message', (event) => {
received.textContent = event.data;
});
<h1>Receiver 2</h1> <div id="received"></div>
body {
border: 1px solid black;
padding: .5rem;
height: 100px;
font-family: "Fira Sans", sans-serif;
}
h1 {
font: 1.6em "Fira Sans", sans-serif;
margin-bottom: 1rem;
}
const channel = new BroadcastChannel('example-channel');
channel.addEventListener('message', (event) => {
received.textContent = event.data;
});
| 规范 | 状态 |
|---|---|
| HTML 实时标准 | 实时标准 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
message
event
|
Chrome 54 | Edge ≤79 | Firefox 38 | IE No | Opera 41 | Safari No | WebView Android 54 | Chrome Android 54 | Firefox Android ? | Opera Android 41 | Safari iOS No | Samsung Internet Android 6.0 |
完整支持
不支持
兼容性未知
messageerror
.
BroadcastChannel
message
messageerror