【发布时间】:2017-03-14 19:51:50
【问题描述】:
我不明白为什么更新一个页面上的标签会影响另一个页面上的标签。我不认为 DOM 是这样共享的。打开一个标签或页面成功将标签更新为“player1”,但是当我打开另一个标签/页面时,它会将两个标签都更新为“player2”。
<script>
var socket = io.connect('http://localhost:3000');
socket.on('connect', function() {
socket.emit('join');
socket.on('joinSuccess', function (playerSlot) {
if (playerSlot === 'player1') {
$("#playerID").text("you are player1");
} else if (playerSlot === 'player2') {
$("#playerID").text("you are player2");
}
}); //end joinSuccess
}); //end connect
我只是想通知用户他们是哪个玩家。
解决方案:
else if (playerSlot === 'player2') {
var elm = $("#playerID");
var empty = !elm.text().trim();
if (empty) {
elm.text("you are " + playerSlot);
}
}
【问题讨论】:
-
新用户加入时是否推送“joinSuccess”消息?在这种情况下,此消息将被传递到具有相同 playerSlot 值的两个页面。因此,所有页面都将更新最后加入的玩家名称。
-
我不是 socket.io 方面的专家,但似乎
joinSuccess在新标签打开时会在所有现有标签上触发。
标签: javascript jquery socket.io