要在兩個頁籤(視窗)共用一個 script,我們可以使用 Shared workers 來執行,記得一樣要在 Server 上才能執行,Vscode 的話使用 live server 即可,要使用的話如下面範例:
var worker = new SharedWorker('sw.js');
//傳送資料到sharedworker中
worker.port.start();
//將資料傳給sw.js
worker.port.postMessage({ "key": "value" });
接收的話像這樣寫:
//接收sharedworker回傳的結果
worker.port.addEventListener("message", function (event) {
$("#div1").text(event.data);
})
在 sw.js 則是這樣處理資料:
c=0;
self.addEventListener('connect',function(event){
var port = event.ports[0];
port.onmessage = function(event){
c++
//接收主程式傳過來的資料event.data {"key":"value1"}{"key":"value2"}
var data = event.data.value + ", 累加的數字:" + c;
//將資料傳回給主程式
port.postMessage(data);
}
})