私は作成しているwebappでcodemirrorを使用していますが、私はそのページにいくつかのエディタを持っています。元に戻すとやり直しボタンもあり、機能します。しかし、私はifステートメントを使ってどれがフォーカスされているのかを判断し、アンドゥまたはリドゥ機能を対応するテキストボックスに適用しない限り、1つのエディタを取り消すように設定できます。私はjQueryとJavaScriptの両方でいくつかのバリエーションを試しましたが、無駄です。これは、私が働くことを試みているコードブロックの1つです。コードミラー設定を保持する実際の変数は "codeeditor1"、 "#editor1"はテキストボックスのIDです。codemerrorエディタのフォーカスを検出
if ($("#editor1").is(':focus')) {
undo.addEventListener('click', function() {
codeeditor1.undo();
}, false);
redo.addEventListener('click', function() {
codeeditor1.redo();
}, false);
}
また、 "cm.hasFocus()" = booleanのドキュメントに従ってこれを試しました。
if (codeeditor1.hasFocus() == true) {
undo.addEventListener('click', function() {
codeeditor1.undo();
}, false);
redo.addEventListener('click', function() {
codeeditor1.redo();
}, false);
}
私は論理的なコードの配置のためにこれを試しましたが、まだそれは運がありません。おそらく、それはコード・エラーの方法のバグでしょうか?
undo.addEventListener('click', function() {
if (codeeditor1.hasFocus() == true) {
codeeditor1.undo();
}
}, false);
redo.addEventListener('click', function() {
if (codeeditor1.hasFocus() == true) {
codeeditor1.redo();
}
}, false);
回答ありがとうございます。私はこれを試しましたが、まだ登録していないようです。ドキュメントをたどり、 "cm.hasFocus()"メソッドがあると言いますが、それを正しく取得できないようです。 – AlphaDaemon