link-x
v0.1.0
Published
基于 postMessage 的安全跨窗口通信库,提供类型安全的请求-响应模式通信支持。
Downloads
6
Maintainers
Readme
LinkX
基于 postMessage 的安全跨窗口通信库,提供类型安全的请求-响应模式通信支持。
安装
npm install link-x使用示例
// 父窗口
import { LinkX } from 'link-x';
const iframe = document.querySelector('iframe');
const x = new LinkX(iframe.contentWindow!);
// 发送请求并等待响应
x.post('getUrl')
.then((result) => console.log(result))
.catch((err) => console.error(err));
// 注册处理器
x.on('loadTime', async (data: number) => {
console.log({ data });
});// 子窗口(不同域)
const y = new LinkX(window.parent);
y.on('getUrl', () => {
return location.href;
});
// 双向通信
y.post('loadTime', Date.now());API
new LinkX(targetWindow: Window)
创建与目标窗口的通信实例
post<T, R>(type: string, data?: T): Promise<R>
发送消息并返回 Promise:
- type: 消息类型标识符
- data: 要传递的任意数据
- 返回: 包含响应结果的 Promise
on<T, R>(type: string, handler: (data: T) => Promise<R> | R)
注册消息处理器:
- type: 消息类型标识符
- handler: 处理函数,接收消息数据并返回响应数据
- 支持多个处理器并行执行
- 自动捕获同步/异步错误并返回给调用方
off(type: string, handler?)
移除指定类型的所有或特定处理器
destroy()
销毁实例并:
- 移除所有事件监听
- 取消所有未完成请求
特性
- 🛡️ 安全校验:自动验证消息来源窗口
- ⏱️ 超时处理:默认 30 秒请求超时
- 💻 TypeScript 支持:完整的类型推导
