0

我正在尝试理解画布示例的代码:

为什么事件处理程序代码中的第三个参数为“false”?它代表什么?

这里是完整的代码

function init () {
// ...
// Attach the mousemove event handler.
canvas.addEventListener('mousemove', ev_mousemove, false);
}

// The mousemove event handler.
var started = false;
function ev_mousemove (ev) {
  var x, y;

// Get the mouse position relative to the canvas element.
if (ev.layerX || ev.layerX == 0) { // Firefox
    x = ev.layerX;
    y = ev.layerY;
  }
4

2 回答 2

2

似乎缺少部分代码。正如您所说,变量已设置但未使用,这就是为什么我觉得缺少一些代码部分(在 ev_mousemove 函数之后也缺少右大括号)。

ev.layerX == 0 就在 || 之后 这意味着“或”。就是这样使用的,所以它不会在 Firefox 中产生错误。基本上它说如果 ev.layerX 为真(现有)或如果为 0 做...

ND

于 2013-03-22T00:37:27.867 回答
1

AddEventListener 中的第三个 true/false 参数用于“捕获”事件

如果为真,那么您的“mousemove”事件将始终首先转到您的ev_mousemove,然后转到正常的 DOM 事件树。

如果为 false,那么您的“mousemove”事件只会通过正常的 DOM 事件树。

除非您有理由优先考虑自己的事件处理程序,否则对于任何类型的事件,您通常都可以将其保留为 false。

于 2013-03-22T00:44:38.873 回答