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