一次在两个页面中单击一个按钮

Posted

技术标签:

【中文标题】一次在两个页面中单击一个按钮【英文标题】:Click a button in two pages at once 【发布时间】:2017-08-18 11:57:42 【问题描述】:

我有两个网页如下,当我单击一个页面中的一个按钮时,警报框应该在两个页面中都显示,我该如何实现这一点。如何同时单击两个不同网页中的两个按钮

app.js

var express = require('express');
var app = express();
var serv = require('http').Server(app);

app.get('/',function(req, res)

        res.sendFile(__dirname + '/client/index.html');
 );
app.use('/client',express.static(__dirname + '/client'));

serv.listen(2000);
console.log("server started");

var SOCKET_LIST =;

var io = require("socket.io")(serv,);
io.sockets.on("connection", function(socket)


    socket.id = Math.random();
    SOCKET_LIST[socket.id] = socket;
    console.log("socket connection");

    socket.on('disconnect',function()
        delete SOCKET_LIST[socket.id];
        console.log("Disconnected");
    );

    socket.on("button",function myFunction() 
    alert("I am an alert box!");
);

    socket.emit('servermsg', $("button").click(function() 
              alert("I am an alert box!");
     ));



);

setInterval(function()
    for(var i in SOCKET_LIST)
        var socket = SOCKET_LIST[i];
    
, 1000/25);

index.html(客户端)

    <!DOCTYPE html>
<html>
<body>

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>
var socket =io();



socket.emit('button',function myFunction() 
    alert("I am an alert box!");
);

socket.on('servermsg', function(data)
console.log(data.msg);
);
</script>



<p>Click the button to display an alert box:</p>

<button onclick="myFunction()">Try it</button>


</script>

</body>
</html>

【问题讨论】:

您要解决的根本问题是什么? 意味着是什么意思?这两个页面有什么关系?你到底想在这里完成什么? @David 我不知道如何连接这两个页面,所以寻求解决方案。 这些页面是否显示在 iframe 中? @vamshi:“连接这两个页面”没有意义,因此您不太可能找到“解决方案”。在这里描述你真正想要完成的事情。很有可能你做错了事,而寻求做错事的方法通常不会顺利。 【参考方案1】:

如果您拥有这两个页面。这意味着它们都位于同一个域 www.adomain.com。

您可以使用本地存储来做到这一点。

在第一页的点击事件中,在本地存储中存储一个值键。

https://developer.mozilla.org/en/docs/Web/API/Window/localStorage

在第二个页面中添加一个事件监听器来“听到”本地存储的变化。

http://html5demos.com/storage-events

当该事件触发时,点击您的按钮

https://www.w3schools.com/jsref/met_html_click.asp

或选项 2

使用https://www.pubnub.com

这是 io socket msg 服务中的一个下降。您可以获得一个免费帐户,从一个页面发送消息,在另一个页面上收听并做出反应。在您的情况下,单击按钮。

【讨论】:

或者如果你想获得真正的流畅添加pubnub实时api,创建一个频道,在第二页收听,获取消息,点击按钮。 www.pubnub.com 这是一个不错的解决方案。【参考方案2】:

出于好奇,我刚刚尝试了 MartinWebb 的答案。我希望它能给你一个开始。

第 1 页:

<button type="button" onclick="hello()">Hello</button>

<script type="text/javascript">
    // window.localStorage.removeItem("text");
    function hello() 
        window.localStorage.setItem("text","Hello there..");
    
</script>

第 2 页:

<p id="show"></p>

<script type="text/javascript">
    window.addEventListener('storage', storage_event_listener, false);

    function storage_event_listener(evt)
    
        document.getElementById("show").innerText = evt.newValue;
        // console.log(evt);
    
</script>

您可以看到我在我的页面 #1 上评论了一行。这是因为“每当调用 setItem()、removeItem() 或 clear() 并实际更改某些内容时,都会在窗口对象上触发存储事件。例如,如果您将项目设置为其现有值或在没有命名键时调用 clear(),则不会触发存储事件,因为存储区域中实际上没有任何更改。"

因此,在进行实验时,我必须清除我的存储项目才能调用该事件。

【讨论】:

以上是关于一次在两个页面中单击一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮,在主视图中的 foreach 语句中一次显示/隐藏部分视图结果

html 网页在中在按钮单击事件下会跳出一个提示框,我想隔1秒刷新一次页面,怎么在第一次

如果页面未刷新,则多个ajax调用按钮单击jquery

一次在多个表中插入/更新数据的最佳实践

单击表单中的按钮会导致页面刷新

单击表单中的按钮会导致页面刷新