2015-11-25 74 views
4

這是我的問題的基本示例。每當點擊一個按鈕時在所有頁面上顯示警報

我有兩個或更多的HTML頁面,看起來像

page1.html

<script src='notify.js'></script> 
<h2>Page 1</h2> 
<button id='btn' onclick='notify();'>Click</button> 

page2.html

<script src='notify.js'></script> 
<h2>Page 2</h2> 

等..

我的js文件是notify.js

function notify(){ 
alert("button clicked"); 
} 

page1.html,有一個button。當我click 消息應顯示在所有頁面。我怎樣才能做到這一點?

page1.htmlalert消息顯示成功。但是,只要單擊button(位於page1.html),我需要在所有頁面中顯示alert消息。

這就像一個通知過程。我覺得有些人可以幫助我..

+0

您需要在page2中有按鈕 –

+0

不,只有一個按鈕,它在page1.html中,這是我的要求。 – next2u

+0

您是否在第2頁中呈現page1? –

回答

-1

如你所說的「通知」,這是真的很喜歡無論是在同一個域或跨頁之間的消息傳遞過程中,

如果這樣: - 然後,你必須想想實時消息收發,例如XMPP,WebSockets的,插座等的過程將是

1聽者以及1個出版商每一頁上

聽者會聽通知和反應 出版商將廣播通知(您的按鈕)

+0

下來選民,請downvote的原因.. – shreesha

1

此任務需要您在整個頁面上設置一些消息。 你可以使用你的數據庫來存儲這些消息,並附加一個讀標誌。

在第1頁的按鈕被點擊,所以當你火寫入新的消息到數據庫表這樣一個Ajax請求..

$.ajax({url: "/addAlertMessageToDB.php", success: function(result){ 
     alert("message written to DB"); 
    }}); 

然後在你想要顯示的警告其他每一頁你應該有一個JS Ajax請求,使用setInterval在例如查找任何新的消息

setInterval(function(){ 

    $.ajax({url: "/getLatestMessage.php", success: function(result){ 
      alert(result); 
     }}); 


}, 3000); 

你上面看到一個Ajax請求解僱每3秒尋找你的數據庫的新郵件。

和您的服務器端代碼應該像這樣的查詢..

select id,message,readFlag from messagesTable where readFlag = false 

,那麼你應該返回,你需要根據數據庫中的信息,以提醒結果..

1

如果您在瀏覽器中打開應用程序的多個選項卡,你不能與他們容易溝通。它不是爲了這個目的而設計的,因爲瀏覽器中的選項卡是在JavaScript發明之後發佈的。

可能的解決方案是:

  1. 通過Ajax和其他實例將消息發送到服務器 輪詢服務器每x秒,看看是否已發送的消息。 不利的一面是您的後臺不必要的網絡使用和性能,但易於實施。
  2. 使用websockets。它是爲此目的而創建的,但需要時間 來了解原理並進行設置。但目前這是 針對Web應用程序的「推送」的最佳解決方案。
0

有不同的方法:

  1. 將短信存儲在數據庫,並使用長輪詢或永遠幀。
  2. Ajax定期調用並從數據庫中獲取。
  3. 使用HTML5 WebSocket。 SignalR(在.Net的情況下),它在可用時使用WebSocket傳輸,並在必要時回退到較舊的傳輸。

選擇最適合您的選項。網絡套接字,長輪詢,服務器發送事件和永久幀之間的差異 - 單擊here以獲取詳細信息。

相關問題