Javascript 每当单击按钮时,在所有页面中显示警报
这是我问题的一个基本例子 我有两个或更多的html页面,看起来像 page1.htmlJavascript 每当单击按钮时,在所有页面中显示警报,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<
<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