我正在尝试将当前选定的节点设为蓝色字体颜色。目前,我有以下代码,只有在突出显示然后单击时才会使文本变为蓝色。
如何才能使它在单击文本时整个节点使用execCommand更改其字体颜色?
$('[contenteditable]').bind('click', function() {
currentSentence = window.getSelection().focusNode;
caretPosition = window.getSelection().focusOffset;
document.execCommand('ForeColor', false, '000');
});
答案 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');
});