Javascript 使用数字输入更改字体大小时如何保持文本处于选中状态

Javascript 使用数字输入更改字体大小时如何保持文本处于选中状态,javascript,html,richtextbox,contenteditable,Javascript,Html,Richtextbox,Contenteditable,我试图在Div元素上使用contenteditable创建一个小型richtexteditor,但遇到了一个问题: 我希望能够更改fontSize 但当我使用数字输入字段时,我丢失了当前选择,因此document.execCommand('fontSize,false,myNumberValue)不起作用。使用元素执行命令确实有效,但我更愿意使用数字字段,伙计们,我的选项是什么?我也遇到了这个问题。这是一种痛苦,但除了像Erik提到的那样保存/恢复选择之外,我没有别的办法 一种可能的解决方法是将

我试图在Div元素上使用
contenteditable
创建一个小型richtexteditor,但遇到了一个问题:

我希望能够更改
fontSize
但当我使用数字输入字段时,我丢失了当前选择,因此
document.execCommand('fontSize,false,myNumberValue)
不起作用。使用
元素执行命令确实有效,但我更愿意使用数字字段,伙计们,我的选项是什么?

我也遇到了这个问题。这是一种痛苦,但除了像Erik提到的那样保存/恢复选择之外,我没有别的办法

一种可能的解决方法是将输入放在一个模式中,这样它会使contenteditable区域变灰,但即使这样,它仍然只是一种解决方法。只是帮助用户体验

这里有一个小片段,我用它来做一些非常类似的事情

saveSelection : function(){
    var sel = window.getSelection(), ranges = [];
    if (sel.rangeCount) {
        for (var i = 0, len = sel.rangeCount; i < len; ++i) {
            ranges.push(sel.getRangeAt(i));
        }
    }
    return ranges;
},
restoreSelection : function(savedSel){
    var sel = window.getSelection();
    sel.removeAllRanges();
    for (var i = 0, len = savedSel.length; i < len; ++i) {
        sel.addRange(savedSel[i]);
    }
}
saveSelection:function(){
var sel=window.getSelection(),ranges=[];
如果(选择范围计数){
对于(变量i=0,len=sel.rangeCount;i

对于我来说,这似乎适用于大多数现代浏览器(Chrome、Safari、IE9+),但如果您需要它来支持较旧的浏览器,您可能需要查看Rangy-

,您可以保存范围(选定的文本),然后在需要时随时在文本上重置范围。啊,这是个好主意,我还没想到,效果很好。谢谢:)