こんにちは
Chromium で不思議な動作を見つけました。
以下の簡単なサンプルで再現可能なのですが、このページを読み込むと、まず "page loaded" というメッセージが表示されます。
次に表示されたインプットボックスで、Enter key を押すと、まず、"test"というメッセージが表示されるのですが、
その後、onKeydown イベントの中で false を返しているにも関わらず、ページがリロードされて、"page loaded" というメッセージが表示されてしまいます。
面白い事に、onKeydownイベントの中のalert("test"); を削除して、
onKeydown="return false;"
とすると、インプットボックスの中でEnter key を押してもページはリロードされません。
どうも、alert() を入れると、フォームにEnter key を押した事が伝搬してしまい、ページがリロードされてしまう様です。
Chromium はイベントを内部的に非同期に処理していて、alert()を入れる事で、遅延が発生して false が返る前に、フォームにイベントが伝わってしまっていたりするのかな、などと推測してます。
Safari、Firefox で試してみた所、この問題は発生せず、alert() の有る無しに関わらず、Enter を押してもページはリロードされません。
これは、Chromium のバグですかねぇ?
<html>
<head>
<title>Chromium Test</title>
</head>
<body onLoad="alert('page loaded')">
<form>
<input type="text" onKeydown="alert('test'); return false;" />
</form>
</body>
</html>