onmessage 事件
onmessage 事件
实例
创建一个新的 EventSource 对象,并指定发送更新的页面的 URL。
每次收到更新时,都会发生 onmessage 事件。当 onmessage 事件发生时,会把接收到的数据放入 id="myDIV" 的 <div> 元素中:
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("myDIV").innerHTML += event.data + "<br>";
};
完整实例:
<!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.onopen = function() {
document.getElementById("myH1").innerHTML = "Getting server updates";
};
source.onmessage = 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>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
页面下方有更多 TIY 实例。
定义和用法
当通过事件源接收到消息时,会发生 onmessage 事件。
onmessage 事件的 event 对象支持以下属性:
- data - 包含实际的消息
- origin - 调用事件的文档的 URL
- lastEventId - 在事件流中看到的最后一条消息的标识符
相关事件:
有关服务器发送事件(Server-Sent Events)的更多知识,请学习我们的 HTML5 服务器发送事件教程。
浏览器支持
表中的数字注明了完全支持该事件的首个浏览器版本。
事件 | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
onmessage | 9.0 | 不支持 | 6.0 | 5.0 | 11.0 |
语法
object.onmessage = function(){myScript};
完整实例:
<!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.onopen = function() {
document.getElementById("myH1").innerHTML = "Getting server updates";
};
source.onmessage = 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>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
使用 addEventListener() 方法:
object.addEventListener("message", myScript);
完整实例:
<!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>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
注释:Internet Explorer 8 或更早的版本不支持 addEventListener() 方法。
技术细节
冒泡: | 不支持 |
---|---|
可取消: | 不支持 |
事件类型: | Event |
更多实例
获取调用 onmessage 事件的文档的 URL:
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("myDIV").innerHTML = event.origin;
};
结果会是:
http://www.phpcodeweb.com/
完整实例:
<!DOCTYPE html>
<html>
<body>
<p>调用 onmessage 事件的文档的 URL:</p>
<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.onmessage = function(event) {
document.getElementById("myDIV").innerHTML = event.origin;
};
} else {
document.getElementById("myDIV").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script>
</body>
</html>
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html