小码哥的IT人生

onmessage 事件

JavaScript基础 2022-06-08 12:01:08小码哥的IT人生shichen

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 对象支持以下属性:

  1. data - 包含实际的消息
  2. origin - 调用事件的文档的 URL
  3. lastEventId - 在事件流中看到的最后一条消息的标识符

相关事件:

  1. onopen - 当与服务器的连接打开时发生
  2. onerror - 出现问题时发生

有关服务器发送事件(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

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024