JavaScript 跨域通信类库:Messager
该段代码定义了一个名为'Messager'的 JavaScript 类,用于实现跨域通信。它利用了'window.postMessage' API,允许不同域之间的窗口进行安全的数据传递。
构造函数'constructor(targetOrigin)'接收目标域作为参数。它会监听窗口的'message'事件,并使用一个回调函数来处理接收到的消息。回调函数会检查消息的来源是否为目标域,并判断是否存在匹配的监听事件。如果满足条件,则执行对应的回调函数。
'Messager'类提供以下方法:
- on(type, cb): 设置指定名称的事件监听。'type'参数表示事件名称,'cb'参数是一个回调函数,当接收到对应事件的消息时执行。
- emit(type, value): 发送指定名称的消息。'type'参数表示消息名称,'value'参数表示要发送的数据。该方法通过'postMessage'方法将消息发送到目标窗口。
- destroy(): 移除所有消息监听。
以下是一个使用'Messager'类进行跨域通信的示例:
// 在父窗口中创建 Messager 实例,并监听消息
const messager = new Messager('http://example.com');
messager.on('message', (data) => {
console.log('Received message:', data);
});
// 在子窗口中发送消息
window.parent.postMessage({ type: 'message', value: 'Hello from child window' }, 'http://example.com');
在上面的示例中,父窗口创建了一个'Messager'实例并监听名为'message'的事件。子窗口通过'postMessage'方法向父窗口发送名为'message'的消息。当父窗口接收到消息时,它会触发'message'事件,并执行相应的回调函数。
'Messager'类提供了一个简单且灵活的跨域通信机制,可以用于各种场景,例如在 iframe 之间传递数据、在不同域的网页之间进行通信等。
原文地址: https://www.cveoy.top/t/topic/nFM8 著作权归作者所有。请勿转载和采集!