2012-05-24 5 views
6

クリックイベントハンドラがselect要素に登録されていると、ブラウザ間で動作が非常に矛盾しています。私はjsfiddle demoを設定しました。これは私が見るものです:クリックイベントを理解しようとしています<select>要素

  • OS X(10.7 Lion)上のFirefox 12:要素がクリックされると、イベントが発生します。ドロップダウンは簡単に開き、開いたままにはなりません。キーボードアクションはクリックアクションを生成しません。
  • Firefox 12 on Linux(Ubuntu Lucid):同じ
  • OS XのChome 19:マウスまたはキーボードの操作がクリックイベントをトリガーしません。
  • LinuxのChrome 19:最初にマウスをクリックするとオプションが展開され、その後にまだ存在する選択肢またはオプションのトリガークリックイベントがクリックされます。
  • OS XのSafari 5.1.6:LinuxのChromeと同様に、最初のクリックでオプションが展開され、オプションをクリックするとクリックイベントが発生します(Chromeとは異なり、オプションを表示するとSafariは選択要素を非表示にします)。
  • Androidブラウザ(アイスクリームサンドイッチ):最初のクリックトリガイベント。オプションはイベントの後に表示され、クリックすることができます。オプションをクリックしても、別のイベントは発生しません。
  • Android用Chromeベータ版(Ice Cream Sandwich):Androidブラウザと同じです。

誰かが私に教えたり、標準に私を指すことができれば、私は幸せになると思いますが、私は私が誰のことを、以下のいないことを直接観察してきたので、それは有用ではないのですね。私が疑っているのは、これがやりたいことは珍しいことです。変更イベントを聞くのがもっと一般的かもしれません。本当?オプションのクリックを聞くのはどうですか?私はそれを働かせることができませんでしたが、それは愚かなバグでした。

(Googleクロージャのgoog.ui.Selectで構築された選択要素を置き換えています。そのコンポーネントがデスクトップのselectレンダリング、特にChromeのレンダリングをうまく模倣していますが、拡張オプションの全画面表示はできませんアプリケーションは以前はそのコンポーネントのgoog.ui.Component.EventType.ACTIONイベントに耳を傾けていましたが、どこにも明確なアナログはありませんので、一貫した代替品を探しています)

+1

だけの事一貫した...確実に指定された標準規格をサポートするブラウザされています。それ以外では、それはなじみ芽です。 – epascarello

+1

Onchangeも一貫していません。IEのキーボードナビゲーションでは、新しいオプションが訪れるたびにonchangeが起動します。他のブラウザは、1つが選択されている場合にのみ起動します。オプションが選択された後にのみ起動し、コントロールがフォーカスを失ったときに発生します。はい、それは混乱です。 – RobG

+0

mousedownイベントは、10.8マウンテンライオンのfirefox、chrome、safariで同じように動作します(リストを表示している場合のみ発生します)。 quirksmodeでこれについての素晴らしいテストページがあります http://www.quirksmode.org/dom/events/tests/click.html – Barak

答えて

0

ここでは、HTMLリビングスタンダード2013年7月12日(2013年7月14日にアクセス)このリンクでは、SELECT要素を右に移動します。他の分野では、HTMLElementはonclickイベントを処理できるとされており、javascriptを使用してリスナーを追加する例を示しています。もちろん、質問は本当にのonchangeとのonblurを使用することになります

HTML Standard

関連する問題