keydownイベントでpreventDefault()した際のkeypressイベントの扱いがブラウザによって異なる
こんな感じのコードで検証。
window.onload = function () { var body = document.body; body.onkeydown = function (e) { if (window.event) { window.event.returnValue = false; } else { e.preventDefault(); } console.log('keydown'); } body.onkeyup = function () { console.log('keyup'); } body.onkeypress = function () { console.log('keypress'); } }
IE9とChrome24ではkeypressイベントが発生しないが、Firefox18ではkeypressイベントが発生する。ちなみkeyupイベントはIE/Chrome/Firefoxどのブラウザでも発生した。