0

我正在使用它来检索计数

var window.getSelection().getRangeAt(0).startOffset;

这就是我到目前为止恢复计数的方法。

var range = window.getSelection().getRangeAt(0);
range.setStart(dNode, dc);
range.insertNode (mcmsfinalLinkhandle);

我正在使用 localStorage 来保存计数。这可能看起来很乏味,但我感谢任何帮助。这应该是一个入门级的 javascript 问题,所以我觉得我应该能够在没有复杂解决方案的情况下做到这一点。到目前为止,我所缺乏的是按字符而不是按节点或行放置并将插入符号保持在插入点的能力。再次感谢您的帮助。

4

3 回答 3

0

首先,有单独的 Range 和 Selection API。范围只是文档的单个连续块,不一定与选择相关联。浏览器对于更改从选择中获得的范围是否会影响选择有所不同(Firefox 会,而其他浏览器不会),因此要确定更新选择,您需要删除并添加范围:

var sel = window.getSelection();
var range = sel.getRangeAt(0);
range.setStart(dNode, dc);
range.insertNode(mcmsfinalLinkhandle);
sel.removeAllRanges();
sel.addRange(range);

将插入符号移动到可编辑元素的可见文本中的特定字符偏移量并非易事,实现它的代码远非入门级,因为 DOM Range API 中的所有内容都围绕节点而不是文本旋转,并确定正在编辑的文本需要计算各种 CSS 属性(display, white-space, visibility, 等等)。

您可以使用我的Rangy库及其新的TextRange 模块( demo ) 将插入符号和选择用作字符偏移。

于 2012-06-13T08:57:56.643 回答
0

不幸的是,答案是 - 这取决于浏览器。我相信 FF、Chrome 和 Safari 使用相同的界面 - 在这里进行更多研究:https ://developer.mozilla.org/en/DOM/Range

IE 和我认为 Opera,使用不同的界面: http: //msdn.microsoft.com/en-us/library/ie/ms535872 (v=vs.85).aspx

忠告:如果可以的话,尽量远离这个。要么使用现成的 RTE 编辑器,要么只使用常规文本区域。

于 2012-06-12T23:12:52.687 回答
0

您必须使用 来创建一个范围document.createRange,将其移动到正确的位置,然后选择它。

这是一个很好的解决方案https://stackoverflow.com/a/3866442/1450483

于 2012-06-12T23:13:51.823 回答