javascript - 为什么第二个浏览器不更新我的图像的位置?
问题描述
我为一个班级项目制作了一个跳棋游戏。我希望能够与使用 socket.io 的其他人一起玩,但由于某种原因,图像没有在第二个浏览器上更新。
服务器.js
app.use(express.static(__dirname + "/static"));
app.set("views", __dirname + "/views");
app.set("view engine", "ejs");
io.sockets.on('connection', function (socket) {
console.log("Working now?");
socket.broadcast.emit('update_position', lastPosition);
socket.on('receive_position', function (data) {
lastPosition = data;
socket.broadcast.emit('update_position', data);
});
});
索引.ejs
<script>
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<script src="/socket.io/socket.io.js"></script>
<script>
$(document).ready(function () {
var socket = io.connect();
console.log("Hello");
socket.on('update_position', function (data) {
$(data.id).css('left', data.x);
$(data.id).css('top', data.y);
var x = data.x;
var y = data.y;
console.log(data);
// jquery code to move div here
});
$(".drag").draggable().click(function () {
var coord = $(this).offset();
$("#left").val(coord.left);
$("#top").val(coord.top);
console.log(coord);
socket.emit('receive_position', { x: coord.left, y: coord.top, id:
this.id });
});
});
</script>
每当我单击并按住图像时,我也会收到此错误。但是,我最终能够移动图像并将它们放在板上。
未捕获的类型错误:无法读取未定义的属性“setData”
解决方案
推荐阅读
- python - 使用 Psycopg 2 和 Python3 解析元组的结果列表
- scripting - 如何获取手写笔按下级别值 - Autohotkey 脚本?
- android - 使用活动别名不会反映在应用程序图标上
- jquery - Laravel 中的 DatePicker 不监听事件句柄(onChange)
- fortran - 在 fortran 中打印两个一维数组
- android - 在 API 28 中使用 AutocompleteFragment 或 AutocompleteActivity 时键盘不会自动出现
- ios - 在swift中为textview分配边框宽度和颜色时应用程序崩溃
- c# - 将标签打印调整为标签大小
- sql-server - 在 SSRS 中查询慢,但在 SSMS 中查询快
- python-3.x - 运行会话以获取张量的“静态”形状时如何解决该问题