0

現在選択されているノードをフォントの色で青色にしようとしています。現時点では、強調表示してからクリックしたときにのみテキストを青色にする次のコードがあります。

テキストをクリックすると、execCommand を使用してノード全体のフォントの色が変わるようにするにはどうすればよいでしょうか?

$('[contenteditable]').bind('click', function() {
    currentSentence = window.getSelection().focusNode;
    caretPosition = window.getSelection().focusOffset;

    document.execCommand('ForeColor', false, '000');
});
4

1 に答える 1

1

focusNode選択範囲のフォーカスのコンテナノードのみが表示されます。これは、最後に移動された選択範囲の境界です。それが必要な場合は、選択範囲を保存し、選択範囲を含めるように設定してから、focusNodeを呼び出すことができますdocument.execCommand()。選択を復元する必要がある場合、それはより難しい問題です。

IE <9では、これはいずれも機能しないことに注意してください。IE<9は、サポートしていないwindow.getSelection()Range、代わりに完全に異なるAPIを備えています。

jsFiddle: http: //jsfiddle.net/timdown/J6fAa/

コード例:

$('[contenteditable]').bind('click', function() {
    var sel = window.getSelection();
    var focusNode = sel.focusNode;
    var range = document.createRange();
    range.selectNode(focusNode);
    sel.removeAllRanges();
    sel.addRange(range);
    document.execCommand('ForeColor', false, '000');
});
于 2011-08-30T23:23:10.857 に答える