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);
このような、シンプルなコードで同様のことが実現可能になりました。