Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> HTML

Đối tượng MessageChannel và MessagePort trong HTML5 là gì?


Khi tạo MessageChannel, nó nội bộ tạo ra hai cổng (MessagePort) để gửi dữ liệu và chuyển tiếp sang ngữ cảnh duyệt web khác (ví dụ: giữa các iframe).

Các phương thức chính:

  • postMessage() - Gửi tin nhắn qua kênh.
  • start() - Bắt đầu truyền dữ liệu (kích hoạt sự kiện message).
  • close() - Đóng các cổng, ngưng truyền.

Ví dụ: Gửi dữ liệu giữa hai iframe

var loadHandler = function() {
  var mc, portMessageHandler;
  mc = new MessageChannel();
  // Gửi port2 cho parent window
  window.parent.postMessage('documentAHasLoaded', 'https://foo.example', [mc.port2]);

  portMessageHandler = function(portMsgEvent) {
    alert(portMsgEvent.data);
  };
  // Lắng nghe tin nhắn trên port1
  mc.port1.addEventListener('message', portMessageHandler, false);
  mc.port1.start();
};
window.addEventListener('DOMContentLoaded', loadHandler, false);

Trong ví dụ, iframe con tạo kênh, gửi một cổng cho parent, và lắng nghe tin nhắn trả về trên cổng còn lại.