Bug-org 993253 Implement D3E InputEvent interface with isComposing
初回投稿日時: 2014年04月11日16時05分47秒
カテゴリ: Events Mozilla Core Mozilla31 バグ修正
SNS:
Tweet (list)
こちらは、input
イベントや、D3Eで提案されているbeforeinput
のための、InputEvent
インターフェースを、isComposing
属性のみでひとまず実装しようというバグです。
こちらのInputEvent.isComposing
はGeckoでも使いやすいものとなっています。例えば、テキストが変更される度に、その文字列を使って、何らかの処理を行いたい場合で、未確定文字列の変化は無視したい場合、これまでは、
var target = document.getElementById("foo"); var isComposing = false; target.addEventListener("compositionstart", function (event) { isComposing = true; }, false); target.addEventListener("compositionend", function(event) { isComposing = false; }, false); target.addEventListener("input", function (event) { if (!isComposing) { doSomething(target.value); } }, false);
と、フラグをひとつ設け、管理しなくてはいけませんでした。この処理では、ブラウザにバグがあり、compositionstart
やcompositionend
が適切に発生しないケースがあると破綻していました。
しかし、InputEvent.isComposing
を利用することで、
var target = document.getElementById("foo"); target.addEventListener("input", function (event) { if (!event.isComposing) { doSomething(target.value); } }, false);
このような、シンプルなコードで同様のことが実現可能になりました。