1.1 LocalStorage 方案
window.localStorage.setItem('message', JSON.stringify({
type: 'update',
data: { content: 'Hello' },
timestamp: Date.now()
}));
window.addEventListener('storage', event => {
if (event.key === 'message') {
const data = JSON.parse(event.newValue);
console.log('Received:', data);
}
});
1.2 BroadcastChannel API
const channel = new BroadcastChannel('app_channel');
channel.postMessage({
type: 'UPDATE_DATA',
payload: { id: 1, value: 'new data' }
});
channel.addEventListener('message', event => {
const { type, payload } = event.data;
switch(type) {
case 'UPDATE_DATA':
handleDataUpdate(payload);
break;
}
});
1.3 SharedWorker 方案
const connections = new Set();
self.onconnect = event => {
const port = event.ports[0];
connections.add(port);
port.onmessage = event => {
connections.forEach(p => {
if (p !== port) {
p.postMessage(event.data);
}
});
};
};
const worker = new SharedWorker('shared-worker.js');
worker.port.start();
worker.port.postMessage({ type: 'UPDATE', data: 'some data' });
worker.port.onmessage = event => {
console.log('Received:', event.data);
};