0

从我检查过的所有地方读到的内容来看,这就是我访问事件处理程序属性的方式:

canvas.addEventListener('onmousemove', traceMouse(e));  //Handler gets passed in as 'e'

function traceMouse(e) {   //Then I could just use it like a normal parameter, right?
    mouseX = e.clientX;
    mouseY = e.clientY;
    }

不幸的是,萤火虫坚持认为 e 没有定义。我完全不知道我哪里出错了,我可能又犯了一些愚蠢的错误,我已经准备好咬自己的头了。

帮助?

4

1 回答 1

0

实际上,在 addEventListener 中,传递的第二个参数是事件触发时要调用的函数的名称。现在,您正在调用该函数并将其传递给 e(未定义)。所以,代码应该是

canvas.addEventListener('mousemove',traceMouse);

并且事件对象将通过浏览器传递,因此您将能够获取clientX&Y。

在任何情况下,您都需要将参数传递给函数,您可以使用闭包。这是一个例子。http://jsfiddle.net/parth1403/fVakB/

于 2012-05-21T07:44:25.463 回答