Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每当单击按钮时,在所有页面中显示警报_Javascript_Jquery_Html - Fatal编程技术网

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

Javascript 每当单击按钮时,在所有页面中显示警报,javascript,jquery,html,Javascript,Jquery,Html,这是我问题的一个基本例子 我有两个或更多的html页面,看起来像 page1.html <script src='notify.js'></script> <h2>Page 1</h2> <button id='btn' onclick='notify();'>Click</button> <script src='notify.js'></script> <h2>Page 2<

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

我有两个或更多的html页面,看起来像

page1.html

<script src='notify.js'></script>
<h2>Page 1</h2>
<button id='btn' onclick='notify();'>Click</button> 
<script src='notify.js'></script>
<h2>Page 2</h2>
page1.html中,有一个
按钮
。当我
单击
按钮
时,
警报
消息应显示在所有页面中。我怎样才能做到这一点

page1.html中,成功显示
警报消息。但是只要单击
按钮(在page1.html中),我就需要在所有页面中显示
警报
消息

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

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

如果是这样:-那么您必须考虑实时消息传递,例如XMPP、websockets、sockets等

每页1个listner和1个发布者

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

此任务要求您在页面上设置一些消息。 您可以使用数据库存储这些消息,并将读取标志附加到这些消息

因此,当单击page1中的一个按钮时,您将触发一个ajax请求,该请求将向DB表写入一条新消息,如下所示

$.ajax({url: "/addAlertMessageToDB.php", success: function(result){
       alert("message written to DB");
    }});
然后,在希望显示警报的每一个页面中,都应该有一个jsajax请求,使用
setInterval
查找任何新消息

setInterval(function(){ 

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


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

您的服务器端代码应该查询如下内容

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

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

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

可能的解决办法是:

  • 通过Ajax和其他实例向服务器发送消息 每x秒轮询一次服务器,查看是否已发送消息。 缺点是不必要的网络使用率和性能 后端,但易于实现
  • 使用WebSocket。它是为此目的而创建的,但需要时间 理解原则并建立它。但这是目前的情况 web应用程序“推送”的最佳解决方案

  • 有不同的方法:

  • 将消息存储在DB中,并使用长轮询或永久帧
  • 定期调用Ajax并从DB获取它
  • 使用HTML5WebSocket
  • SignalR(在.Net的情况下)在可用的情况下使用WebSocket传输,在必要的情况下使用旧的传输

  • 选择最适合你的选项。web套接字、长轮询、服务器发送事件和永久帧之间的区别—单击以获取详细信息

    你也需要在第2页上有按钮不,只有一个按钮,它在page1.html中,这是我的要求。你在第2页上呈现第1页吗?你在浏览器的不同选项卡上同时打开了多个页面吗?第2页是从第1页打开的,还是完全分开打开的?如果其中一个打开了另一个,您可以通过引用打开者或通过引用打开的页面并从此引用访问他的JS函数来访问相同的函数
    select id,message,readFlag from messagesTable where readFlag = false