私が最初に行っていましたthg435's answerのようにoninput
イベントを提案するには、まずコメントの詳細を釣ると思った。スペルチェッカーの修正と他のタイプの入力(キーボード、ペースト、ドラッグアンドドロップなど)を区別する必要がない場合は、oninput
であれば問題ないでしょう。
do入力の種類を区別したい場合は、スペルチェッカーの修正のために特に発生するイベントはありません。しかし、ほとんどの他のタイプの入力にはイベントがあるので、以上であれば、少なくともは、他のタイプのイベントを最初にチェックすると、入力イベントが訂正される可能性を絞り込むことができます。以下を考慮してください:
(function() {
var el = document.getElementById("MyInput"),
ignore = false;
el.oninput = function (e) {
// ignore the events that we don't need to capture
if (ignore) {
ignore = false;
return true;
}
// Your code here
}
// IIRC, you need the following line for the `ondrop` event to fire
el.ondragover = function() { return false; }
// Ignore paste, drop and keypress operations
el.onpaste = el.ondrop = el.onkeypress = setIgnore;
function setIgnore (e) {
ignore = true;
}
})();
これは完璧な解決策ではありません。たとえば、キーボードで開始されていない元に戻す/やり直しのアクション(場合によっては他のアクション)に対してもイベントは発生します。
キャプチャに興味のあるスペルチェックのみですか、キーボードやその他のイベントに加えてスペルチェックの修正をキャプチャしようとしていますか?スペルチェックの修正と他のタイプのテキスト入力を区別する必要がありますか? –
私の場合、私はそれらを区別する必要はありません(ただし、修正の解決策はより良いでしょう) – Thariama