单击时使用execCommand

时间:2011-08-30 00:26:51

标签: contenteditable execcommand

我正在尝试将当前选定的节点设为蓝色字体颜色。目前,我有以下代码,只有在突出显示然后单击时才会使文本变为蓝色。

如何才能使它在单击文本时整个节点使用execCommand更改其字体颜色?

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

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

1 个答案:

答案 0 :(得分: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');
});