我正在尝试理解画布示例的代码:
为什么eventhandler代码中的第三个参数为“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;
}
答案 0 :(得分:2)
看起来缺少部分代码。如你所说,变量start已设置但未使用,这就是为什么我觉得有一些代码部分缺失(在ev_mousemove函数之后也缺少一个闭括号)。
ev.layerX == 0就在||之后这意味着“或”。这是使用这种方式,因此它不会在Firefox中创建错误。基本上它说如果ev.layerX是真的(现有)或者如果是0那么......
ND
答案 1 :(得分:1)
AddEventListener中的第三个true / false参数用于“捕获”事件
如果为true,那么您的“mousemove”事件将始终首先转到您的 ev_mousemove和然后转到正常的DOM事件树
如果为false,那么您的“mousemove”事件将通过正常的DOM事件树。
除非您有理由确定自己的事件处理程序的优先级,否则通常可以将此保留为任何类型的事件。