Chromium のバグ?

81 views
Skip to first unread message

Nori Hamamoto

unread,
Oct 22, 2010, 7:53:40 PM10/22/10
to Chromium-Extensions-Japan
こんにちは
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>

Ohta Shogo

unread,
Oct 23, 2010, 12:45:03 AM10/23/10
to Chromium-Extensions-Japan
こんにちは、太田です。

確かにalertを挟むとイベントのキャンセルができないみたいですね。
alertは元々仕様がなかったので、バグとは言い切れない面もありますが、今ではHTML5で定義されていて、
http://www.w3.org/TR/html5/timers.html#simple-dialogs
alert中はpauseされる可能性があるとあり、pauseでは
http://www.w3.org/TR/html5/webappapis.html#pause
イベントも止めるみたいなので、バグと言えそうな気がします。

Nori Hamamoto

unread,
Oct 23, 2010, 4:53:32 PM10/23/10
to chromium-ext...@googlegroups.com
おお。
さすが太田さん。
そんな可能性がある事が仕様で述べられているとは!!

私の方は、以下のように、alert()を使っている処理をsetTimeoutのコールバックで呼び直すという処理をする事で、
期待どうりの動作を実現する事ができました。

   setTimeout(function(){...alert()を使っている処理...});

これって、時間のかかる処理をコールバックにするって言う、Chrome extension 作る際に
普通に必要とされるテクニックですよね。
このテクニックに気がつけてよかった。

というわけで、件の問題は再現性が確認されたと言う事で、どこかにバグレポートとして出した方が良いんでしょうか?

No...@FireDictionary.com


2010/10/23 Ohta Shogo <os0...@gmail.com>
--
このメールは Google グループのグループ「Chromium-Extensions-Japan」の登録者に送られています。
このグループに投稿するには、chromium-ext...@googlegroups.com にメールを送信してください。
このグループから退会するには、chromium-extension...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/chromium-extensions-japan?hl=ja からこのグループにアクセスしてください。


Reply all
Reply to author
Forward
0 new messages