我已经创建了一个jquery小部件,它允许我将它附加到画布上并记录用户创建的绘图。
我对火狐有一个问题,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();
}
发布于 2014-03-28 08:23:06
问题
在jQuery中,事件没有layerX
和layerY
属性,因为$.event.props.layerX
和$.event.props.layerY
是删除 (以前只在支持event.layerX
和event.layerY
的浏览器上工作)。
而且它们只在支持它们的浏览器上具有offsetX
和offsetY
属性。火狐也可以使用一张票,但由于性能原因,它被关闭了。
解决方案
layerX
和layerY
中读取event.originalEvent
https://stackoverflow.com/questions/22716333
复制