2017-03-25 7 views
-5

다음과 같이 두 개의 웹 페이지가 있습니다. 하나의 페이지에서 버튼을 클릭하면 두 페이지에 경고 상자가 표시됩니다. 어떻게 수행합니까? 당신이이 페이지를 소유하고 있다면 내가 한 번한 번에 두 페이지의 버튼을 클릭하십시오.

에 두 개의 서로 다른 웹 페이지에 두 개의 버튼을 클릭 할 수있는 방법은

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> 
+1

해결하려는 근본 문제는 무엇입니까? –

+0

그게 * * *라는 의미입니까? 이 두 페이지는 어떻게 관련되어 있습니까? 여기서 실제로 이루고자 하는게 뭐지? – David

+0

@ David 나는 두 페이지를 연결하여 솔루션을 찾는 방법을 모른다. – vamshi

답변

0

호기심에서 나는 방금 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()가 호출 될 때마다 window 객체가 실제로 변경됩니다. 예를 들어 항목을 기존 값으로 설정하거나 명명 된 키가없는 경우 clear()를 호출하면 storage 이벤트 실제로 저장 공간에서 아무 것도 변하지 않기 때문에 발사하지 않을 것 "이라고 말했다.

그래서 실험하면서 이벤트를 호출하기 위해 저장 항목을 정리해야했습니다.

1

을 app.js. 즉, 둘 다 동일한 도메인 www.adomain.com에 앉음을 의미합니다.

로컬 저장소를 사용하여이 작업을 수행 할 수 있습니다.

첫 번째 페이지의 click 이벤트에서 localstorage에 값 키를 저장하십시오.

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 소켓 MSG 서비스의 하락입니다 클릭합니다. 무료 계정을 만들어 한 페이지에서 메시지를 보내고 다른 페이지에서 메시지를 듣고 반응 할 수 있습니다. 귀하의 경우 버튼을 클릭하십시오.

+0

또는 진짜 pubnub 실시간 API를 추가하려는 경우, 채널을 만들고, 두 번째 페이지에서 듣고, 메시지를 받으려면 버튼을 클릭하십시오. www.pubnub.com – MartinWebb

+0

이것은 좋은 해결책입니다. –