post-messenger

WebJar for post-messenger

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

post-messenger
Last Version

Last Version

0.2.2
Release Date

Release Date

Type

Type

jar
Description

Description

post-messenger
WebJar for post-messenger
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/hustcc/post-messenger

Download post-messenger

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/post-messenger/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>post-messenger</artifactId>
    <version>0.2.2</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/post-messenger/
implementation 'org.webjars.npm:post-messenger:0.2.2'
// https://jarcasting.com/artifacts/org.webjars.npm/post-messenger/
implementation ("org.webjars.npm:post-messenger:0.2.2")
'org.webjars.npm:post-messenger:jar:0.2.2'
<dependency org="org.webjars.npm" name="post-messenger" rev="0.2.2">
  <artifact name="post-messenger" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='post-messenger', version='0.2.2')
)
libraryDependencies += "org.webjars.npm" % "post-messenger" % "0.2.2"
[org.webjars.npm/post-messenger "0.2.2"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

post-messenger

A simple wrapper of window.postMessage for cross-document communication with each other.

一个简单的 window.postMessage 封装,用于跨文档的双向数据通信。

Build Status Coverage Status npm npm gzip

Feature

  • Simple wrapper for postMessage.
  • Use it just like event emitter.
  • Event channel namespace supported.

Install

npm i --save post-messenger

or import it by script in HTML, then get PostMessenger on window.

<script src="https://unpkg.com/post-messenger/dist/post-messenger.min.js"></script>

Usage

  • In parent document.
import PostMessenger from 'post-messenger';

// connect to iframe
const pm = PostMessenger('chat', window.iframe_name.contentWindow);

const listener = message => {
  console.log(message);
}

// listen the messages
pm.once('room1.*', listener);

pm.on('room1.user1', listener);
  • In iframe document.
import PostMessenger from 'post-messenger';

// connect to parent
const pm = PostMessenger('chat', window.parent);

const listener = message => {
  console.log(message);
}

// send messages
pm.send('room1', 'All users of room1 will received.');

pm.send('*', 'broadcast message.');

Full example can be found here, and code here.

API

There is only one function named PostMessenger, you can get the instance by:

// projectId: the unique id of communication.
// targetDocument: the document which you want to connect and communicate.
const pm = PostMessenger(projectId, targetContentWindow);

The instance has 4 apis.

  • pm.once(channel, listener)

Add a message listener on channel for once.

  • pm.on(channel, listener)

Add a message listener on channel.

  • pm.off([channel, listener])

Remove listener, if channel and listener are all undefined, remove all.

  • pm.send(channel, message)

Send a message to the channel.

Scenes

The window.postMessage() method safely enables cross-origin communication between Window objects; e.g., between a page and a pop-up that it spawned, or between a page and an iframe embedded within it.

The communicate target can be:

  • Window.open
  • Window.opener
  • HTMLIFrameElement.contentWindow
  • Window.parent
  • Window.frames

Reference here.

License

MIT@hustcc.

Versions

Version
0.2.2