可以实现,同源页面,不同会话下的通信。

主页面
<input type="text" name="test" id="input"><div id="show"></div><button id="button">同步</button><script src="./index.js"></script>
主线程
const worker = new SharedWorker('/worker.js')const text = document.getElementById('show')const button = document.getElementById('button')worker.port.start()document.getElementById('input').addEventListener('change', (e) => {console.log(e.target.value)worker.port.postMessage({type: 'push',value: e.target.value})})button.addEventListener('click', () => {worker.port.postMessage({type: 'pull',})})worker.port.addEventListener('message', (e) => {console.log(e)text.innerHTML = e.data})
子线程
console.log(`I'm share worker script`)let data = nullonconnect = function (e) {console.log(e)const port = e.ports[0]port.onmessage = function(e) {switch (e.data.type) {case 'push':data = e.data.valuebreakcase 'pull':port.postMessage(data)breakdefault:break;}}}
