根據你的描述,應該是兩個同域(相同的協定、主機名稱、連接埠)的網頁進行通訊,這樣的話就可以透過 h5 的 localStorage 來實現。不需要透過服務端。
1、當 a 頁面的按鈕點擊之後,設定一對新的 localStorage 值。
$("#in").click(function(){ localStorage.setItem("setText","hello") })
2、在 b 頁面監聽 window 的 storage 事件。當這個事件被觸發,表示儲存資料變化了,透過 event 事件物件的 key 屬性判斷變化的鍵值,如果是我們設定的 setText,就可以給 $("#out") 設定內容了。
window.addEventListener("storage",function(e){ if(e.key=="setText"){ var text=localStorage.getItem("setText") $("#out").text(text); } });
因為 b 頁面監聽的是 storage 事件,刷新頁面之後,如果 a 頁面點擊時候設定的 setText 值還是原來的值的話,這個事件就不會被觸發。要讓 b 頁面刷新後的這個元素仍然顯示剛剛設定的值,也應該在 b 頁面上新增一個判斷:
if(localStorage.getItem("text")){ h.innerText=localStorage.getItem("text") }
有什麼問題的話,希望可以探討一下。
如果是iframe的話,使用postMessage
如果是兩個單獨網頁的話,要在服務端做一個轉發,A頁面發送數據,服務器存入數據庫,B頁面做一個輪詢,查詢數據是否有變化,有變化則更新數據
postMessage
沒看懂你的需求,大膽猜測題主需要的是websock
根據你的描述,應該是兩個同域(相同的協定、主機名稱、連接埠)的網頁進行通訊,這樣的話就可以透過 h5 的 localStorage 來實現。不需要透過服務端。
1、當 a 頁面的按鈕點擊之後,設定一對新的 localStorage 值。
2、在 b 頁面監聽 window 的 storage 事件。當這個事件被觸發,表示儲存資料變化了,透過 event 事件物件的 key 屬性判斷變化的鍵值,如果是我們設定的 setText,就可以給 $("#out") 設定內容了。
因為 b 頁面監聽的是 storage 事件,刷新頁面之後,如果 a 頁面點擊時候設定的 setText 值還是原來的值的話,這個事件就不會被觸發。要讓 b 頁面刷新後的這個元素仍然顯示剛剛設定的值,也應該在 b 頁面上新增一個判斷:
有什麼問題的話,希望可以探討一下。
如果是iframe的話,使用postMessage
如果是兩個單獨網頁的話,要在服務端做一個轉發,A頁面發送數據,服務器存入數據庫,B頁面做一個輪詢,查詢數據是否有變化,有變化則更新數據
postMessage
沒看懂你的需求,大膽猜測題主需要的是websock