inject-content-message
Version:
A library for communication between browser extension inject and content scripts
66 lines (45 loc) • 1.6 kB
Markdown
一个简单易用的浏览器事件通信库,支持类型安全的事件发送和监听,以及异步回调。
- 类型安全的事件通信
- 支持异步回调
- 简单直观的 API
- 支持浏览器插件环境
- 支持普通网页环境
```bash
npm install inject-content-message
```
```typescript
import { defineEventMessaging } from 'inject-content-message';
// 定义事件协议
interface ProtocolMap {
// 普通事件
log: (message: string) => void;
// 带回调的事件
getData: (id: number) => Promise<{ id: number; value: string }>;
}
// 创建事件通信实例
const { sendEvent, listenEvent } = defineEventMessaging<ProtocolMap>();
// 监听事件
listenEvent('getData', async (id) => {
// 模拟异步操作
const data = await fetchData(id);
return data; // 这个返回值会作为回调结果
});
// 发送普通事件
sendEvent('log', 'Hello World');
// 发送带回调的事件
const result = await sendEvent('getData', 123);
console.log(result); // { id: 123, value: 'some data' }
```
创建一个事件通信实例,返回 `sendEvent` 和 `listenEvent` 方法。
发送一个事件。如果事件处理函数返回 Promise,则该方法也会返回一个 Promise。
监听一个事件,返回取消监听的函数。如果事件需要返回结果,处理函数可以返回一个值或 Promise。
MIT