頁面 A 以 jQuery $.get() 向頁面 B 發送請求,參數不會出現在網址列(?xxx=yyy),因此頁面 B 無法用 location.search 取得。這是因為 兩個頁面屬於獨立的瀏覽器上下文,AJAX 回應資料僅存在於發起請求的頁面(頁面 A)的 JavaScript 環境中。
頁面 A 跳轉而非 AJAX:location.href = 'B.html?param=value',頁面 B 用 new URLSearchParams(location.search).get('param') 取值。
// 頁面 A 寫入
localStorage.setItem('sharedParam', JSON.stringify({id: 1, name: 'test'}));
// 頁面 B 讀取
const data = JSON.parse(localStorage.getItem('sharedParam'));
可監聽 storage 事件實現即時同步。
設定 domain 與 path 使雙方可讀,適合少量資料。
同源分頁間可透過 BroadcastChannel 傳遞訊息:
// 頁面 A
const ch = new BroadcastChannel('my_channel');
ch.postMessage({type: 'param', value: 123});
// 頁面 B
new BroadcastChannel('my_channel').onmessage = e => console.log(e.data);
理解瀏覽器分頁隔離機制,才能選對跨頁傳參方案。