【发布时间】:2018-09-18 16:12:45
【问题描述】:
当我将它发送到我的 node.js 服务器时,为什么我在下面的脚本中得到“evt.clientX”和“evt.clientY”的“未定义”:
<script>
socket.on('message', function(message) {
})
$('#myCanvas').on("pointermove", function(evt) {
socket.emit('message', ("X: " + evt.clientX + " " + "Y: " + evt.clientY + " on a "+ evt.target.nodeName));
})
</script>
然而,当我使用相同的脚本但将“.on”更改为“.click”时,它会正确打印出我的 node.js 服务器内的 X 和 Y 坐标。 以下是套接字消息引用的其余代码:
<script>
function writeMessage(canvas, message) {
var context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width / 2, canvas.height / 2);
context.font = '10pt Calibri';
context.fillStyle = 'black';
context.fillText(message, 10, 25);
}
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
canvas.addEventListener('pointermove', function(evt) {
var x = evt.clientX;
var y = evt.clientY;
var mousePos = getMousePos(canvas, evt);
var message = 'X: ' + mousePos.x + ' Y: ' + mousePos.y;
writeMessage(canvas, message);
}, false);
我认为这与我对 jquery 的使用有关吗?但我很可能完全错了。 任何帮助都感激不尽!但是,求求您。如果可能的话,保持解释简单。我在这方面有点新手!
非常感谢,
【问题讨论】:
标签: javascript jquery html socket.io