单击按钮时,在所有页面中显示警报

时间:2015-11-25 07:00:38

标签: javascript jquery html

这是我的问题的一个基本例子。

我有两个或更多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时,button alert消息应显示在所有页面中。我怎样才能做到这一点?

page1.html 中,alert消息已成功显示。但是,只要点击alert(在 page1.html 中),我就需要在所有页面中显示button条消息。

这就像一个通知过程。我想有人可以帮助我..

4 个答案:

答案 0 :(得分:1)

这项任务要求您在网页上设置一些消息。 您可以使用您的数据库来存储这些消息并附加一个读取标志。

所以当点击page1中的一个按钮时,你会触发一个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);

在上面的示例中,您会看到每3秒触发一次ajax请求,在您的数据库中查找新消息。

并且您的服务器端代码应该查询类似的内容..

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

然后你应该根据数据库中的消息返回你需要提醒的结果..

答案 1 :(得分:1)

如果您在浏览器中打开了多个应用程序选项卡,则无法轻松与他们通信。它没有考虑到这个目的而设计,因为浏览器中的标签是在JavaScript发明之后出现的。

可能的解决方案是:

  1. 通过Ajax和其他实例向服务器发送消息 每隔x秒轮询服务器以查看是否已发送消息。 缺点是不必要的网络使用和性能 后端但易于实施。
  2. 使用websockets。它是为此目的而创建的,但需要时间 了解原则并进行设置。但目前这是 &#34;推送&#34;的最佳解决方案用于Web应用程序。

答案 2 :(得分:0)

有不同的方法:

  1. 将消息存储在数据库中并使用长轮询或永久帧。
  2. Ajax定期调用并从DB获取。
  3. 使用HTML5 WebSocket。
  4. SignalR(如果是.Net),它在可用时使用WebSocket传输,并在必要时回退到旧传输。
  5. 选择最适合您的选项。 Web套接字,长轮询,服务器发送事件和永久框架之间的区别 - 单击here以获取详细信息。

答案 3 :(得分:-1)

正如您所说的“通知”,这实际上就像是在同一个域或跨域的页面之间进行消息传递,

如果是这样: - 那么你必须考虑实时消息,如XMPP,websockets,套接字等,这个过程将是

每个页面上有1个列表器和1个发布者

listner将听取通知并作出反应 发布者将广播通知(您的按钮)