(Firefox) Javascript鼠标移动不一样的jQuery鼠标移动
(Firefox) Javascript mousemove not the same as jQuery mousemove
我已经创建了一个jquery小部件,允许我将它附加到画布上并记录用户创建的绘图。
我有一个问题与Firefox,其中事件触发的jQuery不工作;但是原生javascript事件可以正常工作。
问题的JSFiddle: http://jsfiddle.net/sk6N5/8/
我可以在canvas1中画画,但不能在canvas2中画画。我不知道为什么这幅画有点不准确;但在我自己的小部件中,它按预期工作(所以这无关紧要)。
这是jQuery的一个bug还是我必须以另一种方式使用它?(我真的想使用jQuery,因为事件命名空间)。
我的javascript:
document.getElementById("canvas1").addEventListener("mousemove", function(event){
self = this;
draw(event, self);
});
$("#canvas2").on("mousemove", function(event){
self = this;
draw(event, self);
});
function draw(ev, canvas){
var x, y;
if (ev.layerX || ev.layerX == 0) {
x = ev.layerX;
y = ev.layerY;
} else if (ev.offsetX || ev.offsetX == 0) {
x = ev.offsetX;
y = ev.offsetY;
}
var context = canvas.getContext('2d');
console.log(ev, x, y);
if (x === undefined || y === undefined) return;
context.fillStyle = "rgb(0,255,255)";
context.lineTo(x, y);
context.stroke();
}
问题
在jQuery中,事件没有layerX
和layerY
属性,因为$.event.props.layerX
和$.event.props.layerY
被删除了(之前只在支持event.layerX
和event.layerY
的浏览器上工作)。
他们只有offsetX
和offsetY
属性在浏览器上支持他们。曾经有一个请求,希望Firefox也能使用它们,但由于性能原因被关闭为非修复。
- 从
event.originalEvent
读取layerX
和layerY
使用jQuery手动计算偏移量:
if(typeof event.offsetX === "undefined" || typeof event.offsetY === "undefined") { var targetOffset = $(event.target).offset(); event.offsetX = event.pageX - targetOffset.left; event.offsetY = event.pageY - targetOffset.top; }
用JavaScript手动计算偏移量。要查找目标元素的位置,您可以使用以下代码:
相关文章:
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- D3.js:如何在svg上移动鼠标时创建弹出事件
- 为什么当我快速移动鼠标时,我的jQuery会崩溃
- 单击链接时加载移动鼠标光标 3-4 秒
- HTML 表在 TD 之间移动鼠标时触发鼠标输出
- 计算用户使用JS/Jquery滚动和移动鼠标的次数
- 如何使用JavaScript移动鼠标指针
- HTML5画布:如果在画布上移动鼠标时按下了鼠标按钮,则进行检测
- 通过jQuery或JS移动鼠标
- 引导程序 3 日期选取器 v4:移动鼠标时自动选择自定义周
- 无法检测在移动鼠标时按下的鼠标按钮
- 移动鼠标以触发CasperJS中的悬停事件
- 移动鼠标时更改视频的时间
- 当我按住鼠标按钮移动鼠标时,Fabric.js–元素是未定义的
- 当don't移动鼠标并在移动时出现
- 没有jquery的移动鼠标悬停事件
- 火狐在重型JS上崩溃,除非我移动鼠标
- jQuery点击事件只在移动鼠标后工作
- Javascript / jQuery在弹出窗口后检测悬停元素&不移动鼠标
- 如何绘制签名(点击,保持和移动鼠标)使用javascript