我想點擊一個頁面的按鈕,然後在另一個頁面的p元素內顯示文本,兩個頁面都引入和js,請問怎麼才能成功? ###
巴扎黑2017-05-19 10:30:21
根據你的描述,應該是兩個同域(相同的協定、主機名稱、連接埠)的網頁進行通訊,這樣的話就可以透過 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")
}
有什麼問題的話,希望可以探討一下。
黄舟2017-05-19 10:30:21
如果是iframe的話,使用postMessage
如果是兩個單獨網頁的話,要在服務端做一個轉發,A頁面發送數據,服務器存入數據庫,B頁面做一個輪詢,查詢數據是否有變化,有變化則更新數據