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,它不支持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 回答