0

CKEditor 内で何かが選択されているかどうかを Javascript で判断しようとしています。のようなブールがあればいいのにeditor.hasSelection()。を使い始めましたeditor.getSelection().getSelectedText() === ""が、「テキスト」のない要素 (img など) が選択されている場合、それは空白の文字列になり、偽陰性になります。も調べましeditor.getSelection().getSelectedElement()たが、複数の要素が選択されている場合は null になります。

API に表示されていない、これを行うものはありますか?

4

1 に答える 1

1

これを直接行うための CKEditor 選択 API には何もないように見えます。isCollapsedただし、ネイティブ ブラウザSelectionオブジェクトのプロパティに相当するものがないのは残念 (そして驚くべきこと) であることに同意しますが、次のようにすると思います。

これはテストされていませんが、動作するように見えます:

function hasSelection(editor) {
    var sel = editor.getSelection();
    var ranges = sel.getRanges();
    for (var i = 0, len = ranges.length; i < len; ++i) {
        if (!ranges[i].collapsed) {
            return true;
        }
    }
    return false;
}

// Example:
alert( hasSelection(editor) );
于 2013-01-18T23:54:31.737 に答える