cross-window-emitter
TypeScript icon, indicating that this package has built-in type declarations

1.2.2 • Public • Published

cross-window-emitter

由于 native 开发不提供 webview 激活时的钩子方法,特研究该方案。可应用于同域跨 webview 事件触发。

同域跨窗口事件触发器,通过轮询和 localStorage 实现。

点击查看示例

安装

npm install cross-window-emitter
yarn add cross-window-emitter
pnpm add cross-window-emitter

浏览器引入

在浏览器中使用 script 标签直接引入文件,并使用全局变量 crossWindowEmitter

npm 包的 cross-window-emitter/dist 目录下提供了 cross-window-emitter.js 以及 cross-window-emitter.min.js。你也可以通过 UNPKG 进行下载。

使用

window 1 page

import crossWindowEmitter from 'cross-window-emitter';

crossWindowEmitter.on('update', () => {
  console.log('update');
});

window 2 page

import crossWindowEmitter from 'cross-window-emitter';

crossWindowEmitter.emit('update');

API

on(eventName, listener)

  • eventName <string> | <symbol> 事件名称。
  • listener <Function> 回调函数。

添加 listener 函数到名为 eventName 的事件的监听器数组的末尾。 不会检查 listener 是否已被添加。 多次调用并传入相同的 eventNamelistener 会导致 listener 会被添加多次。

crossWindowEmitter.on('update', () => {
  console.log('update');
});

once(eventName, listener)

  • eventName <string> | <symbol> 事件名称。
  • listener <Function> 回调函数。

添加单次监听器 listener 到名为 eventName 的事件。 当 eventName 事件下次触发时,监听器会先调用,然后再被移除。

如果 eventName 事件为空,将自动停止轮询。

crossWindowEmitter.once('update', () => {
  console.log('update');
});

off(eventName[, listener])

  • eventName <string> | <symbol> 事件名称。
  • listener <Function> 回调函数。

从名为 eventName 的事件的监听器数组中移除指定的 listener

如果没有传入 listener,将移除全部 eventName 事件。

function callback(value) {
  // ...
}
crossWindowEmitter.on('update', callback);
// ...
crossWindowEmitter.off('update');

emit(eventName[, ...args])

  • eventName <string> | <symbol>
  • ...args <any>

按照监听器注册的顺序,同步地调用每个注册到名为 eventName 的事件的监听器,并传入提供的参数。

每次调用会检查是否有缓存超过 30 分钟的 eventName,超时将自动清除。

setPollingInterval(eventName, pollingInterval)

  • eventName <string> | <symbol>
  • pollingInterval <number>

设置当前窗口名为 eventName 的事件轮询调用时间,pollingInterval 不能超过 15 分钟,否则自动修正为 15 分钟。

Package Sidebar

Install

npm i cross-window-emitter

Weekly Downloads

3

Version

1.2.2

License

MIT

Unpacked Size

166 kB

Total Files

9

Last publish

Collaborators

  • caijf