window.addEventListener 不工作但 window.onhashchange 工作?

jav*_*oob 3 javascript

window.addEventListener("hashchange",myFunction);
console.log(window.onhashchange); //This one prints NULL

window.onhashchange = myFunction;
console.log(window.onhashchange); // This one working fine.

function myFunction() {
    alert("The anchor part has changed!");
}
Run Code Online (Sandbox Code Playgroud)

为什么我无法使用该addEventListener方法附加事件侦听器?但window.onhashchange工作正常

编辑我确实使用“hashchange”而不是“onhashchange”,这是一个拼写错误。

zzz*_*Bov 6

没有onhashchange事件。有一个事件hashchange:

window.addEventListener('hashchange', myFunction, false);
Run Code Online (Sandbox Code Playgroud)

同样,没有onclick事件,但有事件click:

element.addEventListener('click', someFunction, false);
Run Code Online (Sandbox Code Playgroud)

测试on*绑定事件的属性并不是验证回调是否已绑定的适当方法。为了进行测试,您必须以某种方式触发事件并在回调中进行测试:

window.addEventListener('hashchange', myFunction, false);
Run Code Online (Sandbox Code Playgroud)
element.addEventListener('click', someFunction, false);
Run Code Online (Sandbox Code Playgroud)

成功绑定的回调将不会通过该属性公开。