0

次のコードを使用して、ckeditorのキーをキャプチャできます

    CKEDITOR.instances.<ID of Control>.on('key', function (e) {
                e.data.keyCode ;//Gives scan code for keys ".,/;'\" ``
}

しかし、 e.data.keyCodeまたは を使用して「KeyUP」イベントと「KeyDown」イベントを処理すると、 ではevt.data.getKey()なくキーのスキャン コードを取得できますcharcode

キーのコードをスキャンするのではなく、文字を検出する必要があります。取得するメカニズムを提案してくださいchar。関数ハンドラの動作CKEDITOR.instances.<ID of Control>.on('key',...)は、通常のキー押下イベント ハンドラのメカニズムとは異なります。

4

1 に答える 1

1

charコードが何であるかはわかりませんが(私が試したものは何でも0)、役立つコードは次のとおりです。

CKEDITOR.replace( 'editor1', {
    on: {
        contentDom: function( evt ) {
            var editable = evt.editor.editable();
            editable.attachListener( editable, 'keyup', function( evt ) {
                console.log( 'getKey', evt.data.getKey() );
                console.log( 'getKeystroke', evt.data.getKeystroke() );
                console.log( 'native event', evt.data.$ );
            } );
        }
    }
} );

CKEditor 4 を使用しており、そのコードは CKEditor 3 では機能しない可能性があると想定しています。

keyupイベントリスナーを編集可能にアタッチしました。Editable はメインの編集可能な要素です。インライン エディターではエディターが構築されたコンテナーであり、フレーム エディターではこれはbody内部 iframe です。

このリスナーをcontentDomイベントに追加することは非常に重要です。これは、コンテンツ DOM がロードされるたびに起動され、フレーム化されたエディターがすべてのsetData呼び出し後に発生します (非常に頻繁に)。In framed editorsetDataはまったく新しい DOM を作成するため、古い DOM に接続されている古いリスナーを削除することが重要です。これは editable 自体によって処理されますが、リスナーはattachListenerメソッドによってアタッチする必要があります。

質問に戻ります - CKEditor は char コードを取得する方法を提供していないと思います。の下にあるネイティブ イベントを使用する必要がありますevt.data.$

于 2012-12-13T08:48:11.343 に答える