こんにちは、私がWeb開発を始めたとき、JavaScriptイベント名がすべて小文字で、区切り文字なしであることに気付きました。 "mousedown"、 "mouseup"など。また、jQuery UIライブラリを操作するときに、同じ規則を使用していることに気付きました。つまり、次の例のように "dropdeactivate"
javascript $( ".selector" ).on( "dropdeactivate", function( event, ui ) {} )
これは、2語または3語のみの名前に対してはうまく機能しますが、より多くの単語が含まれる名前に対しては本当にひどいです。
これにもかかわらず、私が作成したカスタム(合成)イベントを起動する必要があるときも、この規則に従いました。最近まで、何らかの形のセパレーターを使用することをお勧めしました。 "drop:deactivate"、または "app:ready"。
on iOS Apple最近、このイベントをHTML 5 Airplay APIに追加しました。私はこの投稿の執筆者に同意します http://www.mobilexweb.com/blog/safari- ios7-html5-problems-apis-review 彼が言うとき:
"webkitcurrentplaybacktargetiswirelesschanged"が記録を獲得したと思います:これまでで最も長いJavaScriptイベント名。
この奇妙な規則の背後にある理由は何ですか?より読みやすい方法でイベントに名前を付けるために、セパレータまたはキャメルケースの規則の形式を使用しないのはなぜですか?
その理由はあると思いますが、多くの賢い人がこれに取り組んでいました...でもしばらくしてから、なぜ私はまだ疑問に思っていますか?
残念ながら、レガシー規約を扱う場合、それほど単純ではありません。そして、DOMイベントにはその背後に多くの歴史があります。
Event のtype属性がDOM2 Events仕様でどのように定義されているかを次に示します。
インターフェイスイベント(DOMレベル2で導入)
type(タイプDOMString、読み取り専用)イベントの名前(大文字と小文字は区別されません)。名前はXML名でなければなりません。
これの背後にある理由は、同じドキュメントのこの段落で説明されていると思います。
HTML 4.0では、イベントリスナーは要素の属性として指定されていました。[...] HTML 4.0との互換性を実現するために、実装者はイベントハンドラーを表す属性の設定を、EventTargetでのEventListenerの作成および登録として表示できます。 。
現在、スタンスはDOM3で変更されていますが(イベント名は case-sensitive です)、元のアプローチは、おそらく最も安全な方法であると考えられているため、依存する必要はありませんユーザーエージェントの正しさについて(例として このディスカッション および この面白い問題 を確認してください)。
W3C自体が多数のCamelCasedイベントをDOM2に登録していることに注意してください(すべてのMutationEvents、DOMActivate
、DOMFocusIn
およびDOMFocusOut
)。
私の知る限り、その主題に関する公式の慣行はありません。 camelCaseはjsでの名前の一般に受け入れられている標準であるため、同じことがイベントの命名にも当てはまるように思えます。ただし、お気づきのとおり、js自体と多くのライブラリはそれ以外の場合に実行します。優れたプログラマーが使用する両方の規則を見てきましたので、それは単に取るに足らないことだと思います。 「これまでで最も長いJavaScriptイベント名」の場合、これはcamelCaseを使用するべきであったイベントの良い例です。私の意見では...または、おそらくそれを短くしただけかもしれません:)
あなたがもっと頻繁に見たものに固執したいなら、小文字を使ってください。目には難しいと思うなら(私はそうです)、キャメルケースを使用してください。あなたが標準に準拠しようとしているなら、私はおそらく他のものを何も使用しないでしょう。