在元素上调用addEventListener会产生"Not enough arguments"错误

tes*_*est -1 html javascript

我的代码适用于Chrome但不适用于Firefox ......在Firefox中...每当这段代码启动时......

canvas.addEventListener('keydown');
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Not enough arguments
[Break On This Error]   

canvas.addEventListener('keydown');
Run Code Online (Sandbox Code Playgroud)

我有var canvas接近顶部以及这个:

canvas = document.getElementById("canvas");
    canvas.width = 512;
    canvas.height = 352;
context = canvas.getContext("2d");
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它在Chrome上工作正常但不适用于Firefox ...

Ste*_*mas 10

addEventListener函数需要第二个参数来指定在事件上调用的函数.真正的问题是Chrome不会产生错误的原因.


jfr*_*d00 7

您需要一个在事件触发时执行的函数.它可以像这样内联指定:

canvas.addEventListener('keydown', function(e) {
    // your code here to handle the event
});
Run Code Online (Sandbox Code Playgroud)

或者它可以像这样指定:

function keyHandler(e) {
    // your code here to handle the event
}

canvas.addEventListener('keydown', keyHandler);
Run Code Online (Sandbox Code Playgroud)

如果没有事件处理函数,事件处理程序就没有任何事情可做,因为事件触发时没有代码会执行.